get-metric-widget-image を使用することで CloudWacth のメトリクスで見るようなグラフ図を取得することができます。
今回は以下のメトリクスをグラフ図として取得する方法について記載。
環境設定
先ずは共通で使用する値を変数として指定します。
@echo off
rem -------------------------------------------------------
rem ■■ 環境設定 ■■
rem ■グラフ図のサイズ (ピクセルで指定)
SET WIDTH=1600
SET HEIGHT=800
rem ■リージョンを指定 (東京リージョンの場合)
SET REGION=ap-northeast-1
rem ■環境に合わせて指定 (プロファイルを指定しない場合は空にする)
SET PROFILE=--profile プロファイル名
rem ■処理月にあわせて変更 (2018/09/01~2018/09/30を取得する場合)
SET START=2018-09-01
SET END=2018-09-30
rem ■インスタンスIDを指定 (複数のインスタンスを取得する場合は補足を参照)
SET INSTANCE=i-xxxxxxxxxxxxxxx
CPU使用率 (CPUUtilization)
rem --------------------------------------------------
rem ■■ CPU使用率 (CPUUtilization) ■■
rem ■個別設定
SET METRICS=CPUUtilization
SET NAMESPACE=AWS/EC2
SET CRITICAL=90
SET WARNING=80
SET PERIOD=300
SET MAX=100
SET MIN=0
rem ■グラフ図取得処理
aws cloudwatch get-metric-widget-image --metric-widget {\"width\":%WIDTH%,\"height\":%HEIGHT%,\"start\":\"%START%T00:00:00.000+0900\",\"end\":\"%END%T23:59:59.000+0900\",\"timezone\":\"+0900\",\"view\":\"timeSeries\",\"metrics\":[[\"%NAMESPACE%\",\"%METRICS%\",\"InstanceId\",\"%INSTANCE%\"]],\"region\":\"%REGION%\",\"period\":%PERIOD%,\"stacked\":false,\"annotations\":{\"horizontal\":[{\"label\":\"critical\",\"value\":%CRITICAL%,\"fill\":\"above\"},{\"label\":\"warning\",\"value\":%WARNING%,\"fill\":\"above\"}]},\"yAxis\":{\"left\":{\"min\":%MIN%,\"max\":%MAX%}}} %PROFILE% --output text --query MetricWidgetImage > %METRICS%.dat
rem ■デコード処理
certutil -f -decode %METRICS%.dat %METRICS%.png
rem ■一時ファイルの削除
del %METRICS%.dat
rem --------------------------------------------------
実行結果
メモリ使用率 (MemoryUtilization)
rem --------------------------------------------------
rem ■■ メモリ使用率 (MemoryUtilization) ■■
rem ■個別設定
SET METRICS=MemoryUtilization
SET NAMESPACE=System/Linux
SET CRITICAL=90
SET WARNING=80
SET PERIOD=300
SET MAX=100
SET MIN=0
rem ■グラフ図取得処理
aws cloudwatch get-metric-widget-image --metric-widget {\"width\":%WIDTH%,\"height\":%HEIGHT%,\"start\":\"%START%T00:00:00.000+0900\",\"end\":\"%END%T23:59:59.000+0900\",\"timezone\":\"+0900\",\"view\":\"timeSeries\",\"metrics\":[[\"%NAMESPACE%\",\"%METRICS%\",\"InstanceId\",\"%INSTANCE%\"]],\"region\":\"%REGION%\",\"period\":%PERIOD%,\"stacked\":false,\"annotations\":{\"horizontal\":[{\"label\":\"critical\",\"value\":%CRITICAL%,\"fill\":\"above\"},{\"label\":\"warning\",\"value\":%WARNING%,\"fill\":\"above\"}]},\"yAxis\":{\"left\":{\"min\":%MIN%,\"max\":%MAX%}}} %PROFILE% --output text --query MetricWidgetImage > %METRICS%.dat
rem ■デコード処理
certutil -f -decode %METRICS%.dat %METRICS%.png
rem ■一時ファイルの削除
del %METRICS%.dat
rem --------------------------------------------------
実行結果
ディスク使用率 (DiskSpaceUtilization)
rem --------------------------------------------------
rem ■■ ディスク使用率 (DiskSpaceUtilization) ■■
rem ■個別設定
SET METRICS=DiskSpaceUtilization
SET NAMESPACE=System/Linux
SET CRITICAL=90
SET WARNING=80
SET PERIOD=300
SET MAX=100
SET MIN=0
rem ■グラフ図取得処理
aws cloudwatch get-metric-widget-image --metric-widget {\"width\":%WIDTH%,\"height\":%HEIGHT%,\"start\":\"%START%T00:00:00.000+0900\",\"end\":\"%END%T23:59:59.000+0900\",\"timezone\":\"+0900\",\"view\":\"timeSeries\",\"metrics\":[[\"%NAMESPACE%\",\"%METRICS%\",\"InstanceId\",\"%INSTANCE%\",\"MountPath\",\"/\",\"Filesystem\",\"/dev/xvda1\"]],\"region\":\"%REGION%\",\"period\":%PERIOD%,\"stacked\":false,\"annotations\":{\"horizontal\":[{\"label\":\"critical\",\"value\":%CRITICAL%,\"fill\":\"above\"},{\"label\":\"warning\",\"value\":%WARNING%,\"fill\":\"above\"}]},\"yAxis\":{\"left\":{\"min\":%MIN%,\"max\":%MAX%}}} %PROFILE% --output text --query MetricWidgetImage > %METRICS%.dat
rem ■デコード処理
certutil -f -decode %METRICS%.dat %METRICS%.png
rem ■一時ファイルの削除
del %METRICS%.dat
rem --------------------------------------------------
実行結果
Inode使用率 (DiskInode)
rem --------------------------------------------------
rem ■■ Inode使用率 (DiskInode) ■■
rem ■個別設定
SET METRICS=DiskInodeUtilization
SET NAMESPACE=System/Linux
SET PERIOD=300
SET CRITICAL=90
SET WARNING=80
SET MAX=100
SET MIN=0
rem ■グラフ図取得処理
aws cloudwatch get-metric-widget-image --metric-widget {\"width\":%WIDTH%,\"height\":%HEIGHT%,\"start\":\"%START%T00:00:00.000+0900\",\"end\":\"%END%T23:59:59.000+0900\",\"timezone\":\"+0900\",\"view\":\"timeSeries\",\"metrics\":[[\"%NAMESPACE%\",\"%METRICS%\",\"InstanceId\",\"%INSTANCE%\"]],\"region\":\"%REGION%\",\"period\":%PERIOD%,\"stacked\":false,\"annotations\":{\"horizontal\":[{\"label\":\"critical\",\"value\":%CRITICAL%,\"fill\":\"above\"},{\"label\":\"warning\",\"value\":%WARNING%,\"fill\":\"above\"}]},\"yAxis\":{\"left\":{\"min\":%MIN%,\"max\":%MAX%}}} %PROFILE% --output text --query MetricWidgetImage > %METRICS%.dat
rem ■デコード処理
certutil -f -decode %METRICS%.dat %METRICS%.png
rem ■一時ファイルの削除
del %METRICS%.dat
rem --------------------------------------------------
実行結果
NtpCheck (NtpCheck)
rem --------------------------------------------------
rem ■■ NtpCheck (NtpCheck) ■■
rem ■個別設定
SET METRICS=NtpCheck
SET NAMESPACE=System/Linux
SET CRITICAL=1
SET PERIOD=300
rem ■グラフ図取得処理
aws cloudwatch get-metric-widget-image --metric-widget {\"width\":%WIDTH%,\"height\":%HEIGHT%,\"start\":\"%START%T00:00:00.000+0900\",\"end\":\"%END%T23:59:59.000+0900\",\"timezone\":\"+0900\",\"view\":\"timeSeries\",\"metrics\":[[\"%NAMESPACE%\",\"%METRICS%\",\"InstanceId\",\"%INSTANCE%\"]],\"region\":\"%REGION%\",\"period\":%PERIOD%,\"stacked\":false,\"annotations\":{\"horizontal\":[{\"label\":\"critical\",\"value\":%CRITICAL%,\"fill\":\"below\"}]}} %PROFILE% --output text --query MetricWidgetImage > %METRICS%.dat
rem ■デコード処理
certutil -f -decode %METRICS%.dat %METRICS%.png
rem ■一時ファイルの削除
del %METRICS%.dat
rem --------------------------------------------------
実行結果
リクエストカウント (RequestCount)
rem --------------------------------------------------
rem ■■ リクエストカウント (RequestCount) ■■
rem ■個別設定
SET METRICS=RequestCount
SET NAMESPACE=AWS/ApplicationELB
SET PERIOD=3600
rem ■グラフ図取得処理
aws cloudwatch get-metric-widget-image --metric-widget {\"width\":%WIDTH%,\"height\":%HEIGHT%,\"start\":\"%START%T00:00:00.000+0900\",\"end\":\"%END%T23:59:59.000+0900\",\"timezone\":\"+0900\",\"view\":\"timeSeries\",\"metrics\":[[\"%NAMESPACE%\",\"%METRICS%\",\"TargetGroup\",\"%TARGETGROUP%\",\"LoadBalancer\",\"%LOADBLANCER%\",\"AvailabilityZone\",\"ap-northeast-1a\",{\"stat\":\"Sum\"}],[\"...\",\"ap-northeast-1c\",{\"stat\":\"Sum\"}],[\".\",\".\",\"LoadBalancer\",\"%LOADBLANCER%\",{\"stat\":\"Sum\"}]],\"region\":\"%REGION%\",\"period\":%PERIOD%,\"stacked\":false} %PROFILE% --output text --query MetricWidgetImage > %METRICS%.dat
rem ■デコード処理
certutil -f -decode %METRICS%.dat %METRICS%.png
rem ■一時ファイルの削除
del %METRICS%.dat
rem --------------------------------------------------
レスポンスタイム (TargetResponseTime)
rem --------------------------------------------------
rem ■■ レスポンスタイム (TargetResponseTime) ■■
rem ■個別設定
SET METRICS=TargetResponseTime
SET NAMESPACE=AWS/ApplicationELB
SET CRITICAL=5
SET PERIOD=300
SET TARGETGROUP=ARNの「targetgroup/~」からを指定
SET LOADBLANCER=ARNの「app/~」からを指定
rem ■グラフ図取得処理
aws cloudwatch get-metric-widget-image --metric-widget {\"width\":%WIDTH%,\"height\":%HEIGHT%,\"start\":\"%START%T00:00:00.000+0900\",\"end\":\"%END%T23:59:59.000+0900\",\"timezone\":\"+0900\",\"view\":\"timeSeries\",\"metrics\":[[\"%NAMESPACE%\",\"%METRICS%\",\"TargetGroup\",\"%TARGETGROUP%\",\"LoadBalancer\",\"%LOADBLANCER%\",\"AvailabilityZone\",\"ap-northeast-1a\"],[\"...\",\"ap-northeast-1c\"]],\"region\":\"%REGION%\",\"period\":300,\"stacked\":false,\"annotations\":{\"horizontal\":[{\"label\":\"critical\",\"value\":%CRITICAL%,\"fill\":\"above\"}]}} %PROFILE% --output text --query MetricWidgetImage > %METRICS%.dat
rem ■デコード処理
certutil -f -decode %METRICS%.dat %METRICS%.png
rem ■一時ファイルの削除
del %METRICS%.dat
rem --------------------------------------------------
ブロックリクエスト (BlockedRequests)
rem --------------------------------------------------
rem ■■ ブロックリクエスト (BlockedRequests) ■■
rem ■個別設定
SET METRICS=BlockedRequests
SET NAMESPACE=WAF
SET PERIOD=86400
SET WEBACL=WAF名
SET RULE=ルール名
rem ■グラフ図取得処理
aws cloudwatch get-metric-widget-image --metric-widget {\"width\":%WIDTH%,\"height\":%HEIGHT%,\"start\":\"%START%T00:00:00.000+0900\",\"end\":\"%END%T23:59:59.000+0900\",\"timezone\":\"+0900\",\"view\":\"timeSeries\",\"metrics\":[[\"%NAMESPACE%\",\"%METRICS%\",\"WebACL\",\"%WEBACL%\",\"Region\",\"ap-northeast-1\",\"Rule\",\"%RULE%\",{\"stat\":\"Sum\"}]],\"region\":\"%REGION%\",\"period\":86400,\"stacked\":false} %PROFILE% --output text --query MetricWidgetImage > %METRICS%.dat
rem ■デコード処理
certutil -f -decode %METRICS%.dat %METRICS%.png
rem ■一時ファイルの削除
del %METRICS%.dat
rem --------------------------------------------------
NetworkOut (NetworkOut)
rem --------------------------------------------------
rem ■■ NetworkOut (NetworkOut) ■■
rem ■個別設定
SET METRICS=NetworkOut
SET NAMESPACE=AWS/EC2
SET PERIOD=300
rem ■グラフ図取得処理
aws cloudwatch get-metric-widget-image --metric-widget {\"width\":%WIDTH%,\"height\":%HEIGHT%,\"start\":\"%START%T00:00:00.000+0900\",\"end\":\"%END%T23:59:59.000+0900\",\"timezone\":\"+0900\",\"view\":\"timeSeries\",\"metrics\":[[\"%NAMESPACE%\",\"%METRICS%\",\"InstanceId\",\"%INSTANCE%\"]],\"region\":\"%REGION%\",\"period\":300,\"stacked\":false} %PROFILE% --output text --query MetricWidgetImage > %METRICS%.dat
rem ■デコード処理
certutil -f -decode %METRICS%.dat %METRICS%.png
rem ■一時ファイルの削除
del %METRICS%.dat
rem --------------------------------------------------
実行結果
CPUやMemory等、複数のインスタンスを一つのグラフで表示したい場合、次のように記載します。
個別設定で複数のインスタンスIDを記載。
SET INSTANCE1=i-xxxxxxxxxxxxxxxxx
SET INSTANCE2=i-xxxxxxxxxxxxxxxxx
SET INSTANCE3=i-xxxxxxxxxxxxxxxxx
SET INSTANCE4=i-xxxxxxxxxxxxxxxxx
metrics値の箇所を以下のように記載。
\"metrics\":[[\"%NAMESPACE%\",\"%METRICS%\",\"InstanceId\",\"%INSTANCE1%\"],[\"...\",\"%INSTANCE2%\"],[\"...\",\"%INSTANCE3%\"],[\"...\",\"%INSTANCE4%\"]]
実行結果