zoukankan      html  css  js  c++  java
  • zabbix通过SDK和API获取阿里云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

    进入sdk-rds所在的目录运行安装命令:python setup.py install

    若出现这个,是setuptools工具没安装,下载安装就可以

    import setuptools

    ImportError: No module named setuptools

    # wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz
    # tar -xvf setuptools-0.6c11.tar.gz
    # cd setuptools-0.6c11
    # python setup.py build
    # python setup.py install
    # ls -l /usr/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg 

    再次进入aliyun-python-sdk-rds目录,执行python setup.py install,同样进入aliyun-python-sdk-core,执行python setup.py install安装。

    这时我们已经装好了阿里云sdk库环境

    在aliyun-python-sdk-rds/aliyunsdkrds/request/v20140815路径下有大量的sdk-rds  api库文件,我们调用这里的库文件来查找其需要的参数的设置方法和发送请求。

    调用阿里云的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。

    于是我们创建请求并设置参数set_DBInstanceId:

    request = DescribeResourceUsageRequest.DescribeResourceUsageRequest()
    
    request.set_DBInstanceId('rm-bpXXXXXXXX')
    

      

    然后创建rds实例的AcsClient对象。

    client = AcsClient(
    AcesskeyID,
    AcesskeySecret,
    regionid)

    最后在通过do_action_with_exception发送请求

     client.do_action_with_exception(request)

    完整代码如下:

    #!/usr/bin/python
    #encoding=utf-8
    
    from aliyunsdkcore.client import AcsClient
    from aliyunsdkcore.acs_exception.exceptions import ClientException
    from aliyunsdkcore.acs_exception.exceptions import ServerException
    from aliyunsdkrds.request.v20140815 import DescribeResourceUsageRequest
    
    AcesskeyID = 'XXXXXXXXXXXXX'
    AcesskeySecret = 'XXXXXXXXXXXXXXXXXX'
    regionid = ‘XXXXXXXXXXX’
    client = AcsClient(         
        AcesskeySecret,
        regionid)
    request = DescribeResourceUsageRequest.DescribeResourceUsageRequest()
    
    request.set_DBInstanceId('rm-bp1XXXXXXXXXXXXX')   
    response = client.do_action_with_exception(request)
    
    print response
    ~              
    

     感谢我们的老司机城管哥的指导!!!

    OVER

    Mark,以防需要的时候忘记!

  • 相关阅读:
    POJ 3710 Christmas Game#经典图SG博弈
    POJ 2599 A funny game#树形SG(DFS实现)
    POJ 2425 A Chess Game#树形SG
    LeetCode Array Easy 122. Best Time to Buy and Sell Stock II
    LeetCode Array Easy121. Best Time to Buy and Sell Stock
    LeetCode Array Easy 119. Pascal's Triangle II
    LeetCode Array Easy 118. Pascal's Triangle
    LeetCode Array Easy 88. Merge Sorted Array
    ASP.NET MVC 学习笔记之 MVC + EF中的EO DTO ViewModel
    ASP.NET MVC 学习笔记之面向切面编程与过滤器
  • 原文地址:https://www.cnblogs.com/nat-zhu/p/7553133.html
Copyright © 2011-2022 走看看