1. 程式人生 > 其它 >zabbix通過API監控RDS

zabbix通過API監控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

二.具體操作

1.進入sdk-rds所在的目錄執行安裝命令:python setup.py install
若出現這個,是setuptools工具沒安裝,下載安裝就可以
import setuptools
ImportError: No module named setuptools
wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz
tar -xvf setuptools-0.6c11.tar.gz
cd setuptools-0.6c11
python setup.py build
python setup.py install


ls -l /usr/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg

2.再次進入aliyun-python-sdk-rds目錄,執行python setup.py install,同樣進入aliyun-python-sdk-core,執行python setup.py install安裝。

這時我們已經裝好了阿里雲sdk庫環境

3.在aliyun-python-sdk-rds/aliyunsdkrds/request/v20140815路徑下有大量的sdk-rds api庫檔案,我們呼叫這裡的庫檔案來查詢其需要的引數的設定方法和傳送請求。

呼叫阿里雲的sdk分為三個步驟:

建立 AcsClient 例項並初始化;AcsClient即請求rds的例項,包括accesskeyid、accesskeysecret和regionid。
建立 API 請求並設定引數;這裡的引數是除了公共引數之外所需要的所有引數,在阿里雲文件上檢視:https://help.aliyun.com/document_detail/26279.html?spm=5176.doc26224.6.868.xHBXXo
發起請求並列印返回。

4.舉個例子:
我想檢視rds例項的資源使用情況。檢視阿里雲文件得知,其請求引數有兩個:Action :DescribeResourceUsage和DBInstanceId:例項名。

我們進入aliyun-python-sdk-rds/aliyunsdkrds/request/v20140815下的DescribeResourceUsageRequest.py庫檢視DBInstanceId的設定方法為set_DBInstanceId。

於是我們建立請求並設定引數set_DBInstanceId:

request = DescribeResourceUsageRequest.DescribeResourceUsageRequest()
request.set_DBInstanceId('rm-bpXXXXXXXX')

然後建立rds例項的AcsClient物件。

client = AcsClient(
AcesskeyID,
AcesskeySecret,
regionid)

最後在通過do_action_with_exception傳送請求

client.do_action_with_exception(request)

完整程式碼如下:

#!/usr/bin/python
#encoding=utf-8
 
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.acs_exception.exceptions import ClientException
from aliyunsdkcore.acs_exception.exceptions import ServerException
from aliyunsdkrds.request.v20140815 import DescribeResourceUsageRequest
 
AcesskeyID = 'XXXXXXXXXXXXX'
AcesskeySecret = 'XXXXXXXXXXXXXXXXXX'
regionid = ‘XXXXXXXXXXX’
client = AcsClient(        
    AcesskeySecret,
    regionid)
request = DescribeResourceUsageRequest.DescribeResourceUsageRequest()
 
request.set_DBInstanceId('rm-bp1XXXXXXXXXXXXX')  
response = client.do_action_with_exception(request)
 
print response
本文版權歸作者所有,歡迎轉載,請務必新增原文連結。