AWSでアプリを実行しています。 EC2インスタンスに障害が発生した場合、または応答しなくなった場合に通知するように Amazon CloudWatch を設定するにはどうすればよいですか?
CloudWatchの画面を確認したところ、CPUやディスクの使用率などの特定の統計を監視できるようですが、「インスタンスがhttpリクエストを受け取り、X秒以上かかった」などのイベントを監視する方法がわかりませんでした。応答します。」
AmazonのRoute53 Health Checkは、この仕事に適したツールです。
Route 53は、アプリケーションの状態とパフォーマンス、およびWebサーバーやその他のリソースを監視できます。
サーバーがダウンしているか、エラーで応答した場合に電子メール通知をトリガーするHTTPリソースチェックをRoute53で設定できます。
http://eladnava.com/monitoring-http-health-email-alerts-aws/
CloudWatchでイベントをモニターするには、Alarmを作成します。これは、指定されたしきい値に対してメトリックスをモニターします。
アラームを作成するときに、通知を送信するための「アクション」を追加できます。 AWSは、SNS(Simple Notification Service)を介して通知を処理します。通知トピックを購読すると、アラームのメールが届きます。
CPUやディスク使用率などのEC2メトリックの場合、これはAWSドキュメントのガイドです: http://docs.aws.Amazon.com/AmazonCloudWatch/latest/DeveloperGuide/US_AlarmAtThresholdEC2.html
すでに回答したように、ELBを使用してHTTPを監視します。
ELBで利用可能なメトリックのリストは次のとおりです。 http://docs.aws.Amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/US_MonitoringLoadBalancerWithCW.html#available_metrics
特定の質問に答えるには、http応答のX秒を監視するために、ELBの「待機時間」を監視するアラームを設定します。
CloudWatchモニタリングは、あなたが発見したものとまったく同じです。メトリックスを確認することで、インスタンスの1つがフリーズしていると推測できますが、CloudWatchはそうしません。たとえば、アプリがダウンしたり遅すぎたりしたときにメールを送信します。
アプリまたはインスタンスがダウンしたときに何らかの通知を探している場合は、監視サービスを使用することをお勧めします。 Pingdom は良いオプションです。 AWSで新しいインスタンスをセットアップし、 Nagios などのモニタリングツールをインストールすることもできます。これは私の好みのオプションです。
長い道のりで常に価値のあるグッドプラクティス:負荷分散( Amazon ELB )の使用、アプリを実行する複数のインスタンス、自動スケーリング(インスタンスがダウンすると、Amazonは自動的に新しいインスタンスを開始しますSLAを維持します)、およびカスタム監視。
私のチームは長い間カスタム監視スクリプトを使用してきましたが、障害が発生するとすぐにそれを常に認識していました。基本的に、アプリを実行している2つのノードがある場合、ノード1はHTTPリクエストをノード2に送信し、ノード2は1に送信しました。リクエストが予想以上にかかった場合、または予期しないHTTPステータスまたは応答本文を返した場合、スクリプトはにメールを送信しました。システム管理者。今日では、オペレーティングシステム(スレッドなど)やアプリケーションサーバー(接続プールの状態など)などを監視できるNagiosなどのより堅牢なアプローチに依存しています。それを設定するために投資する価値はあります。
CloudWatchは最近、インスタンスがダウンしているかどうかに関する質問の1つに答える「ステータスチェック」メトリクスを追加しました。 Webサーバーへの要求ではなく、システムチェックを行います。前の回答が示唆しているように、HTTPヘルスチェックにはELBを使用します。
ツール/テスト用にいつでも別のインスタンスを作成できます。そのインスタンスはスケジュールに基づいてhttpリクエストを試行し、応答時間を測定します。次に、CloudWatchでその応答時間を公開し、特定のしきい値を超えたときにアラームを設定できます。
インスタンス自体からそれを行うこともできます。
Kurst Ursanが前述したように、「ステータスチェック」メトリックを使用するのが最善の方法です。場合によっては、そのメトリクスを参照できないことがあるため(つまり、AWS OpsWorksを使用している場合)、そのカスタムメトリクスを自分でレポートする必要があります。ただし、(OK状態で)常に一致するメトリックに基づいてアラームを設定し、状態が「INSUFFICIENT DATA」状態に変化したときにアラームトリガーを設定できます。これは、技術的には、CloudWatchが状態がOKかどうかを判断できないことを意味します。またはALARMはインスタンスに到達できないため、別名インスタンスはオフラインです。
インスタンスのヘルス情報を取得する方法はたくさんあります。ここにカップルがあります。
EC2 APIでインスタンスステータスチェックとEC2イベント(計画されたダウンタイム)を監視します。それらをポーリングしてCloudwatchに送信し、アラームを作成できます。
サーバー上に、毎秒DynamoDBに書き込む単純なデーモンを作成します(Cloudwatchよりも粒度が優れています)。 2番目のプロセスでハートビートを照会し、欠落している場合はアラートを出します。
TCP応答を返すダミーポートを開いた状態ですべてのインスタンスをロードバランサーに配置します。セットアップTCP ELBのヘルスチェック、および異常なインスタンスのアラート。
Blue Matador(生産上の問題を自動的に通知する)のような製品を使用しない限り、このようなものを設定することは実際には非常に凶悪です-それを維持することは言うまでもありません。とはいえ、今後、Cloudwatchの使用を開始するためのヘルプ(用語、アラート、ログなど)が必要な場合は、次のブログから始めてください: CloudWatchでAmazon EC2をモニターする方法
CloudWatchイベントルールを使用して、EC2インスタンスがダウンしたときはいつでも監視できます。次のように、CloudWatchコンソールからイベントルールを作成できます。
CLoudWatchコンソールで[イベント]-> [ルール]を選択します
イベントパターンの場合、サービス名でEC2を選択します。イベントタイプとして、EC2インスタンスの状態を選択します-特定の状態の通知を変更し、停止を選択します
ターゲット内通知を送信するために、以前に作成したSNSトピックを選択してください。
これは正確にはCloudWatchアラームではありませんが、これはモニタリング/通知の目的に役立ちます。