Zabbix使用Python监控阿里云ECS

使用Python走阿里云API获取ECS相关监控信息,然后用在Zabbix监控上。

一、先安装需要的模块

# pip install aliyunsdkcore
# pip install aliyunsdkecs
# pip install aliyunsdkcms

二、获取SLB实例,用于Zabbix上自动发现

#!/bin/python
#coding=utf-8
# 获取ecs 所有实例的详细信息
# discovery_ecs.py

from aliyunsdkcore import client
from aliyunsdkecs.request.v20140526 import DescribeInstancesRequest
import json

Id = 'xxx'
Secret = 'xxx'
RegionId = 'cn-shenzhen'

clt = client.AcsClient(Id,Secret,RegionId)
request = DescribeInstancesRequest.DescribeInstancesRequest();
request.set_accept_format('json')
response = json.loads(clt.do_action_with_exception(request), encoding='utf-8')
# print(response)
InstanceIdList = []
InstanceIdDict = {}
ZabbixDataDict = {}
for i in response['Instances']['Instance']:
	InstanceIdDict['{#INSTANCEID}'] = i['InstanceId']
	InstanceIdList.append(InstanceIdDict)
ZabbixDataDict["data"] = InstanceIdList
print(ZabbixDataDict)

三、采集SLB实例上的各种监控指标数据

#!/bin/python
#coding=utf-8
# check_ecs.py
# ecs监控指标信息

import json
import sys
import time
import datetime
from aliyunsdkcore import client
from aliyunsdkcms.request.v20180308 import QueryMetricListRequest # 查询一段时间的
from aliyunsdkcms.request.v20180308 import QueryMetricLastRequest # 查询最新的一条记录


Id = 'xxx'
Secret = 'xxx'
RegionId = 'cn-shenzhen'

clt = client.AcsClient(Id,Secret,RegionId)

def getMetriceData(instanceId,metric):
	request = QueryMetricLastRequest.QueryMetricLastRequest()
	request.set_accept_format('json')
	request.set_Project('acs_ecs_dashboard')
	request.set_Metric(metric)
	request.set_Dimensions("{'instanceId':'%s'}" % instanceId)
	request.set_Period('60')
	response = clt.do_action_with_exception(request)
	return json.loads(response)

instanceId = sys.argv[1]    
metric = sys.argv[2]

if metric == "CPUUtilization":
	CPUUtilization = getMetriceData(instanceId,"CPUUtilization")
	print(CPUUtilization)
elif  metric == "DiskReadIOPS": # 系统磁盘读IOPS
	DiskReadIOPS = getMetriceData(instanceId,"DiskReadIOPS")
elif  metric == "DiskWriteIOPS": # 系统磁盘写IOPS
	DiskReadIOPS = getMetriceData(instanceId,"DiskWriteIOPS")
elif  metric == "cpu_idle": # 当前空闲CPU百分比
	DiskReadIOPS = getMetriceData(instanceId,"cpu_idle")

# 剩下的大部分都可用zabbix agent取值,所以这里就不再往下取值了

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值