阿里云的RDS自帶的監(jiān)控系統(tǒng)獲取數(shù)據(jù)不怎么直觀,想要通過API獲取數(shù)據(jù)通過zabbix顯示,因為網(wǎng)上資料缺乏和其他一些原因,獲取API簽名很困難,但使用阿里云的SDK可以完美避開獲取簽名的步驟。
阿里云SDK是什么?
SDK是阿里云為用戶提供的開發(fā)工具,支持JAVA、PHP、C#等幾種不同的語言,這里是用Python寫的。在Python SDK里提供了一些模塊,我們通過調(diào)用這些模塊、傳入一些必要的參數(shù)可以簡單的實現(xiàn)數(shù)據(jù)的獲取。
阿里云的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
修改區(qū)域RegionId
將兩個腳本放置于以下目錄。
/etc/zabbix/script chmod +x /etc/zabbix/script/*
調(diào)用阿里云的sdk分為三個步驟:
[if !supportLists]1.???? [endif]創(chuàng)建 AcsClient 實例并初始化;AcsClient即請求rds的實例,包括accesskeyid、accesskeysecret和regionid。
[if !supportLists]2.???? [endif]創(chuàng)建 API 請求并設(shè)置參數(shù);這里的參數(shù)是除了公共參數(shù)之外所需要的所有參數(shù),在阿里云文檔上查看:https://help.aliyun.com/document_detail/26279.html?spm=5176.doc26224.6.868.xHBXXo
[if !supportLists]3.???? [endif]發(fā)起請求并打印返回。
舉個例子:
我想查看rds實例的資源使用情況。查看阿里云文檔得知,其請求參數(shù)有兩個:Action :DescribeResourceUsage和DBInstanceId:實例名。
我們進入aliyun-python-sdk-rds/aliyunsdkrds/request/v20140815下的DescribeResourceUsageRequest.py庫查看DBInstanceId的設(shè)置方法為set_DBInstanceId。
修改zabbix-agentd.conf,添加以下內(nèi)容
[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控制臺導(dǎo)入模板,并關(guān)聯(lián)主機
出處:https://github.com/XWJR-Ops/zabbix-RDS-monitor/blob/master/README.md