通过sdk获取ecs指标

cpu使用率

python 复制代码
import json

from alibabacloud_cms20190101.client import Client as Cms20190101Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_cms20190101 import models as cms_20190101_models
from alibabacloud_tea_util import models as util_models

# 配置客户端参数
config = open_api_models.Config(
    access_key_id = "",
    access_key_secret = ""
)

# 设置控制台的Endpoint
config.endpoint = ''

# 创建客户端实例
client = Cms20190101Client(config)
# print(client)

# 构造请求体
request = cms_20190101_models.DescribeMetricLastRequest(
    # ECS监控指标的命名空间
    namespace='acs_ecs_dashboard',
    # 要查询的指标:CPU利用率
    metric_name='CPUUtilization',
    # 如需指定单个ECS实例,取消下面注释并替换实例ID
    # dimensions=json.dumps({'instanceId': 'i-xxxxxxx'})
)

# 运行时选项
runtime = util_models.RuntimeOptions()

# 响应体
response = client.describe_metric_last_with_options(request, runtime)
# print(response)

# 先把响应体转成字典(解决SDK返回混合结构的问题)
response_dict = response.to_map()

# 提取key为body的value(是子字典),再取出key为Datapoints对应的value
datapoints_str = response_dict['body']['Datapoints']
# json格式的数据转列表
datapoints_list = json.loads(datapoints_str)

R = []

# 提取目标字段
for i in datapoints_list:
    instance_id = i.get('instanceId')
    average = i.get('Average')
    
    t = (instance_id, average)
    R.append(t)

# print(R)

count = len(R)
total = 0

for i in R:
    total += i[1]

cpu_average_usage_util = round(total / count, 3)
print(f"{count}台实例的cpu平均使用率为{cpu_average_usage_util}%")

内存使用率

python 复制代码
import json

from alibabacloud_cms20190101.client import Client as Cms20190101Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_cms20190101 import models as cms_20190101_models
from alibabacloud_tea_util import models as util_models

config = open_api_models.Config(
    access_key_id = "",
    access_key_secret = ""
)

config.endpoint = ''

client = Cms20190101Client(config)
# print(client)

request = cms_20190101_models.DescribeMetricLastRequest(
    namespace='acs_ecs_dashboard',
    metric_name='vm.MemoryUtilization',
)

runtime = util_models.RuntimeOptions()

response = client.describe_metric_last_with_options(request, runtime)
# print(response)

response_dict = response.to_map()

datapoints_str = response_dict['body']['Datapoints']
datapoints_list = json.loads(datapoints_str)

R = []

for i in datapoints_list:
    instance_id = i.get('instanceId')
    average = i.get('Average')
    
    t = (instance_id, average)
    R.append(t)

# print(R)

count = len(R)
total = 0

for i in R:
    total += i[1]

cpu_average_usage_util = round(total / count, 3)
print(f"{count}台通算实例的内存平均使用率为{cpu_average_usage_util}%")
相关推荐
花花无缺1 小时前
Windows 定时执行 Python 脚本方案
python·操作系统·命令行
流云鹤3 小时前
1. 配置环境、创建导航栏
python·django
三亚兴嘉装饰3 小时前
准备在三亚装房子找哪家装修
python
Mx_coder3 小时前
8年Java开发者AI转型第二周:RAG系统深入 + 向量数据库实战(Day 8-10)
python
ximen502_3 小时前
Python 语言知识总结
开发语言·python
流云鹤4 小时前
2.登录模块
python·django
C+-C资深大佬4 小时前
Java 变量:从入门到精通
java·开发语言·python
chouchuang4 小时前
day-027-面向对象-下
开发语言·python
华研前沿标杆游学4 小时前
2026年标杆游学机构选择指南:从资质审核到效果验收全流程本指南
python
衔烛之龙14 小时前
Windows x64 构建 liboqs-java教程
java·windows·python