Zabbix 監控阿裡雲RDS

2020-08-11 16:11:57

簡介

Zabbix 監控阿裡雲RDS數據庫、主要通過阿裡雲提供的API來進行監控。

需要在阿裡雲獲取「使用者AccessKey」指定ID,進行RDS監控。

環境

  • 服務:Zabbix 3.0.28、zabbix-agent  2.4.7
  • 系統:Linux Centos7/Redhat7
  • 依賴:python 2.7、git 2.7.4

部署

zabbix-agent 端操作

1、通過pip2.7安裝阿裡雲RDS監控模組

pip2.7 install aliyun-python-sdk-core==2.3.5 aliyun-python-sdk-rds datetime

pip2 list | grep aliyun
aliyun-python-sdk-core 2.3.5    
aliyun-python-sdk-rds  2.3.10   

2、建立存放RDS組態檔的目錄、並進入到該目錄下

mkdir /etc/zabbix/zabbix_agentd.conf.d/scripts/
cd /etc/zabbix/zabbix_agentd.conf.d/scripts/

3、通過git下載官方提供的RDS檔案

git clone https://github.com/XWJR-Ops/zabbix-RDS-monitor

檢視下載檔案

4、將兩個RDS指令碼移動到scripts目錄下

mv check_rds.py ../
mv discovery_rds.py ../

5、登陸阿裡雲

從阿裡雲控制檯獲取 AccessKey

注:總共有 不同的兩個 ID 與 Secret的值,在建立過程中會顯示。

 

 6、修改兩個RDS指令碼中的 ID 與 Secret 值、地區按照範例地區爲主。

vim check_rds.py

vim discovery_rds.py

复制代码

#coding=utf-8
#Auther:xwjr.com
from aliyunsdkcore import client
....

ID = 'LTAI4FuxxxxxxxwD4e775Bci'
Secret = 'nPinBRO1xxxxxxx6KIiTcpO0vk'
RegionId = 'cn-shenzhen'
....

复制代码

7、將指令碼新增到組態檔當中

vim /etc/zabbix/zabbix_agentd.conf

UnsafeUserParameters=1
UserParameter=rds.discovery,/usr/bin/python2.7 /etc/zabbix/zabbix_agentd.conf.d/scripts/discovery_rds.py
UserParameter=check.rds[*],/usr/bin/python2.7 /etc/zabbix/zabbix_agentd.conf.d/scripts/check_rds.py $1 $2 $3

8、重新啓動zabbix-agent服務

systemctl restart zabbix-agentd

9、將zabbix-RDS-monitor目錄下的zbx_AliyunRds_templates.xml模板匯入到zabbix系統中

 

 10、檢視監控項

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

另:

 

zabbix-RDS-monitor

Aliyun RDS-mysql status monitor with zabbix

zabbix通過阿裡雲api 自動發現、監控阿裡雲RDS-Mysql數據庫  
本版本數據的圖表展示,是以監控項進行分組,後期會再發布以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. 指令碼會收集RDS別名,
  2. 不要預設別名
  3. 不要使用中文別名(zabbix不識別)
  4. 切記aliyun-python-sdk-core==2.3.5,新版本的sdk有bug

環境要求

python = 2.7

模組安裝

/usr/bin/pip2.7 install aliyun-python-sdk-core==2.3.5 aliyun-python-sdk-rds datetime

使用方法

  1. 從阿裡雲控制檯獲取 AccessKey ,並修改指令碼中的 ID 與 Secret
  2. 修改區域 RegionId
  3. 將兩個指令碼放置於以下目錄。
  4. /etc/zabbix/script chmod +x /etc/zabbix/script/*
  5. 呼叫阿裡雲的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。

  1. 修改zabbix-agentd.conf,新增以下內容

 
  1. #rds

  2. UserParameter=rds.discovery,/usr/local/python2.7/bin/python2.7 /etc/zabbix/script/discovery_rds.py

  3. UserParameter=check.rds[*],/usr/local/python2.7/bin/python2.7 /etc/zabbix/script/check_rds.py $1 $2 $3

  1. 重新啓動zabbix-agent
  2. zabbix控制檯匯入模板,並關聯主機
  3. 出處:https://github.com/XWJR-Ops/zabbix-RDS-monitor/blob/master/README.md