python使用AliyunOpenApi获取MongoDB监控数据
python使用AliyunOpenApi获取MongoDB监控数据
Mongo_cpu.py
import sys import json import datetime,time from json import loads, dumps from typing import List from alibabacloud_dds20151201.client import Client as Dds20151201Client from alibabacloud_tea_openapi import models as open_api_models from alibabacloud_dds20151201 import models as dds_20151201_models # 时间处理函数 def time2iso(dt): """本地时间转UTC时间(-8:00)""" # print(dt) cr_date = datetime.datetime.strptime(dt, '%Y-%m-%d %H:%M') # print(cr_date) time_struct = time.mktime(cr_date.timetuple()) utc_st = datetime.datetime.utcfromtimestamp(time_struct) # print(str(utc_st)[:-2]) utc_st = (str(utc_st)[:-3]).replace(' ','T') + 'Z' return utc_st class MongoDBIns(): def __init__(self,starttime,endtime): self.starttime = time2iso(starttime[:-3]) self.endtime = time2iso(endtime[:-3]) self.keys = "CpuUsage,DiskUsage,MongoDB_IOPS,MemoryUsage,MongoDB_Connections,MongoDB_Network" self.ak = "AK_ID" self.sk = "AK_SRT" self.instance = 'dds-ddddddddddd' # @staticmethod def create_client(self) -> Dds20151201Client: """ 使用AK&SK初始化账号Client @param access_key_id: @param access_key_secret: @return: Client @throws Exception """ config = open_api_models.Config( # 您的AccessKey ID, access_key_id=self.ak, # 您的AccessKey Secret, access_key_secret=self.sk ) # 访问的域名 config.endpoint = 'mongodb.aliyuncs.com' # print(Dds20151201Client(config)) return Dds20151201Client(config) # @staticmethod def main(self): client = self.create_client() # print(self.starttime,self.endtime) describe_dbinstance_performance_request = dds_20151201_models.DescribeDBInstancePerformanceRequest( dbinstance_id=self.instance, key=self.keys, start_time=self.starttime, end_time=self.endtime ) # 复制代码运行请自行打印 API 的返回值 resp = client.describe_dbinstance_performance(describe_dbinstance_performance_request) mon_con = [] cpu = [] disk = [] iops = [] mem = [] net = [] data = [] for mrs in resp.to_map()["body"]["PerformanceKeys"]["PerformanceKey"]: if "MongoDB_Connections" in mrs.values(): for val in mrs["PerformanceValues"]["PerformanceValue"]: mon_con.append(val['Value']) if "CpuUsage" in mrs.values(): for val in mrs["PerformanceValues"]["PerformanceValue"]: cpu.append(val['Value']) if "DiskUsage" in mrs.values(): for val in mrs["PerformanceValues"]["PerformanceValue"]: disk.append(val['Value']) if "MongoDB_IOPS" in mrs.values(): for val in mrs["PerformanceValues"]["PerformanceValue"]: iops.append(val['Value'].split('&')[0]) iops.append(val['Value'].split('&')[1]) if "MemoryUsage" in mrs.values(): for val in mrs["PerformanceValues"]["PerformanceValue"]: mem.append(val['Value']) if "MongoDB_Network" in mrs.values(): for val in mrs["PerformanceValues"]["PerformanceValue"]: net.append(val['Value'].split("&")[0]) net.append(val['Value'].split("&")[1]) data = {"mon_con":max(mon_con),"cpu":max(cpu),"disk":str(max(disk))+"%","iops":max(iops),"mem":max(mem),"net":max(net)} # print(data) return data
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通