zabbix使用python获取阿里云SLB带宽.md
阿里云SDK
阿里云目前提供了很多的SDK,并且可以使用在线调试工具,虽然有些bug
https://develop.aliyun.com/tools/sdk?#/python
在线调试工具
https://api.aliyun.com/?spm=5176.143622.743215.5.524c6168naUyOU
但是主页面的SDK列表里面并没有SLB,并且翻了下aliyun-python-sdk-slb (2.1.2)这个包里面好像也没有带宽相关的描述。别急,我们还有云监控的SDK。
这里我们使用了阿里云云监控的SDK(aliyun-python-sdk-cms (5.0.0))
获取SLB带宽
Python2.7调试通过,需要使用pip安装aliyun-python-sdk-core,aliyun-python-sdk-cms
#!/usr/bin/env python
#coding=utf-8
import json
import sys
from aliyunsdkcore import client
from aliyunsdkcms.request.v20170301 import QueryMetricListRequest
import time
clt = client.AcsClient('<ACCESSKEY>','<SECRETKEY>','cn-beijing')
request = QueryMetricListRequest.QueryMetricListRequest()
request.set_accept_format('json')
#两个参数按照预设值设定,参见参考资料描述
request.set_Project('acs_slb')
request.set_Metric('TrafficTXNew')
#只获取1小时内的数据
start_time = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()-3600))
timestamp_start = int(time.mktime(time.strptime(start_time, "%Y-%m-%d %H:%M:%S"))) * 1000
request.set_StartTime(timestamp_start)
#从系统输入参数获取IP地址和SLB-ID
slbip = sys.argv[1]
slbid = sys.argv[2]
request.set_Dimensions({'instanceId':slbid,'port':'443','vip':slbip})
request.set_Period('60')
#result = clt.do_action(request)
result = clt.do_action_with_exception(request)
#print result
#json结果处理
datadict = json.loads(result)
#取倒数第二条数据,因为倒数第一条不太准
res = datadict['Datapoints'][-2]['Average']
print(res)
使用方法:
python ali-slb.py <IP地址> <SLB的ID>
然后接入zabbix,使用grafana就可以出图了。
参考资料
https://help.aliyun.com/document_detail/28622.html
https://help.aliyun.com/document_detail/28624.html?spm=5176.doc28622.6.652.rNCQhN
转载请注明:IPCPU-网络之路 » zabbix使用python获取阿里云SLB带宽