タダです.
ELB を使ったシステムで日々の運用状況の確認や障害が発生した時のトラブルシュートに CloudWatch の監視情報やログを使うことがよくあると思います. GUI から確認をしてもいいのですが,例えば時系列ごとのレポーティングに使う際に AWS CLI(以下,CLI)を使って情報収集した方がよいと感じたので,ALB の監視情報収集の方法と実際に使った監視情報の収集利用例を紹介します.
GUI で監視情報を見る場合
マネジメントコンソールの画面で見る場合,メトリクスを選択してグラフを描画することができますが,各メトリクス値は5分間隔などで点線となっているため,「特定日における1時間毎の ELB で発生した5XX系のエラー数を集計したい」といった要望を実現しようとするときは少々手間がかかります.
CLI で監視統計情報を見る場合
それでは, CLI の実行方法を見ていきましょう.
まずは,list-metrics
コマンドで ALB のリソース情報を取得します. ALB が大量にある場合は,grep
で範囲を絞った方が得策です.コマンド実行結果の Value の値が次の統計情報を取得するget-metric-statistics
コマンドで必要になります(例: "Value": "app/xxxx/xxxxxxxxx"
等).
# ALB のリソース情報の取得 aws cloudwatch list-metrics --namespace AWS/ApplicationELB # コマンド実行結果 ~中略~ { "Namespace": "AWS/ApplicationELB", "MetricName": "RequestCount", "Dimensions": [ { "Name": "TargetGroup", "Value": "targetgroup/xxxx/xxxxxxxxx" }, { "Name": "LoadBalancer", "Value": "app/xxxx/xxxxxxxxx" }, { "Name": "AvailabilityZone", "Value": "ap-northeast-1a" } ] } ~中略~
次に,get-metric-statistics
コマンドで統計情報を取得します.--dimesions
パラメータにて監視情報を取得するリソース情報を指定する必要があります(Name=LoadBalancer,Value=app/xxxx/xxxxxxxxx
の部分).ここでlist-metrics
の実行結果の情報が活きてきます.
下記のコマンド例は,8/3の0時から8/4の23:59にかけての1時間毎のUnHealthyHostCount
の平均数を出すためのコマンドです.この様に監視の統計情報を取得することが可能です.
aws cloudwatch get-metric-statistics --namespace AWS/ApplicationELB \ --metric-name UnHealthyHostCount --statistics Average --period 3600 \ --dimensions Name=LoadBalancer,Value=app/xxxx/xxxxxxxxx \ --start-time 2019-08-03T15:00:00Z --end-time 2019-08-04T14:59:59Z
ケース別コマンド実行パターン
上記のコマンドを踏まえ,今回使った ALB の監視情報の収集利用例を紹介します.なお,コマンドのパラメーターは下記のクラスメソッドさんのブログを参考にさせてもらいました.
Case1. 特定日におけるリクエストの総数を1時間毎に収集する
例えば,リリースしたてのサービスでキャンペーンやスパイクアクセスが来る時間帯を把握したい時ありますよね? Case1 はその様な用途に使ったコマンド例です.
aws cloudwatch get-metric-statistics --namespace AWS/ApplicationELB \ --metric-name RequestCount --statistics Sum --period 3600 \ --dimensions Name=LoadBalancer,Value=app/xxxx/xxxxxxxx \ --start-time 2019-08-03T15:00:00Z --end-time 2019-08-04T14:59:59Z \ --query "sort_by(Datapoints,&Timestamp)[?Sum>\`0\`][Sum,Timestamp]" --output text # コマンド実行結果例 100.0 2019-08-03T15:00:00Z 200.0 2019-08-03T16:00:00Z 300.0 2019-08-03T17:00:00Z ~中略~
Case2. 特定日における 5XX系のエラー総数を1時間毎に収集する
そして,エラーの発生時間帯を特定した時のコマンドとして Case2 の様なコマンド例があります.Case1 の--metric-name
をHTTPCode_ELB_5XX_Count
に変更するだけですね.
aws cloudwatch get-metric-statistics --namespace AWS/ApplicationELB \ --metric-name HTTPCode_ELB_5XX_Count --statistics Sum --period 3600 \ --dimensions Name=LoadBalancer,Value=app/xxxx/xxxxxxxx \ --start-time 2019-08-03T15:00:00Z --end-time 2019-08-04T14:59:59Z \ --query "sort_by(Datapoints,&Timestamp)[?Sum>\`0\`][Sum,Timestamp]" --output text # コマンド実行結果例 5.0 2019-08-03T15:00:00Z 1000.0 2019-08-04T02:00:00Z 1.0 2019-08-04T09:00:00Z ~中略~
まとめ
CLI を使った ALB の監視統計情報の取得方法と,ケース別の取得例を紹介しました.運用中のシステムになると CloudWatch での状況確認は頻繁になります.GUI でもよいですが,トラブルシュートのレポーティングや日々の運用状況を報告する際には視覚情報と一緒に数値を提供すると信用や説得力が増します.そんな業務に当たった時にはぜひ CLI を使ってみてもらえると良いかと思います.