我正在尝试使用aws cli获取EC2内存利用率,但我发现EC2MemoryUtilization
无法用作指标。我在ec2实例中安装了cloudwatch代理,并为mem_used_percent
创建了一个仪表板。
现在,我想以编程方式消耗已使用的内存数据点。我可以找到CPUUtilization
,但找不到任何有关内存利用率的信息。
在这方面的任何帮助都是有帮助的。谢谢!
答案 0 :(得分:0)
此python脚本将系统内存指标推送到自定义名称空间中的cloudwatch。在crontab中安排脚本以每1分钟或5分钟执行一次,以绘制相对于时间的系统内存指标。确保分配给虚拟机的IAM角色具有足够的特权,可将指标数据放入cloudwatch。
#!/usr/bin/env python
import psutil
import requests
import json
import os
import boto3
get_memory = psutil.virtual_memory()
free_memory = get_memory.free/(1024*1024*1024)
print "Free Memory: ", free_memory, "GB"
headers = {'content-type': 'application/json'}
req = requests.get(url='http://169.254.169.254/latest/meta-data/iam/security-credentials/cloudwatch_access', headers=headers)
res = json.loads(req.text)
AccessKeyId = res['AccessKeyId']
SecretAccessKey = res['SecretAccessKey']
Token = res['Token']
Region = "ap-south-1"
os.environ["AWS_ACCESS_KEY_ID"] = AccessKeyId
os.environ["AWS_SECRET_ACCESS_KEY"] = SecretAccessKey
os.environ["AWS_SESSION_TOKEN"] = Token
os.environ["AWS_DEFAULT_REGION"] = Region
namespace = 'mynamespace'
dimension_name = 'my_dimension_name'
dimension_value = 'my_dimension_value'
cloudwatch = boto3.client('cloudwatch')
cloudwatch.put_metric_data(
MetricData=[
{
'MetricName': 'Free Memory',
'Dimensions': [
{
'Name': dimension_name,
'Value': dimension_value
},
],
'Unit': 'Gigabytes',
'Value': free_memory
},
],
Namespace=namespace
)