python使用AliyunOpenApi获取ecs监控数据
2022/6/8 1:22:43
本文主要是介绍python使用AliyunOpenApi获取ecs监控数据,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
python使用AliyunOpenApi获取ecs监控数据
ecs.py
#!/usr/bin/env python #coding=utf-8 import json import datetime,time from aliyunsdkcore.client import AcsClient from aliyunsdkcore.acs_exception.exceptions import ClientException from aliyunsdkcore.acs_exception.exceptions import ServerException from aliyunsdkecs.request.v20140526.DescribeInstanceMonitorDataRequest import DescribeInstanceMonitorDataRequest from aliyunsdkecs.request.v20140526.DescribeInstancesRequest import DescribeInstancesRequest client = AcsClient('AK_ID', 'AK_SRT', 'cn-beijing') # 时间处理函数 def time2iso(dt): """本地时间转UTC时间(-8:00)""" cr_date = datetime.datetime.strptime(dt, '%Y-%m-%d %H:%M:%S') # print(cr_date) time_struct = time.mktime(cr_date.timetuple()) utc_st = datetime.datetime.utcfromtimestamp(time_struct) utc_st = str(utc_st).replace(' ','T') + 'Z' return utc_st # return datetime.datetime.utcfromtimestamp(timestamp).strftime(format).replace('{-FF-}',sec) # 获取运维监控信息 def get_ecs_eni(starttime,endtime,ins,timesp): request = DescribeInstanceMonitorDataRequest() request.set_accept_format('json') request.set_StartTime(starttime) request.set_EndTime(endtime) request.set_Period(timesp) ecs_mo = {} for eid in ins.keys(): ins_mo = {} request.set_InstanceId(eid) response = json.loads(str(client.do_action_with_exception(request),encoding='utf-8')) cpu = [] net = [] rio = [] wio = [] for mons in response["MonitorData"]["InstanceMonitorData"]: if "CPU" in mons and "IOPSWrite" in mons and "IOPSRead" in mons and "IntranetBandwidth" in mons: cpu.append(mons['CPU']) wio.append(mons['IOPSWrite']) rio.append(mons['IOPSRead']) net.append(mons['IntranetBandwidth']) ins_mo["CPU"] = str(max(cpu)) + '%' ins_mo["net"] = str(float("%.2f" % (max(net) /1024 ))) #+'MB/s' ins_mo["wio"] = str(max(wio))+'次/s' ins_mo["rio"] = str(max(rio))+'次/s' ins_mo["InstanceId"] = eid ins_mo["InstanceName"] = ins[eid][0] ins_mo["IpAddress"] = ins[eid][1] ecs_mo[eid] = ins_mo print(ecs_mo) # 获取ecs 实例基本信息 def get_ecs_instance(): request = DescribeInstancesRequest() request.set_accept_format('json') request.set_VpcId("vpc-id") request.set_VSwitchId("vsw-id") request.set_PageSize(50) response = json.loads(str(client.do_action_with_exception(request),encoding='utf-8')) inss = {} for ins in response["Instances"]["Instance"]: data = [] # print(ins["InstanceName"],ins["InstanceId"],ins["VpcAttributes"]["PrivateIpAddress"]["IpAddress"][0]) data.append(ins["InstanceName"]) data.append(ins["VpcAttributes"]["PrivateIpAddress"]["IpAddress"][0]) inss[ins["InstanceId"]] = data return inss if __name__ == '__main__': starttime = time2iso("2021-06-22 00:00:01") endtime = time2iso("2021-06-29 23:59:50") print(starttime,endtime) # ecsid = "i-idssssssssssss" timesp = 3600 inss = get_ecs_instance() get_ecs_eni(starttime,endtime,inss,timesp)
这篇关于python使用AliyunOpenApi获取ecs监控数据的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-08有遇到过吗?同样的规则 Excel 中 比Python 结果大
- 2024-03-30开始python成长之路
- 2024-03-29python optparse
- 2024-03-29python map 函数
- 2024-03-20invalid format specifier python
- 2024-03-18pool.map python
- 2024-03-18threads in python
- 2024-03-14python Ai 应用开发基础训练,字符串,字典,文件
- 2024-03-13id3 algorithm python
- 2024-03-13sum array elements python