⌚️
AWS SDK for Python (Boto3) で EC2 の CPU 使用率を取得する方法
Boto3 で CloudWatch メトリクスを呼び出して、EC2 インスタンスが自分自身の CPU 使用率を取得する方法のメモとなります。
準備
- CloudWatch の読み取り権限を含む IAM ロールを用意して EC2 に与えておきます
- IAM ロールを使うのでアクセスキーは不要となりセキュアです
- CPU 使用率を取得したい EC2 には CloudWatchAgent をインストールしておきます
コード
main.py というファイルを作成し、記述します。
boto3 等、必要なモジュールは pip でインストールしておきましょう。
import boto3
import requests
import datetime
import dateutil.tz
region = requests.get('http://169.254.169.254/latest/meta-data/local-hostname').text.split('.')[1]
instance_id = requests.get('http://169.254.169.254/latest/meta-data/instance-id').text
client = boto3.client("cloudwatch", region_name=region)
response = client.get_metric_statistics(
Namespace='AWS/EC2',
MetricName='CPUUtilization',
Dimensions=[
{
'Name': 'InstanceId',
'Value': instance_id
},
],
StartTime=datetime.datetime.utcnow() - datetime.timedelta(seconds=600),
EndTime=datetime.datetime.utcnow(),
Period=300,
Statistics=['Average']
)
for res in response['Messages']:
if 'Body' in res:
print(res['Body'])
出力結果は次のようになります。
$ python3 main.py
メトリクスを変えれば他の値の取得にも活用です。
Discussion