通过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}%")
相关推荐
a7963lin1 小时前
PHP怎么实现单例模式_PHP常用设计模式之单例模式【方法】
jvm·数据库·python
Aision_4 小时前
从工具调用到 MCP、Skill完整学习记录
java·python·gpt·学习·langchain·prompt·agi
2301_809204709 小时前
JavaScript中严格模式use-strict对引擎解析的辅助.txt
jvm·数据库·python
zjy2777710 小时前
mysql如何选择合适的索引类型_mysql索引设计实战
jvm·数据库·python
Aaswk10 小时前
Java Lambda 表达式与流处理
java·开发语言·python
万邦科技Lafite10 小时前
京东item_get接口实战案例:实时商品价格监控全流程解析
java·开发语言·数据库·python·开放api·淘宝开放平台
Cyber4K11 小时前
【Python专项】进阶语法-系统资源监控与数据采集(1)
开发语言·python·php
苍煜12 小时前
Java开发IO零基础吃透:BIO、NIO、同步异步、阻塞非阻塞
java·python·nio
AllData公司负责人13 小时前
通过Postgresql同步到Doris,全视角演示AllData数据中台核心功能效果,涵盖:数据入湖仓,数据同步,数据处理,数据服务,BI可视化驾驶舱
java·大数据·数据库·数据仓库·人工智能·python·postgresql
Flittly14 小时前
【LangGraph新手村系列】(5)时间旅行:浏览历史、分叉时间线与修改过去
python·langchain