web-dev-qa-db-ja.com

aws cloudwatch get-metric-widget-imageの使用方法は?

インスタンスが多いので、Cloudwatchのスクリーンショットを自動的に取得したいと思います。

しかし、aws cliコマンドツールでget-metric-widget-imageを実行しようとすると、常にエラーが発生します。

GetMetricWidgetImage操作を呼び出すときにエラーが発生しました(ValidationError):MetricWidgetプロパティ 'metricWidget'のJSONコンテンツが正しくありません。

私を助けてくれる人はいますか?ありがとう。

Awsdocから例を見つけることができませんでした。以下のリンクに正確な例はありません。 https://docs.aws.Amazon.com/AmazonCloudWatch/latest/APIReference/CloudWatch-Metric-Widget-Structure.html

私の命令はこんな感じです。

aws cloudwatch get-metric-widget-image  --metric-widget "{ "width":600,"height":395,"metrics":[["AWS/EC2","CPUUtilization","InstanceId","i-01234567890123456",{"stat":"Average"}]],"period":300,"start":"-P30D","end":"PT0H","stacked":false,"yAxis":{"left":{"min":0.1,"max":1},"right":{"min":0}},"title":"CPU","annotations":{"horizontal":[{"color":"#ff6961","label":"Troublethresholdstart","fill":"above","value":0.5}], "vertical":[{"visible":true, "color":"#9467bd","label":"Bugfixdeployed","value":"2018-11-19T07:25:26Z","fill":"after"}]}}}" --output-format "png" 
7
ingsnow kwan

これは、毎日同じ指標の画像をダウンロードするために使用するスクリプトです。このスクリプトは、可変引数を使用してaws cloudwatch get-metric-widget-imageを呼び出し、出力をpngファイルに変換する方法を示しています。

function getDbDailyMetricImage
{
    local date=$1
    local dbId=$2
    local metric=${3:-'CPUUtilization'}
    local metricMin=$4
    local metricMax=$5

    local dateF=$(date --date="$date" +%F)
    local start="${dateF}T00:00:00.000Z"
    local end="${dateF}T23:59:59.999Z"

    echo "Downloading image for $dbId $metric [$metricMin .. $metricMax]" \
         "and Time [$start .. $end]"
    aws --region us-east-1 cloudwatch get-metric-widget-image --metric-widget \
        '{
          "metrics": [
              [ "AWS/RDS", "'$metric'", "DBInstanceIdentifier", "'$dbId'", 
                { "period": 300, "yAxis": "left" } ]
          ],
          "yAxis": {
             "left": {
                 "min": '$metricMin',
                 "max": '$metricMax'
             }
          },
          "title": "'"$dateF $metric of $dbId vs Time UTC"'",
          "legend": {
             "position": "hidden"
          },
          "view": "timeSeries",
          "stacked": true,
          "period": 300,
          "width": 1200,
          "height": 800,
          "start": "'$start'",
          "end": "'$end'"
        }' \
        --output-format png --output text | base64 --decode > $metric-$dbId-$dateF.png
}

for daysAgo in {0..30}
do
    getDbDailyMetricImage $(date --date="$daysAgo days ago" +%F) mydb1 CPUUtilization 0 100
    getDbDailyMetricImage $(date --date="$daysAgo days ago" +%F) mydb1 ReadIOPS 0 10000
done

imageMagick convert -compose Multiplyを使用して、すべてまたは一部のグラフを1つに結合するために使用するもう1つの便利な分析ツール。例えば、

convert ReadIOPS-mydb1-2019-0*.png -compose Multiply -layers flatten ReadIOPS-mydb1-2019-composite.png
0