CloudWatchにさわってみたときのメモ(カスタムメトリクスのパブリッシュ、アラームの設定)
とりあえず今日はCloudWatchの復習で。
CloudWatchはAWSのモニタリングや監視のためのサービスで、EC2など各種AWSのサービスを動かすと自動的にCPU利用率などのメトリクスを取得してくれる他、AWS CLIなどを利用してカスタムメトリクスを送ることも可能です。
CloudWatchの用語: 名前空間とディメンジョン、メトリクス
それぞれのメトリクスには名前空間とディメンジョン、名前があります。AWSサービスの場合の名前空間はサービス名であることが多いです。
名前空間はそれぞれディメンジョンで区切ることができ、たとえばEC2名前空間に設定されているディメンジョンは
があります。(ディメンジョンが設定されていないデータについては
のように「範囲の定められていないメトリクス」に収められます。)
ディメンジョンをクリックすると出てくるCPU使用率などがメトリクスの名前にあたります。
カスタムメトリックを送信してみる
データのタイムスタンプと個別のデータポイント、あるいは、ある時刻のデータポイントの数、データの数値合計、平均といった集計値を送信することができます。 データのタイムスタンプは現在時刻から2週間前の間に指定する必要があります。
個別のデータポイントのデータを送る
TIMESTAMP=2018-08-08T08:08:00Z aws cloudwatch put-metric-data --metric-name RequestLatency --namespace GetStarted \ --timestamp $TIMESTAMP --value 8 --unit Milliseconds
ある時刻のデータポイントの数、データの数値合計、平均といった集計値を送信する
TIMESTAMP=2018-08-08T08:08:00Z aws cloudwatch put-metric-data --metric-name RequestLatency --namespace GetStarted \ --timestamp $TIMESTAMP --statistic-values Sum=40,Minimum=8,Maximum=8,SampleCount=8 --unit Milliseconds
送ったメトリクスは
のようにグラフで確認可能です。
CloudWatchのアラームを作成する
CloudWatchのグラフを表示している画面から、CloudWatchのアラームを作成することができます。
アラームは、アラームの状態ごとにAmazon SNSと連携させることでSlackやメールで通知、PagerDutyなどインシデント管理サービスのアイテム作成の自動化に利用できます。
アラームの状態変化について
アラームは基本的にアラーム作成画面の
の部分の条件式を満たしていたら OK
、そうでない場合は ALARM
, アラームの間隔内にデータポイントがない場合はINSUFFICIENT DATA
の状態になります。
の記事にあるコマンドを
$ aws cloudwatch set-alarm-state --alarm-name "RequestLatency is High" --state-value ALARM --state-reason "alarm-test"
のように打ち込むと一瞬指定した状態にアラームの状態を変化させることができます。その後、すぐに直近のデータに応じた状態に戻ってしまいますが、アラームの通知連携のテストにはむしろ便利でしょう。
アラームの状態に応じて動作するプログラムなどをテストするときは、欠落データの処理方法を変更するとデータを送っていない間の状態が指定しやすくて便利です。
参考
- https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/PublishMetrics.html
- https://qiita.com/kooohei/items/e9f8692b9ebe90b6a9df
- https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html
今日は短いですが、現場からは以上です。