天天看點

Zabbix 5.0:監控阿裡雲RDS

zabbix監控阿裡雲RDS。

Blog:部落格園 個人

由于近期壓測,需要頻繁登入阿裡雲檢視RDS監控,每次登入檢視監控步驟較為繁瑣,故将監控接入到zabbix。

概述

由于阿裡雲已做了RDS的監控,我們隻需要通過阿裡雲SDK把這些監控資料傳輸到zabbix即可。

前提

子賬号

使用阿裡雲SDK需要一個AK,申請方式如下:

  • 打開RAM 通路控制 (aliyun.com),建立子賬号,選擇Open api調用方式;
  • 得到

    AccessKey ID

    AccessKey Secret

    ;
Zabbix 5.0:監控阿裡雲RDS
  • 添加

    AliyunCloudMonitorReadOnlyAccess

    權限;

環境

  • Python版本:Python3
  • SDK:aliyun-python-sdk-core、aliyun-python-sdk-cms

調用Api示例

Api:DescribeMetricTop

  • Namespace為acs_rds_dashboard。
  • Period預設為60秒,也可以為60的整數倍。

目前雲産品的MetricName和Dimensions的取值如下表所示。

監控項 機關 MetricName Dimensions Statistics
連接配接數使用率 % ConnectionUsage userId、instanceId Maximum、Minimum、Average
CPU使用率 CpuUsage
隻讀執行個體延遲 Second DataDelay
磁盤使用率 DiskUsage
IOPS使用率 IOPSUsage
記憶體使用率 MemoryUsage
MySQL_ActiveSessions Count
MySQL每秒Delete量 CountSecond MySQL_ComDelete
MySQL每秒Insert量 MySQL_ComInsert
MySQL每秒InsertSelect量 MySQL_ComInsertSelect
MySQL每秒Replace量 MySQL_ComReplace
MySQL每秒ReplaceSelect量 MySQL_ComReplaceSelect
MySQL每秒Select量 MySQL_ComSelect
MySQL每秒Update量 MySQL_ComUpdate
MySQL每秒邏輯讀次數 MySQL_IbufRequestR
MySQL每秒邏輯寫次數 MySQL_IbufRequestW
MySQL每秒查詢量 MySQL_QPS
MySQL每秒事務數 MySQL_TPS
SQLServer網絡流入帶寬 bit/s SQLServer_NetworkInNew
SQLServer網絡流出帶寬 SQLServer_NetworkOutNew
MySQL網絡流入帶寬 MySQL_NetworkInNew Average、Minimum、Maximum
MySQL網絡流出帶寬 MySQL_NetworkOutNew
MySQL_BP髒頁百分率 MySQL_IbufDirtyRatio Average、Maximum、Minimum
MySQL_BP使用率 MySQL_IbufUseRatio
MySQL_InnoDB每秒讀取資料量 KByte MySQL_InnoDBDataRead
MySQL_InnoDB每秒寫入資料量 MySQL_InnoDBDataWritten
MySQL每秒建立臨時表數量 MySQL_TempDiskTableCreates
MySQL_InnoDB每秒更新行數 MySQL_InnoDBRowUpdate
MySQL_InnoDB每秒插入行數 MySQL_InnoDBRowInsert
MySQL_InnoDB每秒删除行數 MySQL_InnoDBRowDelete
MySQL_InnoDB每秒讀取行數 MySQL_InnoDBRowRead
MySQL_InnoDB每秒日志fsync量 MySQL_InnoDBLogFsync
MySQL_InnoDB每秒日志實體寫次數 MySQL_InnoDBLogWrites
MySQL_InnoDB每秒日志寫請求次數 MySQL_InnoDBLogWriteRequests
MySQL每秒慢查詢量 MySQL_SlowQueries
MySQL_BP讀命中率 MySQL_IbufReadHit
MySQL每秒實體讀次數 MySQL_ibufPoolReads
MySQL_資料磁盤使用量 MB MySQL_DataDiskSize
MySQL_執行個體磁盤使用量 MySQL_InstanceDiskSize
MySQL_日志磁盤使用量 MySQL_LogDiskSize
MySQL_其他磁盤使用量 MySQL_OtherDiskSize
MySQL_臨時磁盤使用量 MySQL_TmpDiskSize
MySQL_ProxyCpu使用率 MySQL_ProxyCpuUsage
隻讀執行個體IO線程狀态 Value MySQL_SlaveIORunning
隻讀執行個體SQL線程狀态 MySQL_SlaveSQLRunning
MySQL_線程連接配接數 MySQL_ThreadsConnected
MySQL_活躍線程數 MySQL_ThreadsRunning

腳本示例:

#!/usr/bin/env python3
#coding=utf-8

from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.acs_exception.exceptions import ClientException
from aliyunsdkcore.acs_exception.exceptions import ServerException
from aliyunsdkcore.auth.credentials import AccessKeyCredential
from aliyunsdkcore.auth.credentials import StsTokenCredential
from aliyunsdkcms.request.v20190101.DescribeMetricTopRequest import DescribeMetricTopRequest

credentials = AccessKeyCredential('<your-access-key-id>', '<your-access-key-secret>')
# use STS Token
# credentials = StsTokenCredential('<your-access-key-id>', '<your-access-key-secret>', '<your-sts-token>')
client = AcsClient(region_id='cn-hangzhou', credential=credentials)

request = DescribeMetricTopRequest()
request.set_accept_format('json')

request.set_Namespace("acs_rds_dashboard")
request.set_MetricName("CpuUsage")
request.set_Orderby("Maximum")
request.set_Dimensions("[{\"instanceId\":\"rm-b*****qc\"}]")

response = client.do_action_with_exception(request)
# python2:  print(response) 
print(str(response, encoding='utf-8'))
           

輸出結果如下:

{
  "RequestId": "D0237455-0978-532A-AG95-C1DG8CD83346",
  "Period": "60",
  "Datapoints": "[{\"order\":1,\"timestamp\":1635413400000,\"userId\":\"1862599732974435\",\"instanceId\":\"rm-b*****c\",\"Maximum\":14.95,\"Minimum\":14.95,\"Average\":14.95,\"_count\":1.0}]",
  "Code": "200"
}
           

配置模闆

通過以上示例,很容易通過腳本得到相關監控資料。

腳本完成後,再導入模闆,監控項如下:

Zabbix 5.0:監控阿裡雲RDS

檢視監控資料:

Zabbix 5.0:監控阿裡雲RDS

監控圖如下:

Zabbix 5.0:監控阿裡雲RDS

繼續閱讀