[AWS SOA取得向け]Amazon CloudWatch

[AWS SOA取得向け]Amazon CloudWatch

Amazon CloudWatchは、AWSから提供される大半のリソースの使用状況を監視できるサービスです。CloudWatchが招集・可視化・障害検知を行う対象データは以下に分類されます。

・メトリクス
・ログ
・イベント

メトリクスの監視

メトリクスとは、AWSリソースの使用状況を収集し、数値化された時系列データセットのことです。たとえばEC2インスタンスの場合、CPU使用率・ディスクI/Oなどが標準メトリクスとして自動収集されています。収集されたメトリクスはAWSのマネジメントコンソール、CLI、APIにより参照できます。
アプリケーションごとのメモリ使用率など、OSの内部で取得する必要があるデータは、CloudWatchエージェントを導入し、カスタムメトリクスとしてCloudWatchに収集することが可能です。CloudWatchエージェントによって、ディスク使用率やTCP接続の数などもデフォルトで収集されるため、より詳細な監視を行うためにはOSへの導入が必要になります。

この図の例では、単に「CPU使用率が80%を超えたら通知」とありますが、CloudWatchアラームの設定を行うにあたっては、以下の項目を理解して設定する必要があります。

統計:メトリクスを指定の期間で集計した値。平均、最大、合計。90パーセンタイルなどから選択可能。

期間:唐家を取得する時間の長さ。統計を「平均値」、期間を「1分」とした場合、1分間おn平均値をデータポイント(監視のための時系列データ)として1分ごとに記録する。

アラームを実行するデータポイント:アラームが実行されるために。閾値超過が必要なデータポイントの数。「5/5」とした場合、5回連続で閾値を超過するとアラームが実行される

CloudWatchアラームを設定すると、「指定されたEC2インスタンスのCPU使用率の1分間の平均値が5分以内に5回80%を超えたん場合にアラームを実行」という動作になります。これらの設定により監視の感覚とアラームの感度が決定されるため、運用開始後にチューニング(設定値の調整)を行うことも多いです。メトリクスのアラームは以下の状態を推移します。

OK:定義した閾値を下回っている。
ALARM:定義した閾値を超えている。
INSUFFICIENT_DATA:アラームが開始直後であるか、メトリクスが利用できないか、データが不足していてアラームの状態を判定できない。

「OK」「ALARM」だけでなく「INSUFFICIENT_DATA」となる場合があるため、データ不足時に意図しない通知やアクションが実行されないよう気を付ける必要があります。欠落データを「閾値超え」「閾値内」のどちらのデータとして扱うかを設定することで、意図したとおりのアラーム状態にすることができます。

上記アラームのアラーム例では、対象となるEC”インスタンスの詳細モニタリングを有効にしていない場合、アラームの表示はINSUFFICIENT_DATAとなります。EC2インスタンスじゃデフォルトの基本モニタリングでは5分間隔でデータが取得されますが、アラームでは1分毎のメトリクスを要求しており、データ不足となるためです。
詳細モニタリングはEC2インスタンスごとの個別オプション設定となり、1分間隔でCloudWatchにデータ送信できるようになります。メトリクスの追加料金がかかりますが、実用的なモニタリングを行うには有効化が必要なシーンが多いです。

ログ監視

CloudWatchでログの監視を行うためにはCloudWatch Logsを利用する必要があります。

CloudWatch Logs は、ログの一元管理・検索・フィルター処理を行うサービスです。 Amazon API Gateway や Amazon lambda などの AWS のマネージドサービスは、標準でクラウドワークスにログを収集する機能を備えています。 EC 2インスタンスにも CloudWatch エージェント導入することでCloud Watch logsにログを収集することができるようになります。

CloudWatch Logsに収集したログは、メトリックスフィルターという機能でログのパターンマッチングを行い、メトリックスの値を増加させることができます。単純に[ERROR]の文字列がログに出現した時にメトリクスを増加させるといった監視以外にもスペース区切りのログからフィールドを抽出し、条件演算子やワイルドカードを利用したパターンマッチングを行うことも可能です。

  • アプリケーションログに[エラー]または[ワーニング]が発生したとき(or条件)
  • アクセスログに記載された応答時間が5000ms以上の時(数値比較)
  • 留守録に記載されたステータスコードが「404」かつリクエスト先が 「*.html」の時(AND条件、ワイルドカード) 

イベント監視

AWS リソースの変更を検出し、対応を自動化するためにはイベントの監視が必要です。CloudWatch Logsは AWS リソースの変更を伴うシステムイベントをトリガーとして対応した AWS サービスにアクションの実行を自動化できるサービスです。

 AWS 利用者のオペレーションによって新たな AWS リソースが作成されたり状態の変化が発生した場合に何らかのアクションを自動で実行したいと言った時に役立ちます。

トリガーとなるイベントソースには時間ベースのイベントと、 AWS リソースのシステムイベントの2種類があります。それぞれ以下のようなルールを作成してアクションの実行を自動化できます。

  • 時間ベースのイベントの令: 毎朝8時に前日の業務レポートを作成しメール送信を行う AWS batch job を実行する
  •  システムイベントの令:  EC 2インスタンスが起動されるためにセキュリティグループのルールを確認し、「0.0.0.0/0」インバウンド通信が許可された場合は EC 2インスタンスを終了する lambda 関数を実行する。