presents by IT Consulting 109

AWS – get-metric-widget-imageでグラフ図を取得

概要

get-metric-widget-image を使用することで CloudWacth のメトリクスで見るようなグラフ図を取得することができます。

今回は以下のメトリクスをグラフ図として取得する方法について記載。

  • CPU使用率 (CPUUtilization)
  • メモリ使用率 (MemoryUtilization)
  • ディスク使用率 (DiskSpaceUtilization)
  • Inode使用率 (DiskInode)
  • NtpCheck (NtpCheck)
  • リクエストカウント (RequestCount)
  • レスポンスタイム (TargetResponseTime)
  • ブロックリクエスト (BlockedRequests)
  • NetworkOut (NetworkOut)

 

手順

環境設定
先ずは共通で使用する値を変数として指定します。

@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%\"]]

実行結果

この記事を書いた人
名前:TRUE's。 千葉県育ち、神奈川県在住のIT系フリーエンジニア。 IT系のナレッジサイトを不定期で更新中。 フォトグラファー兼エンジニアとして日々勤しんでいる。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です