通过zabbix监控华为云RDS

通过zabbix监控华为云RDS思路通过华为云RDS实例列表接口获取RDS实例,用于资源的自动发现通过华为云CES获取监控数据准准备工作用于访问华为云的AK/SKpython3环境用于调用华为云api的相关模块依...

一、思路

  • 通过华为云RDS实例列表接口获取RDS实例,用于资源的自动发现

  • 通过华为云CES获取监控数据准

二、准备工作

  • 用于访问华为云的AK/SK

    CjG9Xp9T6385698e207fe.png

三、编写实例自动发现脚本

 #!/bin/python3
 # coding: utf-8
 from huaweicloudsdkcore.auth.credentials import BasicCredentials
 from huaweicloudsdkrds.v3.region.rds_region import RdsRegion
 from huaweicloudsdkcore.exceptions import exceptions
 from huaweicloudsdkrds.v3 import *
 import json
 if __name__ == "__main__":
     #这里填访问密钥
     ak = ""
     sk = ""
 
     credentials = BasicCredentials(ak, sk) \
 
     client = RdsClient.new_builder() \
        .with_credentials(credentials) \
        .with_region(RdsRegion.value_of("cn-north-4")) \
        .build()
 
     try:
         request = ListInstancesRequest()
         response = client.list_instances(request)
         response = json.loads(str(response))
         #拼接成用于自动发现的json数据,id为RDS的实例ID,name为RDS的名称
         r = []
         for i in response['instances']:
               buf = {'{#INSTANCE}':i['id'],'{#INSTANCE_NANME}':i['name']}
               r.append(buf)
         print(json.dumps({"data":r}))
 
     except exceptions.ClientRequestException as e:
         print(e.status_code)
         print(e.request_id)
         print(e.error_code)
         print(e.error_msg)

四、编写监控数据获取脚本

 #!/bin/python3
 # coding: utf-8
 from huaweicloudsdkcore.auth.credentials import BasicCredentials
 from huaweicloudsdkces.v1.region.ces_region import CesRegion
 from huaweicloudsdkcore.exceptions import exceptions
 from huaweicloudsdkces.v1 import *
 import json
 import time
 import sys
 #传入的监控项
 key = sys.argv[1]
 #请求时间戳
 from_time = int(round(time.time() * 1000)-300000)
 to_time = int(round(time.time() * 1000))
 if __name__ == "__main__":
     #这里填访问密钥
     ak = ""
     sk = ""
 
     credentials = BasicCredentials(ak, sk) \
 
     client = CesClient.new_builder() \
        .with_credentials(credentials) \
        .with_region(CesRegion.value_of("cn-north-4")) \
        .build()
 
     try:
         request = BatchListMetricDataRequest()
         listDimensionsMetrics = [
             MetricsDimension(
                 name="rds_cluster_id",
                 #这里是实例ID,可改为变量,模板宏即{HOST.HOST}
                 value=""
            )
        ]
         listMetricsbody = [
             MetricInfo(
                 namespace="SYS.RDS",
                 metric_name=key,
                 dimensions=listDimensionsMetrics
            )
        ]
         request.body = BatchListMetricDataRequestBody(
             to=to_time,
             _from=from_time,
             filter="max",
             period="1",
             metrics=listMetricsbody
        )
         response = client.batch_list_metric_data(request)
         res = json.loads(str(response))
         instance = json.dumps(res)
         instances = json.loads(instance)['metrics']
         for i in instances:
             #取最新的一个值
               print(i['datapoints'][0]['max'])
               #print(i)
 
     except exceptions.ClientRequestException as e:
         print(0)
         #print(e.request_id)
         #print(e.error_code)
         #print(e.error_msg)
         

五、新增模板

  • 新增自动发现规则,用于实例自动发现

    6y7SOn3t638569c069661.png

  • 自动发现规则,链接监控数据获取模板

    bwE3UI5r63856a27cebce.pngFYXbyrTN63856a391fe43.png

六、验证

  • 验证是否可以正常发现实例

    新增主机,链接华为云RDS自动扫描模板后,点自动发现规则,可以正常获取到数据

    imHi2xG563856a53380c4.png

  • 验证监控数据是否获取正常

    点击发现出来实例,测试监控项可以正常获取到数据

    AEbJc4pG63856a6658bc6.png

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
细雨闲花
细雨闲花

11 篇文章

作家榜 »

  1. 乐维君 397 文章
  2. YOHOHO 14 文章
  3. 机灵小和尚 13 文章
  4. 我是一只小菜鸡 12 文章
  5. 细雨闲花 11 文章
  6. 。。。 9 文章
  7. 御前侍卫张五哥 9 文章
  8. 小黄人 8 文章