AWS
CloudWatch
aws-cli

AWS CLIでインスタンスのCPU使用率を取得する


はじめに

Cloud Watchでは、各サービスのメトリクスをグラフで確認できるが、データのエクスポート等はできないという難点がある。

エクスポートするためには、AWS CLIを使用する必要がある。

AWS CLIを使用してEC2のメトリクスを取得する手順の備忘録。


1.グループ作成

CLI用にグループを作成する。

1. AWSマネージメントコンソールから「IAM コンソール」にアクセスします。

2. 左ペインから[グループ]を選択し、[新しいグループの作成]ボタンを押します。

3. グループ名を入力して、画面下の[次のステップ]ボタンを押します。

4. ポリシー名が一覧で表示される。次のポリシーを選択して[次のステップ]ボタンを押します。

・AmazonEC2ReadOnlyAccess

5.グループの作成を押します。


2.ユーザ作成

1.左ペインから[ユーザー]を選択し、[ユーザーを追加]ボタンを押します。

2.ユーザー名を入力します。

3.アクセスの種類では、[プログラムによるアクセス]を選択して、画面下の[次のステップ:アクセス権限]ボタンを押します。

4.ユーザーをグループに追加します。「1.グループ作成」で作ったグループ名のチェックボックスをONにして[次のステップ:確認]ボタンを押します。

5. 必要であればタグを追加します。(オプション)

6.[ユーザーの作成]ボタンを押します。

7. 表示されるアクセスIDとシークレットアクセスキーを控えておく。


3. CLIのインストールと設定

AWS CLIのインストールと設定を参照

$ aws configure

AWS Access Key ID [None]: 取得したアクセスIDを指定
AWS Secret Access Key [None]: 取得したシークレットアクセスキーを指定
Default region name [None]: 対象のEC2インスタンスがあるリージョンを指定
Default output format [None]: json/text/tableから選択

今回はデータ値を目視確認したいので、output formatに「table」を指定

以上で設定は終了。


4. CLIからコマンドを実行

EC2のメトリクスを取得するコマンド

get-metric-statistics

今回は特定のEC2インスタンスの10分ごとのCPU使用率(平均値)を取得したかったので

次のコマンドを実行

$ aws cloudwatch get-metric-statistics \

--metric-name CPUUtilization \
--start-time 2019-03-03T00:00:00Z --end-time 2019-03-04T00:00:00Z --period 600 \
--namespace AWS/EC2 --statistics Average \
--dimensions Name=InstanceId,Value=[インスタンスID] \
--query "sort_by(Datapoints,&Timestamp)[*]"

------------------------------------------------------------
| GetMetricStatistics |
+----------------------+------------------------+----------+
| Average | Timestamp | Unit |
+----------------------+------------------------+----------+
| 0.11612021857924248 | 2019-03-03T00:00:00Z | Percent |
| 0.1503010095396835 | 2019-03-03T00:10:00Z | Percent |
| 0.1339075669167282 | 2019-03-03T00:20:00Z | Percent |
| 0.1166759284986647 | 2019-03-03T00:30:00Z | Percent |
| 0.1169491525423807 | 2019-03-03T00:40:00Z | Percent |
| 0.11695841437435188 | 2019-03-03T00:50:00Z | Percent |
| 0.11584699453552649 | 2019-03-03T01:00:00Z | Percent |
| 0.11668519033063549 | 2019-03-03T01:10:00Z | Percent |
| 0.1333518569973254 | 2019-03-03T01:20:00Z | Percent |
| 0.1669676762063536 | 2019-03-03T01:30:00Z | Percent |
| 0.11668519033063589 | 2019-03-03T01:40:00Z | Percent |
| 0.1330878947855994 | 2019-03-03T01:50:00Z | Percent |
| 0.11668519033063629 | 2019-03-03T02:00:00Z | Percent |
| 0.1336250810410414 | 2019-03-03T02:10:00Z | Percent |
| 0.11639344262293949 | 2019-03-03T02:20:00Z | Percent |
| 0.1161202185792429 | 2019-03-03T02:30:00Z | Percent |
| 0.1333518569973064 | 2019-03-03T02:40:00Z | Percent |
| 0.1166851903306553 | 2019-03-03T02:50:00Z | Percent |
| 0.10001852366398441 | 2019-03-03T03:00:00Z | Percent |
| 0.11668519033063571 | 2019-03-03T03:10:00Z | Percent |
| 0.0994535519125724 | 2019-03-03T03:20:00Z | Percent |
| 0.10029174770770019 | 2019-03-03T03:30:00Z | Percent |
| 0.09946281374456199 | 2019-03-03T03:40:00Z | Percent |
| 0.11667592849864569 | 2019-03-03T03:50:00Z | Percent |
| 0.1336343428730316 | 2019-03-03T04:00:00Z | Percent |
| 0.11668519033063589 | 2019-03-03T04:10:00Z | Percent |
| 0.11640270445494909 | 2019-03-03T04:20:00Z | Percent |
| 1.1161248494952374 | 2019-03-03T04:30:00Z | Percent |
| 0.1169676762063419 | 2019-03-03T04:40:00Z | Percent |
| 0.11612948041123308 | 2019-03-03T04:50:00Z | Percent |
| 0.11667592849864569 | 2019-03-03T05:00:00Z | Percent |
| 0.1339075669167474 | 2019-03-03T05:10:00Z | Percent |
| 0.133625081041022 | 2019-03-03T05:20:00Z | Percent |
| 0.1161387422432227 | 2019-03-03T05:30:00Z | Percent |
| 0.36724090025005846 | 2019-03-03T05:40:00Z | Percent |
| 0.11641196628693891 | 2019-03-03T05:50:00Z | Percent |
| 0.11668519033065469 | 2019-03-03T06:00:00Z | Percent |
| 0.8333333333333341 | 2019-03-03T06:10:00Z | Percent |
+----------------------+------------------------+----------+

こんな感じでCPU使用率が取得できる~


オプション

・[--metric-name]: 取得したメトリクスタイプを指定

使用できるメトリクスタイプは次のコマンドで取得可能

$ aws cloudwatch list-metrics --namespace AWS/EC2 --dimensions Name=InstanceId,Value=インスタンスID

-----------------------------------------------
| ListMetrics |
+---------------------------------------------+
|| Metrics ||
|+-------------------------+-----------------+|
|| MetricName | Namespace ||
|+-------------------------+-----------------+|
|| CPUUtilization | AWS/EC2 ||
|+-------------------------+-----------------+|
||| Dimensions |||
||+--------------+--------------------------+||
||| Name | Value |||
||+--------------+--------------------------+||
||| InstanceId | your instance Id |||
||+--------------+--------------------------+||
|| Metrics ||
|+------------------------+------------------+|
|| MetricName | Namespace ||
|+------------------------+------------------+|
|| CPUCreditUsage | AWS/EC2 ||
|+------------------------+------------------+|
||| Dimensions |||
||+--------------+--------------------------+||
||| Name | Value |||
||+--------------+--------------------------+||
||| InstanceId | your instance Id |||
||+--------------+--------------------------+||
|| Metrics ||
|+---------------------+---------------------+|
|| MetricName | Namespace ||
|+---------------------+---------------------+|
|| DiskReadBytes | AWS/EC2 ||
|+---------------------+---------------------+|
||| Dimensions |||
||+--------------+--------------------------+||
||| Name | Value |||
||+--------------+--------------------------+||
||| InstanceId | your instance Id |||
||+--------------+--------------------------+||
|| Metrics ||
|+------------------------+------------------+|
|| MetricName | Namespace ||
|+------------------------+------------------+|
|| DiskWriteBytes | AWS/EC2 ||
|+------------------------+------------------+|

こんな感じのリストが取れる。(長いので省略してます)

・[--period]: 取得するデータの間隔を指定

- 60(seconds)を単位として指定する

※1度に取得できるデータ件数は1440件なので注意

・[--statistics]: 取得するメトリクスの集計方法

- SampleCount

- Average

- Sum

- Minimum

- Maximum

・[--query]: 取得するデータの絞り込みを指定

今回はデータが時系列になるようにタイムスタンプで絞り込んでます。


最後に

もっとシェル勉強しなきゃ。