zabbix通過SDK和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

進入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 

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

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

在aliyun-python-sdk-rds/aliyunsdkrds/request/v20140815路徑下有大量的sdk-rds  api庫文件,我們調用這里的庫文件來查找其需要的參數的設置方法和發送請求。

調用阿里雲的sdk分為三個步驟:

  1. 創建 AcsClient 實例並初始化;AcsClient即請求rds的實例,包括accesskeyid、accesskeysecret和regionid。
  2. 創建 API 請求並設置參數;這里的參數是除了公共參數之外所需要的所有參數,在阿里雲文檔上查看:https://help.aliyun.com/document_detail/26279.html?spm=5176.doc26224.6.868.xHBXXo
  3. 發起請求並打印返回。

舉個例子:

我想查看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
~              

 感謝我們的老司機城管哥的指導!!!

 

OVER

 

 

 

 

Mark,以防需要的時候忘記!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM