zabbix經過SDK和API獲取阿里雲RDS的監控數據

阿里雲的RDS自帶的監控系統獲取數據不怎麼直觀,想要經過API獲取數據經過zabbix顯示,由於網上資料缺少和其餘一些緣由,獲取API簽名很困難,但使用阿里雲的SDK能夠完美避開獲取簽名的步驟。html

阿里雲SDK是什麼?python

SDK是阿里云爲用戶提供的開發工具,支持JAVA、PHP、C#等幾種不一樣的語言,這裏是用Python寫的。在Python SDK裏提供了一些模塊,咱們經過調用這些模塊、傳入一些必要的參數能夠簡單的實現數據的獲取。git

阿里雲的sdk就是不少的庫文件,這裏咱們只須要兩個庫文件,一個核心庫sdk-core和rds庫sdk-rds。github

下載地址:https://github.com/aliyun/aliyun-openapi-python-sdkapi

進入sdk-rds所在的目錄運行安裝命令:python setup.py installbash

若出現這個,是setuptools工具沒安裝,下載安裝就能夠工具

import setuptools開發工具

ImportError: No module named setuptoolsui

# 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,以防須要的時候忘記!

相關文章
相關標籤/搜索