Chinaunix首页 | 论坛 | 博客
  • 博客访问: 29604
  • 博文数量: 4
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 42
  • 用 户 组: 普通用户
  • 注册时间: 2016-02-23 09:46
文章分类

全部博文(4)

文章存档

2018年(3)

2016年(1)

我的朋友

分类: Python/Ruby

2018-01-26 11:09:56

前两天看了下阿里云api的使用,测试了下使用api获取RDS性能监控数据,中间遇到了些坑,在此记录一下,以警后人!

前言 阿里云api使用

RDS和ECS的API使用方法相同,都是先生成request对象,然后set各种属性,最后通过AcsClient对象实现request请求获取response消息体即可。下边直接上实例代码:

点击(此处)折叠或打开

  1. from aliyunsdkrds.request.v20140815 import DescribeDBInstancesRequest
  2. from aliyunsdkrds.request.v20140815 import DescribeDBInstancePerformanceRequest

  3. time_format = "%Y-%m-%dT%H:%MZ"
  4. ……

  5. def getPerformance(client, n_minutes_before):
  6.     m15_before = timeDelta(n_minutes_before)
  7.     request = DescribeDBInstancePerformanceRequest.DescribeDBInstancePerformanceRequest()
  8.     request.set_DBInstanceId("rm-xxxxxxxxxxxx")
  9.     request.set_Key("MySQL_IOPS")
  10.     request.set_StartTime(m15_before)
  11.     request.set_EndTime(current_time)
  12.     request.set_action_name("DescribeDBInstancePerformance")
  13.     response = client.do_action_with_exception(request)
  14.     response = json.loads(response)
  15.     print(response)

坑之一

StartTime和EndTime的时间格式。
必须是ISO8601时间格式,形如“YYYY-mm-ddTHH:MMZ”(注意:只能到分钟,如果精确到秒回报错。。);
必须是UTC时区,由于我们这边跟UTC时区时间相差8小时,当前时间需要转换一下,如:

点击(此处)折叠或打开

  1. current_time = (datetime.now()-timedelta(hours=8)).strftime(time_format)


坑之二

无法获取实时数据。
如果是通用型RDS,最多只能获取5分钟之前的数据,想要将刷新频率设置到1m/次需要额外收费。。

阅读(1142) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~