• 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,以防需要的时候忘记!

  • 相关阅读:
    Java面试知识点总结
    Log4j常用配置及使用
    Eclipse+tomcat+axis2进行web service部署
    iframe内点击a标签禁止滚动到顶部
    VScode首选项
    Bookmarks
    VScode常用插件
    slideout
    bs-loading
    iPhone X 上删除白条
  • 原文地址:https://www.cnblogs.com/nat-zhu/p/7553133.html
Copyright © 2020-2023  润新知