• Zabbix 5.0:监控阿里云RDS


    Blog:博客园 个人
    由于近期压测,需要频繁登录阿里云查看RDS监控,每次登录查看监控步骤较为繁琐,故将监控接入到zabbix。

    概述

    由于阿里云已做了RDS的监控,我们只需要通过阿里云SDK把这些监控数据传输到zabbix即可。

    前提

    子账号

    使用阿里云SDK需要一个AK,申请方式如下:

    image-20211028172500213

    • 添加AliyunCloudMonitorReadOnlyAccess权限;

    环境

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

    调用Api示例

    Api:DescribeMetricTop

    • Namespaceacs_rds_dashboard
    • Period默认为60秒,也可以为60的整数倍。

    当前云产品的MetricNameDimensions的取值如下表所示。

    监控项 单位 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"
    }
    

    配置模板

    通过以上示例,很容易通过脚本得到相关监控数据。

    脚本完成后,再导入模板,监控项如下:

    image-20211028173859926

    查看监控数据:

    image-20211028174021744

    监控图如下:

    image-20211028174828895

  • 相关阅读:
    WM_SIZE和WM_MOVE的函数体内容为什么不一样?
    java调用计算机显示文档
    把消息送到默认窗口函数里,并非一点用都没有,可能会产生新的消息(以WM_WINDOWPOSCHANGED为例)
    使用SetWindowPos API函数移动窗口后,还需修改Delphi的属性值,以备下次使用,否则就会出问题(不是API不起作用,而是使用了错误的坐标值)
    Delphi调用WINAPI时到底应该是指针还是结构体(注意是Delphi变量本身就是指针)
    TWinControl.SetBounds与TWinControl.UpdateBounds赏析(定义和调用)
    delphi的取整函数round、trunc、ceil和floor
    2013Esri全球用户大会之互操作和标准
    Delphi判断文件是否正在被使用(CreateFile也可以只是为了读取数据,而不是创建)
    Delphi 的运算符列表,运算符及优先级表格 good
  • 原文地址:https://www.cnblogs.com/Rohn/p/15476930.html
Copyright © 2020-2023  润新知