web-dev-qa-db-ja.com

Cloudwatchアラームで実行中のプロセスのリストを取得することは可能ですか?

いくつかのJavaベースのアプリケーションを含むEC2インスタンス(Ubuntu)があり、最近、Cloudwatchアラームの1つをトリガーする高いCPU使用率のスパイクに見舞われています。サーバーにアクセスしてCPU使用率を確認するまでに、状況は落ち着きました。

アラームメールの1つで確認したいのは、実行中のプロセスと、アラーム発生時のCPU使用率(%)のリストです。これも可能ですか?

9
jtalarico

あなたの質問に答えるためにいいえ。しきい値に達するたびにサーバー上のプロセスを一覧表示するようにCloudWatchを設定することはできません。これを実現するには、他のソフトウェアを使用する必要があります。 CloudWatchはメトリクスのみを記録します。たとえば、実行中のプロセスの数を知りたい場合は、それをモニターするようにCloudWatchを設定できます。

0
bwight

プロセスアカウンティングを使用して実行し、10分ごとにシステムデータスナップショットを収集するか(デフォルト)、より良い解像度が必要な場合は5分短縮することをお勧めします。

apt-get install atop acct

次に、次のような構文を使用して、ある時点で何が起こっていたかを簡単に確認できます。

atop -r atop.log.file -b 00:00 -e 00:05

上記の例は、00:00から00:05の間にシステム使用状況のスナップショットで何が起こっていたかを示しています。

1
Hrvoje Špoljar

私は同様のことをした経験はありませんが、理論的には、既存のビルディングブロックでそれを行うことは可能です。

CloudWatch -> SNS -> HTTP/HTTPS -> homebrew webapp -> collect data and email it
  • CloudWatchアラームを設定して、トピックがオフになったときにSNSメッセージをトピックに発行するようにします。
  • EC2インスタンスでWebアプリを実行します。特定のアドレスがヒットすると、実行中のプロセスのリストが収集され、メールで送信されます。
  • Webappのエンドポイントを使用してSNSトピックにサブスクリプションを追加します。プロトコルとしてHTTPまたはHTTPSのいずれかを選択できます。

これをatopを使用する提案と組み合わせて、最近のN分の出力を送信するようにWebアプリを構成できます。

1
ento