zabbix-RDS-monitor
Aliyun RDS-mysql status monitor with zabbix
zabbix通过阿里云api 自动发现、监控阿里云RDS-Mysql数据库
本版本数据的图表展示,是以监控项进行分组,后期会再发布以rds实例分组的版本。
阿里云的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.7 install 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分为三个步骤:
- 创建 AcsClient 实例并初始化;AcsClient即请求rds的实例,包括accesskeyid、accesskeysecret和regionid。
- 创建 API 请求并设置参数;这里的参数是除了公共参数之外所需要的所有参数,在阿里云文档上查看:https://help.aliyun.com/document_detail/26279.html?spm=5176.doc26224.6.868.xHBXXo
- 发起请求并打印返回。
举个例子:
我想查看rds实例的资源使用情况。查看阿里云文档得知,其请求参数有两个:Action :DescribeResourceUsage和DBInstanceId:实例名。
我们进入aliyun-python-sdk-rds/aliyunsdkrds/request/v20140815下的DescribeResourceUsageRequest.py库查看DBInstanceId的设置方法为set_DBInstanceId。
- 修改zabbix-agentd.conf,添加以下内容
#rds
UserParameter=rds.discovery,/usr/local/python2.7/bin/python2.7 /etc/zabbix/script/discovery_rds.py
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