阿里云的RDS自带的监控系统获取数据不怎么直观,想要通过API获取数据通过zabbix显示,因为网上资料缺乏和其他一些原因,获取API签名很困难,但使用阿里云的SDK可以完美避开获取签名的步骤。
阿里云SDK是什么?
SDK是阿里云为用户提供的开发工具,支持JAVA、PHP、C#等几种不同的语言,这里是用Python写的。在Python SDK里提供了一些模块,我们通过调用这些模块、传入一些必要的参数可以简单的实现数据的获取。
阿里云的sdk就是很多的库文件,这里我们只需要两个库文件,一个核心库sdk-core和rds库sdk-rds。
下载地址:https://github.com/aliyun/aliyun-openapi-python-sdk
注意事项
脚本会收集RDS别名,
不要默认别名
不要使用中文别名(zabbix不识别)
切记aliyun-python-sdk-core==2.3.5,新版本的sdk有bug
python = 2.7
/usr/bin/pip2.7install aliyun-python-sdk-core==2.3.5 aliyun-python-sdk-rds datetime
从阿里云控制台获取AccessKey,并修改脚本中的ID与Secret
修改区域RegionId
将两个脚本放置于以下目录。
/etc/zabbix/script chmod +x /etc/zabbix/script/*
调用阿里云的sdk分为三个步骤:
[if !supportLists]1. [endif]创建 AcsClient 实例并初始化;AcsClient即请求rds的实例,包括accesskeyid、accesskeysecret和regionid。
[if !supportLists]2. [endif]创建 API 请求并设置参数;这里的参数是除了公共参数之外所需要的所有参数,在阿里云文档上查看:https://help.aliyun.com/document_detail/26279.html?spm=5176.doc26224.6.868.xHBXXo
[if !supportLists]3. [endif]发起请求并打印返回。
举个例子:
我想查看rds实例的资源使用情况。查看阿里云文档得知,其请求参数有两个:Action :DescribeResourceUsage和DBInstanceId:实例名。
我们进入aliyun-python-sdk-rds/aliyunsdkrds/request/v20140815下的DescribeResourceUsageRequest.py库查看DBInstanceId的设置方法为set_DBInstanceId。
修改zabbix-agentd.conf,添加以下内容
[if !supportLists]1. [endif]#rds
[if !supportLists]2. [endif]UserParameter=rds.discovery,/usr/local/python2.7/bin/python2.7/etc/zabbix/script/discovery_rds.py
[if !supportLists]3. [endif]UserParameter=check.rds[*],/usr/local/python2.7/bin/python2.7/etc/zabbix/script/check_rds.py $1 $2 $3
重启zabbix-agent
zabbix控制台导入模板,并关联主机
出处:https://github.com/XWJR-Ops/zabbix-RDS-monitor/blob/master/README.md