前提・実現したいこと
Amazon Linux1上のAWS cli(awsコマンド)を利用してCloudwatchからRDSやELB等のサービスのリソースなどの値を取得したいと考えております。
最終的には簡単なスクリプトを組んで、そのスクリプトをZabbixから外部チェックという形で実行し、取得した値をZabbixに集約したいと考えております。
そのため、指定したリソースの最新の値1つのみをCloudwatchから取得したいのですが、今行っているコマンドではタイミングによっては値が取得できない、もしくは複数返ることがあります。
awsコマンドを利用して最新の値を1つだけ返してくるオプションや手段はないものでしょうか。
該当のソースコード
現在は以下のコマンドを実行してRDSのCPU使用率の値を取得しております。
/usr/local/bin/aws cloudwatch get-metric-statistics \ --start-time 2018-02-06T05:29:49Z \ --end-time 2018-02-06T05:31:49Z \ --namespace AWS/RDS \ --dimensions Name=DBInstanceIdentifier,Value=〓RDSのインスタンス名〓 \ --metric CPUUtilization \ --statistics Average \ --region ap-northeast-1 \ --period 60
--start-timeと--end-timeの値は、実際にはスクリプト内部でdateコマンドの-uオプションでUTC時刻とし、--start-timeを現在時刻の1分前(-d '1 minute ago'で指定)、--end-timeに現在時刻を割り当てています。
発生している問題・エラーメッセージ
この使い方ではコマンドを実行するタイミングによっては結果が0個~2個返ってくることがあります。
- 結果が0個の場合
{ "Datapoints": [], "Label": "CPUUtilization" }
- 結果が1個の場合
{ "Datapoints": [ { "Timestamp": "2018-02-06T05:30:00Z", "Average": 2.5, "Unit": "Percent" } ], "Label": "CPUUtilization" }
- 結果が2個の場合
{ "Datapoints": [ { "Timestamp": "2018-02-06T05:29:00Z", "Average": 1.33333333333515, "Unit": "Percent" }, { "Timestamp": "2018-02-06T05:30:00Z", "Average": 2.5, "Unit": "Percent" } ], "Label": "CPUUtilization" }
試したこと
AWSの公式サイトのドキュメントを見ておりますが、こちらの英語力の問題か期間を指定する方法以外存在していないようです。
最新の1つの値だけを取得するといったオプションはない模様です。
補足情報(FW/ツールのバージョンなど)
$ aws --version aws-cli/1.14.32 Python/2.7.12 Linux/4.9.77-31.58.amzn1.x86_64 botocore/1.8.36
以上です。なにとぞよろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/08 01:16