阿里云的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