Zabbix 5.0:监控阿里云RDS
Blog:博客园 个人
由于近期压测,需要频繁登录阿里云查看RDS监控,每次登录查看监控步骤较为繁琐,故将监控接入到zabbix。
概述
由于阿里云已做了RDS的监控,我们只需要通过阿里云SDK把这些监控数据传输到zabbix即可。
前提
子账号
使用阿里云SDK需要一个AK,申请方式如下:
- 打开RAM 访问控制 (aliyun.com),创建子账号,选择Open api调用方式;

- 得到
AccessKey ID和AccessKey Secret;

- 添加
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 | userId、instanceId | Maximum、Minimum、Average |
| 只读实例延迟 | Second | DataDelay | userId、instanceId | Maximum、Minimum、Average |
| 磁盘使用率 | % | DiskUsage | userId、instanceId | Maximum、Minimum、Average |
| IOPS使用率 | % | IOPSUsage | userId、instanceId | Maximum、Minimum、Average |
| 内存使用率 | % | MemoryUsage | userId、instanceId | Maximum、Minimum、Average |
| MySQL_ActiveSessions | Count | MySQL_ActiveSessions | userId、instanceId | Maximum、Minimum、Average |
| MySQL每秒Delete量 | CountSecond | MySQL_ComDelete | userId、instanceId | Maximum、Minimum、Average |
| MySQL每秒Insert量 | CountSecond | MySQL_ComInsert | userId、instanceId | Maximum、Minimum、Average |
| MySQL每秒InsertSelect量 | CountSecond | MySQL_ComInsertSelect | userId、instanceId | Maximum、Minimum、Average |
| MySQL每秒Replace量 | CountSecond | MySQL_ComReplace | userId、instanceId | Maximum、Minimum、Average |
| MySQL每秒ReplaceSelect量 | CountSecond | MySQL_ComReplaceSelect | userId、instanceId | Maximum、Minimum、Average |
| MySQL每秒Select量 | CountSecond | MySQL_ComSelect | userId、instanceId | Maximum、Minimum、Average |
| MySQL每秒Update量 | CountSecond | MySQL_ComUpdate | userId、instanceId | Maximum、Minimum、Average |
| MySQL每秒逻辑读次数 | CountSecond | MySQL_IbufRequestR | userId、instanceId | Maximum、Minimum、Average |
| MySQL每秒逻辑写次数 | CountSecond | MySQL_IbufRequestW | userId、instanceId | Maximum、Minimum、Average |
| MySQL每秒查询量 | CountSecond | MySQL_QPS | userId、instanceId | Maximum、Minimum、Average |
| MySQL每秒事务数 | CountSecond | MySQL_TPS | userId、instanceId | Maximum、Minimum、Average |
| SQLServer网络流入带宽 | bit/s | SQLServer_NetworkInNew | userId、instanceId | Maximum、Minimum、Average |
| SQLServer网络流出带宽 | bit/s | SQLServer_NetworkOutNew | userId、instanceId | Maximum、Minimum、Average |
| MySQL网络流入带宽 | bit/s | MySQL_NetworkInNew | userId、instanceId | Average、Minimum、Maximum |
| MySQL网络流出带宽 | bit/s | MySQL_NetworkOutNew | userId、instanceId | Average、Minimum、Maximum |
| MySQL_BP脏页百分率 | % | MySQL_IbufDirtyRatio | userId、instanceId | Average、Maximum、Minimum |
| MySQL_BP利用率 | % | MySQL_IbufUseRatio | userId、instanceId | Average、Maximum、Minimum |
| MySQL_InnoDB每秒读取数据量 | KByte | MySQL_InnoDBDataRead | userId、instanceId | Average、Maximum、Minimum |
| MySQL_InnoDB每秒写入数据量 | KByte | MySQL_InnoDBDataWritten | userId、instanceId | Average、Maximum、Minimum |
| MySQL每秒创建临时表数量 | CountSecond | MySQL_TempDiskTableCreates | userId、instanceId | Average、Maximum、Minimum |
| MySQL_InnoDB每秒更新行数 | CountSecond | MySQL_InnoDBRowUpdate | userId、instanceId | Average、Maximum、Minimum |
| MySQL_InnoDB每秒插入行数 | CountSecond | MySQL_InnoDBRowInsert | userId、instanceId | Average、Maximum、Minimum |
| MySQL_InnoDB每秒删除行数 | CountSecond | MySQL_InnoDBRowDelete | userId、instanceId | Average、Maximum、Minimum |
| MySQL_InnoDB每秒读取行数 | CountSecond | MySQL_InnoDBRowRead | userId、instanceId | Average、Maximum、Minimum |
| MySQL_InnoDB每秒日志fsync量 | CountSecond | MySQL_InnoDBLogFsync | userId、instanceId | Average、Maximum、Minimum |
| MySQL_InnoDB每秒日志物理写次数 | CountSecond | MySQL_InnoDBLogWrites | userId、instanceId | Average、Maximum、Minimum |
| MySQL_InnoDB每秒日志写请求次数 | CountSecond | MySQL_InnoDBLogWriteRequests | userId、instanceId | Average、Maximum、Minimum |
| MySQL每秒慢查询量 | CountSecond | MySQL_SlowQueries | userId、instanceId | Average、Maximum、Minimum |
| MySQL_BP读命中率 | % | MySQL_IbufReadHit | userId、instanceId | Average、Maximum、Minimum |
| MySQL每秒物理读次数 | CountSecond | MySQL_ibufPoolReads | userId、instanceId | Average、Maximum、Minimum |
| MySQL_数据磁盘使用量 | MB | MySQL_DataDiskSize | userId、instanceId | Average、Maximum、Minimum |
| MySQL_实例磁盘使用量 | MB | MySQL_InstanceDiskSize | userId、instanceId | Average、Maximum、Minimum |
| MySQL_日志磁盘使用量 | MB | MySQL_LogDiskSize | userId、instanceId | Average、Maximum、Minimum |
| MySQL_其他磁盘使用量 | MB | MySQL_OtherDiskSize | userId、instanceId | Average、Maximum、Minimum |
| MySQL_临时磁盘使用量 | MB | MySQL_TmpDiskSize | userId、instanceId | Average、Maximum、Minimum |
| MySQL_ProxyCpu使用率 | % | MySQL_ProxyCpuUsage | userId、instanceId | Average、Maximum、Minimum |
| 只读实例IO线程状态 | Value | MySQL_SlaveIORunning | userId、instanceId | Average、Maximum、Minimum |
| 只读实例SQL线程状态 | Value | MySQL_SlaveSQLRunning | userId、instanceId | Average、Maximum、Minimum |
| MySQL_线程连接数 | Count | MySQL_ThreadsConnected | userId、instanceId | Average、Maximum、Minimum |
| MySQL_活跃线程数 | Count | MySQL_ThreadsRunning | userId、instanceId | Average、Maximum、Minimum |
脚本示例:
#!/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 监控阿里云RDS
简介 Zabbix 监控阿里云RDS数据库.主要通过阿里云提供的API来进行监控. 需要在阿里云获取“用户AccessKey”指定ID,进行RDS监控. 环境 服务:Zabbix 3.0.28.zab ...
- Zabbix 5.0:通过LLD方式自动化监控阿里云RDS
Blog:博客园 个人 之前做了RDS监控,由于 RDS 实例梳理增多,手动添加的方式已经不够效率,故改为LLD(Low-level discovery)方式做监控. 什么是LLD LLD(Low-l ...
- zabbix自定义监控阿里云RDS服务
zabbix自定义监控rds zabbix通过阿里云api 自动发现.监控阿里云RDS-Mysql数据库 注意事项 脚本会收集RDS别名, 不要默认别名 不要使用中文别名(zabbix不识别) ...
- 为更强大而生的开源关系型数据库来了!阿里云RDS for MySQL 8.0 正式上线!
2019年5月29日15时,阿里云RDS for MySQL 8.0正式上线,使得阿里云成为紧跟社区步伐,发布MySQL最新版本的云厂商.RDS for MySQL 8.0 产品是阿里云推出的 MyS ...
- 阿里云RDS for SQL Server使用的一些最佳实践
了解RDS的概念 这也是第一条,也是最重要的一条,在使用某项产品和服务之前,首先要了解该产品或服务的功能与限制,就像你买一个冰箱或洗衣机,通常也只有在阅读完说明书之后才能利用起来它们的所以功能,以及使 ...
- 【故障公告】升级阿里云 RDS SQL Server 实例故障经过
昨天晚上,我们使用的阿里云 RDS SQL Server 2008 R2 实例突然出现持续 CPU 100% 问题,后来我们通过重启实例恢复了正常(详见故障公告).但是在恢复正常后发现了新问题,这台 ...
- 使用阿里云RDS for SQL Server性能洞察优化数据库负载-初识性能洞察
简介 数据库性能调优通常需要较高数据库水平,并伴随较多的前期准备工作,比如收集各种性能基线.不同种类的性能指标.慢SQL日志等,这通常费时费力且效果一般,当面对多个数据库时总体拥有成本会大幅增加.今天 ...
- 抱歉!15:44-16:39阿里云RDS故障造成全站不能正常访问
非常非常抱歉!2016年3月7日15:44-16:39,由于阿里云RDS(云数据库)故障,造成全站不能正常访问,给您带来了很大很大的麻烦,恳请您的谅解! 故障是在15:44开始出现的,应用日志中出现大 ...
- 云计算之路-阿里云上:数据库连接数过万的真相,从阿里云RDS到微软.NET Core
在昨天的博文中,我们坚持认为数据库连接数过万是阿里云RDS的问题,但后来阿里云提供了当时的数据库连接情况,让我们动摇了自己的想法. 帐户 连接数 A 4077 B 3995 C 741 D 698 E ...
随机推荐
- Devexpress TreeList控件使用
增加显示列treeList1.Columns.Add(new TreeListColumn {Caption = "城市", FieldName = "Name" ...
- css对角渐变
html: <div class="hh"> </div> css: .hh{ width: 500px; height: 500px; backgroun ...
- PHP的Sodium加密扩展函数了解
这是本次加密扩展系列的最后一篇文章,也是我们要学习了解的最后一个 PHP 加密扩展.Sodium 出现的目的也是为了代替 Mcrypt 这个原来的加密扩展.在 PHP7.2 之后,Mcrypt 已经被 ...
- 🤩全套Java教程_Java基础入门教程,零基础小白自学Java必备教程👻002 # 第二单元 常量,变量,数据类型 #
一.本单元知识点概述 二.本单元目标 (Ⅰ)重点知识目标 1.定义出各种数据类型的变量2.理解自动类型提升3.理解强制类型转换 (Ⅱ)能力目标 1.能够定义出所有类型的常量 2.理解Java中的基本数 ...
- Jmeter集合点技术
集合点简介 好比小学时候做广播体操,先让大家集合,等到时间统一开始做体操. 创建集合点 同步定时器 同时签到 注意:作用域 参数设置 用户数 为0 具体数值,不能大于 超时时间 为0,没有超时时间 具 ...
- 定要过python二级 选择题第5套
1. 2.. 3. https://zhidao.baidu.com/question/1952133724016713828.html 4. 5. 6. 7. 8. 9. 10. 11.
- c++ 的学习 第二集函数的重载之3 -利用IDA分析bebug里面
1. 对项目右击,在文件资源管理器中打开文件夹 2.看debug里面的.exe 这个文件 函数的真实的名字 打开.exe文件就是还是显示,,, 3.debug模式有太多的断点信息还有许多不精简 ...
- 【大咖直播】Elastic 企业搜索实战工作坊(第一期)
借助 App Search 提供的内置功能,您可轻松打造卓越的搜索体验.直观的相关度调整以及开箱即用的搜索分析,不仅可以优化所提供的内容,其提供的 API 还可帮助您将位于各处的所有内容源关联在一起. ...
- sessionId在小程序中的妙用
前言:小程序发送短信验证码需要在后台储存生成的code,一次会话应放入session中,请求头部发送sessionId验证为同一session 1.页面一加载就从后台获取sessionId,储存在本地 ...
- Cookbook:pandas的学习之路——10 Minutes to pandas
按照pandas官网上10 Minutes to pandas的快速练习: 一 .对象创建: 导入练习所需要的工具包: 通过列表中的值创建序列Series,pandas在创建序列的同时会默认为列表中值 ...