【AWS】【CloudWatch】各種メトリクスの解説(障害対応に役立つ)

長期間 Amazon EC2 インスタンスを運用していると、様々な現象や障害が発生します。

例えば、サーバの応答がなくなったとか、突然サーバが再起動したとか、リソースが枯渇した等。

そんな時に、障害対応に役立つ CloudWatch のメトリクスについて解説します。

 

以下は、CloudWatch エージェントによりメモリ使用率などのカスタムメトリクスを取得する設定手順について解説した記事です。

 

【AWS】CloudWatch エージェントをインストールして EC2 インスタンス(RedHat Linux)のメモリ使用率を取得する設定手順

 

 

 

 

CloudWatch の構成要素

CloudWatch は下図のように 4 つの要素から成り立っています。

  • メトリクス ← AWS リソース、OS、アプリケーションのデータを取得、保管、表示するサービス(デフォルトとカスタムあり)
  • ログ ← AWS リソース、OS、アプリケーションのログを取得、保管、表示するサービス(デフォルトとカスタムあり)
  • アラーム
  • イベント

 

 

 

 

Amazon CloudWatch メトリクスとは

Amazon CloudWatch メトリクスとは、AWS のリソース、OS、アプリケーション等のパフォーマンスデータを取得するサービスのことを言います。

CloudWatch メトリクスは基本的なパフォーマンスデータを閲覧するだけなら無料ですが、更に詳しいメトリクスを確認しようとすると「有料」になります。

ちなみに、最近ではメトリクスデータは 15 か月間(1年3ヶ月)保持されるようになりました。

以前は2週間のみ(14日間のみ)だったため、データを保存するためにツールを利用したりしていました。

 

 

 

主な CloudWatch メトリクス【EC2 インスタンス】

  • CPUCreditBalance
  • CPUCreditUsage
  • CPUSurplusCreditBalance
  • CPUSurplusCreditsCharged
  • CPUUtilization
  • DiskReadBytes
  • DiskReadOps
  • DiskWriteBytes
  • DiskWriteOps
  • EBSIOBalance%
  • NetworkIn
  • NetworkOut
  • NetworkPacketsIn
  • NetworkPacketsOut
  • StatusCheckFailed
  • StatusCheckFailed_Instance

 

 

CPU クレジットとは

実際に運用監視で使う機会は滅多にないと思います。さらに障害対応でも使う機会はありません。

1 個の CPU クレジットは、1 台の vCPU を使用率 100% で 1 分間実行することに相当します。その他の vCPU、使用率、時間数の組み合わせを CPU クレジットと同じにすることができます。たとえば、1 個の CPU クレジットは 1 台の vCPU を使用率 50% で 2 分間実行するか、または 2 台の vCPU を使用率 25% で 2 分間実行するのと等しくなります。

 

バースト可能パフォーマンスインスタンスの CPU クレジットおよびベースラインパフォーマンス

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/burstable-credits-baseline-concepts.html

 

つまり、現在 1個の CPU クレジットを持っていたとすると、状況に応じて自由に使ってもいいですよということです。

例えば、インスタンスの起動時はパフォーマンスが必要になりますが、その際に 100% 使い切ってもいいですし、余ったら負荷がかかる時間帯に使ってもOKということです。

 

■CPU クレジットはいつ貯まるの?

インスタンスの CPU リソースが、ベースラインパフォーマンスに必要な CPU リソースよりも少ない場合 (アイドル時など)、未使用の CPU クレジットが CPU クレジット残高に蓄積されます。

 

 

CPUCreditBalance

インスタンスが蓄積する CPU クレジット数。

このバランスは CPU がバーストする際に枯渇し、CPU クレジットは獲得するよりも速い速度で使用されます。

 

CPU クレジットの監視

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/burstable-performance-instances-monitoring-cpu-credits.html

 

CPUCreditUsage

測定期間に消費された CPU クレジットの数。

 

CPU クレジットの監視

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/burstable-performance-instances-monitoring-cpu-credits.html

 

CPUSurplusCreditBalance

CPUCreditBalance がゼロになった時に CPU パフォーマンスを保持するために消費される、余剰 CPU クレジットの数。

 

CPU クレジットの監視

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/burstable-performance-instances-monitoring-cpu-credits.html

 

CPUSurplusCreditsCharged

24 時間で獲得できる CPU クレジットの最大数を越えた、追加料金が発生する分の余剰 CPU クレジットの数。

獲得 CPU クレジットにより支払われないために追加料金が発生した、消費された余剰クレジットの数。

消費された余剰クレジットは、以下のいずれかの状況に当てはまると料金が発生します。

  • インタンスが停止または終了した。

インスタンスは unlimited から standard に切り替わります。

 

CPU クレジットの監視

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/burstable-performance-instances-monitoring-cpu-credits.html

 

CPUUtilization

CPU 使用率です。

割り当てられた EC2 コンピュートユニットのうち、現在インスタンス上で使用されているものの比率。

このメトリクスは、選択されたインスタンス上でアプリケーションを実行するのに必要な処理能力を表します。

パーセンタイル統計を使用するには、詳細モニタリングを有効にする必要があります。

インスタンスタイプによっては、インスタンスがフルプロセッサコアに割り当てられていない場合に、オペレーティングシステムのツールが CloudWatch よりも低い比率を示す場合があります。

単位: パーセント

 

インスタンスの利用可能な CloudWatch メトリクスのリスト表示

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html

 

DiskReadBytes

インスタンスで利用できるすべてのインスタンスストアボリュームから読み取られたバイト数です。

このメトリクスを使用すると、このインスタンスのハードディスクからアプリケーションが読み取るデータの量がわかります。これを利用すると、アプリケーションの速度がわかります。

報告された数は、期間中に受信されたバイト数です。

基本 (5 分) モニタリングを使用している場合、この数を 300 で除算してバイト/秒を求めることができます。

詳細 (1 分) モニタリングを使用している場合は、この数を 60 で除算します。

インスタンスストアボリュームがない場合は、値が 0 であるか、メトリクスがレポートされません。

単位: バイト

 

インスタンスの利用可能な CloudWatch メトリクスのリスト表示

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html

 

 

 

DiskReadOps

指定された期間にインスタンスで利用できるすべてのインスタンスストアボリュームへの、完了した書き込み操作です。

その期間の 1 秒あたりの I/O 操作回数 (IOPS) の平均を算出するには、その期間の操作回数の合計をその期間の秒数で割ります。

インスタンスストアボリュームがない場合は、値が 0 であるか、メトリクスがレポートされません。

単位: Count

 

インスタンスの利用可能な CloudWatch メトリクスのリスト表示

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html

 

DiskWriteBytes

インスタンスで利用できるすべてのインスタンスストアボリュームに書き込まれたバイト数。

このメトリクスを使用すると、このインスタンスのハードディスクにアプリケーションが書き込むデータの量がわかります。これを利用すると、アプリケーションの速度がわかります。

報告された数は、期間中に受信されたバイト数です。基本 (5 分) モニタリングを使用している場合、この数を 300 で除算してバイト/秒を求めることができます。詳細 (1 分) モニタリングを使用している場合は、この数を 60 で除算します。

インスタンスストアボリュームがない場合は、値が 0 であるか、メトリクスがレポートされません。

単位: バイト

 

インスタンスの利用可能な CloudWatch メトリクスのリスト表示

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html

 

DiskWriteOps

指定された期間にインスタンスで利用できるすべてのインスタンスストアボリュームへの、完了した書き込み操作。

その期間の 1 秒あたりの I/O 操作回数 (IOPS) の平均を算出するには、その期間の操作回数の合計をその期間の秒数で割ります。

インスタンスストアボリュームがない場合は、値が 0 であるか、メトリクスがレポートされません。

単位: Count

 

インスタンスの利用可能な CloudWatch メトリクスのリスト表示

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html

 

EBSIOBalance%

小さいインスタンスサイズにのみ使用できます。バーストバケットの I/O 残りクレジットの割合に関する情報を提供します。このメトリクスは基本モニタリング専用です。

Sum 統計は、このメトリクスに該当しません。

単位: パーセント

 

インスタンスの利用可能な CloudWatch メトリクスのリスト表示

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html

 

NetworkIn

すべてのネットワークインターフェースでの、このインスタンスによって受信されたバイトの数。このメトリクスは、1 つのインスタンスへの受信ネットワークトラフィックの量を表しています。

報告された数は、期間中に受信されたバイト数です。基本 (5 分) モニタリングを使用している場合、この数を 300 で除算してバイト/秒を求めることができます。詳細 (1 分) モニタリングを使用している場合は、この数を 60 で除算します。

単位: バイト

 

インスタンスの利用可能な CloudWatch メトリクスのリスト表示

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html

 

NetworkOut

すべてのネットワークインターフェースでの、このインスタンスから送信されたバイトの数。このメトリクスは、1 つのインスタンスからの送信ネットワークトラフィックの量を表しています。

報告された数は、期間中に送信されたバイト数です。基本 (5 分) モニタリングを使用している場合、この数を 300 で除算してバイト/秒を求めることができます。詳細 (1 分) モニタリングを使用している場合は、この数を 60 で除算します。

単位: バイト

 

インスタンスの利用可能な CloudWatch メトリクスのリスト表示

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html

 

NetworkPacketsIn

すべてのネットワークインターフェースでの、このインスタンスによって受信されたパケットの数。このメトリクスは、受信トラフィックのボリュームを単一インスタンスでのパケット数として識別します。このメトリクスは基本モニタリング専用です。

単位: Count

統計: Minimum、Maximum、Average

 

インスタンスの利用可能な CloudWatch メトリクスのリスト表示

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html

 

NetworkPacketsOut

すべてのネットワークインターフェースでの、このインスタンスから送信されたパケットの数。このメトリクスは、送信トラフィックのボリュームを単一インスタンスでのパケット数として識別します。このメトリクスは基本モニタリング専用です。

単位: Count

統計: Minimum、Maximum、Average

 

インスタンスの利用可能な CloudWatch メトリクスのリスト表示

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html

 

StatusCheckFailed

インスタンスが過去 1 分間にインスタンスのステータスチェックとシステムステータスチェックの両方に合格したかどうかを報告します。

このメトリクスは 0 (合格) または 1 (失敗) となります。

デフォルトでは、このメトリクスは無料で 1 分の頻度で利用できます。

単位: Count

 

インスタンスの利用可能な CloudWatch メトリクスのリスト表示

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html

 

 

StatusCheckFailed_Instance

最近 1 分間にインスタンスが インスタンスステータスチェックに成功したかどうかを報告します。

このメトリクスは 0 (合格) または 1 (失敗) となります。

デフォルトでは、このメトリクスは無料で 1 分の頻度で利用できます。

単位: Count

 

インスタンスの利用可能な CloudWatch メトリクスのリスト表示

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html

 

 

 

CloudWatch に移動しメトリクスを表示する手順

AWS 管理コンソールにログインし、「管理とガバナンス」「CloudWatch」に移動します。

【AWS】【CloudWatch】各種メトリクスの解説(障害対応に役立つ)

 

 

 

 

「CloudWatch」ダッシュボードに移動し、左側ペインより「メトリクス」をクリックします。

【AWS】【CloudWatch】各種メトリクスの解説(障害対応に役立つ)

 

 

 

 

下図のように「CloudWatch グラフが空です。ここに表示するメトリクスを選択してください。」のメッセージが表示されます。

そのため、まずはどの EC2 インスタンス(EC2 だけでなく RDS やその他オブジェクトでもいいですが)の何を調査したいのか決めて、このグラフに追加する必要があります。

【AWS】【CloudWatch】各種メトリクスの解説(障害対応に役立つ)

 

 

 

今回は EC インスタンスのメトリクスを追加するため、下図のように「EC2」をクリックします。

【AWS】【CloudWatch】各種メトリクスの解説(障害対応に役立つ)

 

 

 

 

 

「インスタンス別メトリクス」をクリックします。

【AWS】【CloudWatch】各種メトリクスの解説(障害対応に役立つ)

 

 

 

 

下図のように「カスタム」をクリックし「現地タイムゾーン」を選択します。

(デフォルトでは UTC になっており、調査が間違える可能性があるため、変更します)

【AWS】【CloudWatch】各種メトリクスの解説(障害対応に役立つ)

 

 

 

 

 

 

下図のように EC2 インスタンスを選択し、確認したいメトリクスを選択します。

下図は例として「CPUUtilization」を選択しています。

選択したら「グラフ化したメトリクス」タブをクリックします。

【AWS】【CloudWatch】各種メトリクスの解説(障害対応に役立つ)

 

 

 

以上が基本的な CloudWatch の利用方法です。

 

 

 

CloudWatch ログ

CloudWatch でもカスタムメトリクスログでアプリケーションのエラーログを取得することができます。

例えば、Zabbix のようにログ監視ができるようになります。

カスタムメトリクスログは「CloudWatch エージェント(以前は CloudWatch Logs Agent で取得していた)」を利用して取得することができます。

これからは「CloudWatch エージェント」を中心に利用されるようになると思います。

 

 

 

 

参考情報

以下のサイトを参考にさせていただきました。

ありがとうございます。

 

Introduction to New CloudWatch Agent

https://www.slideshare.net/ssuserca76a5/introduction-to-new-cloudwatch-agent

 

 

 

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

AlphaOmega Captcha Medica  –  What Do You See?
     
 

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください