最新消息:网站迁移至香港,数据恢复中。

zabbix使用python获取阿里云SLB带宽

Linux ipcpu 385浏览

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

  1. #!/usr/bin/env python
  2. #coding=utf-8
  3. import json
  4. import sys
  5. from aliyunsdkcore import client
  6. from aliyunsdkcms.request.v20170301 import QueryMetricListRequest
  7. import time
  8. clt = client.AcsClient('<ACCESSKEY>','<SECRETKEY>','cn-beijing')
  9. request = QueryMetricListRequest.QueryMetricListRequest()
  10. request.set_accept_format('json')
  11. #两个参数按照预设值设定,参见参考资料描述
  12. request.set_Project('acs_slb')
  13. request.set_Metric('TrafficTXNew')
  14. #只获取1小时内的数据
  15. start_time = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()-3600))
  16. timestamp_start = int(time.mktime(time.strptime(start_time, "%Y-%m-%d %H:%M:%S"))) * 1000
  17. request.set_StartTime(timestamp_start)
  18. #从系统输入参数获取IP地址和SLB-ID
  19. slbip = sys.argv[1]
  20. slbid = sys.argv[2]
  21. request.set_Dimensions({'instanceId':slbid,'port':'443','vip':slbip})
  22. request.set_Period('60')
  23. #result = clt.do_action(request)
  24. result = clt.do_action_with_exception(request)
  25. #print result
  26. #json结果处理
  27. datadict = json.loads(result)
  28. #取倒数第二条数据,因为倒数第一条不太准
  29. res = datadict['Datapoints'][-2]['Average']
  30. print(res)

使用方法:

  1. python ali-slb.py <IP地址> <SLBID>

然后接入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带宽