阅读835 返回首页    go 阿里云


监控数据上报__自定义监控_用户指南_云监控-阿里云

您可以使用API或SDK上报监控数据。

注意事项

  • SDK支持python(2.6 +)与bash

SDK上报数据

参数说明

  • userid,是用户的账号ID
  • 监控项名称:创建监控项时填写的“监控项名称”。
  • 监控项值:监控项对应的监控数据。
  • 字段信息:创建监控项时填写的“字段信息”和它的值。这个参数用于对数据区分维度。

使用步骤

  1. 下载SDK

    a.自定义监控SDK(python版) :cms_post.py

    b. 自定义监控SDK(bash版) :cms_post.sh

  2. 编写脚本。

    a. 在用户的脚本中,import cms_post,调用cms_post的post方法推送数据到云监控。

    b. post方法中传入4个参数,分别为userid, 监控项名称,监控项值,字段信息,您只需添加定时任务即可。

  3. 定时调度脚本,按创建监控项时定义的上报周期上报数据。Linux环境可以使用Crontab,Windows环境可以使用quartz.net。

  4. 补充说明:请在您的脚本开始处添加对应的解释器,一般默认#!/usr/bin/python,在test.py中,import cms_post,然后调用cms_post.post()上报您的监控数据。请将您的test.py文件和cms_post.py文件放在同一文件夹下,避免import时发生错误。

脚本示例(Python+linux环境)

  1. #!/usr/bin/python
  2. import cms_post
  3. def get_mem_usage_percent():
  4. try:
  5. f = open('/proc/meminfo', 'r')
  6. for line in f:
  7. if line.startswith('MemTotal:'):
  8. mem_total = int(line.split()[1])
  9. elif line.startswith('MemFree:'):
  10. mem_free = int(line.split()[1])
  11. elif line.startswith('Buffers:'):
  12. mem_buffer = int(line.split()[1])
  13. elif line.startswith('Cached:'):
  14. mem_cache = int(line.split()[1])
  15. elif line.startswith('SwapTotal:'):
  16. vmem_total = int(line.split()[1])
  17. elif line.startswith('SwapFree:'):
  18. vmem_free = int(line.split()[1])
  19. else:
  20. continue
  21. f.close()
  22. except:
  23. return None
  24. physical_percent = usage_percent(mem_total - (mem_free + mem_buffer + mem_cache), mem_total)
  25. virtual_percent = 0
  26. if vmem_total > 0:
  27. virtual_percent = usage_percent((vmem_total - vmem_free), vmem_total)
  28. return physical_percent
  29. def usage_percent(use, total):
  30. try:
  31. ret = (float(use) / total) * 100
  32. except ZeroDivisionError:
  33. raise Exception("ERROR - zero division error")
  34. return ret
  35. MEMS_usage=get_mem_usage_percent()
  36. if __name__ == '__main__':
  37. cms_post.post("1058019241820815","MEMS_usage",MEMS_usage,"Percent","ecsinstanceId=i-28zdkoobp")

API上报数据

用户可以使用云监控接口 https://open.cms.aliyun.com/metrics/put 上报监控数据。

参数说明

  • metricName:创建监控项时填写的“监控项名称”。
  • unit:创建监控项时填写的“单位”。
  • dimensions:创建监控项时填写的“字段信息”,允许多个,使用半角逗号分隔。
  • namespace:格式为“ACS/CUSTOM/userId”,将userid替换为您的账号ID。
  • userId:即您的账号ID
  • timestamp:数据上传的时间,支持两种表示方式:一种方式取时间的长整型表示方式1395556197448,另一种方式按照 ISO8601 标准表示,并使用 UTC 时间,例如 2014-9-11T10:00:00Z,注意它对应的北京时间是 2014-09-11 18:00:00。

Post方式

用户可以一次提交多条统计数据,统计数据放在消息体中,遵循 JSON 格式。如消息体内容:

  1. userId=123456&namespace=acs/custom/123456&metrics =
  2. [{"metricName":"vm.cpu","timestamp":"1395556197448","value":80.0,"unit":"Percen
  3. t","dimensions":{"instanceId":"vm_001"}}]

GET方式

用户可以一次提交多条统计数据,统计数据存放在 metrics 字段中,遵循 JSON 格式。

  1. https://open.cms.aliyun.com
  2. /metrics/put?userId=123456&namespace=acs/custom/123456&metrics=[{"metricName":
  3. "vm.cpu","timestamp":"1395556197448","value":80.0,"unit":"Percent","dimensions"
  4. :{"instanceId":"vm_001"}},{"metricName":"vm.mem","timestamp":"1395556197448","v
  5. alue":1280.0,"unit":"Megabytes","dimensions":{"instanceId":"vm_002"}}]

响应消息

云监控收到HTTP请求后,若处理成功则直接返回状态码为200的HTTP响应,消息体中不携带内容,用户也不需要处理响应消息。若处理失败,返回 JSON 格式的消息体,同时HTTP响应的状态码不为200。

错误 错误描述 HTTP Status Code
InternalServerError 由于内部错误或不确定的异常导致的请求失败 500
InvalidParameterCombination 参数组合错误 400
InvalidParameterValue 参数无效或超出范围 400
MissingRequiredParameter 缺少必须的参数 400

例如:

  1. {"code":"InvalidParameterValue","msg":"the metricName is empty."}

最后更新:2016-11-23 16:04:00

  上一篇:go 创建自定义监控项和报警规则__自定义监控_用户指南_云监控-阿里云
  下一篇:go 报警服务概览__报警服务_用户指南_云监控-阿里云