835
阿里云
监控数据上报__自定义监控_用户指南_云监控-阿里云
您可以使用API或SDK上报监控数据。
注意事项
- SDK支持python(2.6 +)与bash
SDK上报数据
参数说明
- userid,是用户的账号ID。
- 监控项名称:创建监控项时填写的“监控项名称”。
- 监控项值:监控项对应的监控数据。
- 字段信息:创建监控项时填写的“字段信息”和它的值。这个参数用于对数据区分维度。
使用步骤
下载SDK
a.自定义监控SDK(python版) :cms_post.py
b. 自定义监控SDK(bash版) :cms_post.sh
编写脚本。
a. 在用户的脚本中,import cms_post,调用cms_post的post方法推送数据到云监控。
b. post方法中传入4个参数,分别为userid, 监控项名称,监控项值,字段信息,您只需添加定时任务即可。
定时调度脚本,按创建监控项时定义的上报周期上报数据。Linux环境可以使用Crontab,Windows环境可以使用quartz.net。
补充说明:请在您的脚本开始处添加对应的解释器,一般默认#!/usr/bin/python,在test.py中,import cms_post,然后调用cms_post.post()上报您的监控数据。请将您的test.py文件和cms_post.py文件放在同一文件夹下,避免import时发生错误。
脚本示例(Python+linux环境)
#!/usr/bin/python
import cms_post
def get_mem_usage_percent():
try:
f = open('/proc/meminfo', 'r')
for line in f:
if line.startswith('MemTotal:'):
mem_total = int(line.split()[1])
elif line.startswith('MemFree:'):
mem_free = int(line.split()[1])
elif line.startswith('Buffers:'):
mem_buffer = int(line.split()[1])
elif line.startswith('Cached:'):
mem_cache = int(line.split()[1])
elif line.startswith('SwapTotal:'):
vmem_total = int(line.split()[1])
elif line.startswith('SwapFree:'):
vmem_free = int(line.split()[1])
else:
continue
f.close()
except:
return None
physical_percent = usage_percent(mem_total - (mem_free + mem_buffer + mem_cache), mem_total)
virtual_percent = 0
if vmem_total > 0:
virtual_percent = usage_percent((vmem_total - vmem_free), vmem_total)
return physical_percent
def usage_percent(use, total):
try:
ret = (float(use) / total) * 100
except ZeroDivisionError:
raise Exception("ERROR - zero division error")
return ret
MEMS_usage=get_mem_usage_percent()
if __name__ == '__main__':
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 格式。如消息体内容:
userId=123456&namespace=acs/custom/123456&metrics =
[{"metricName":"vm.cpu","timestamp":"1395556197448","value":80.0,"unit":"Percen
t","dimensions":{"instanceId":"vm_001"}}]
GET方式
用户可以一次提交多条统计数据,统计数据存放在 metrics 字段中,遵循 JSON 格式。
https://open.cms.aliyun.com
/metrics/put?userId=123456&namespace=acs/custom/123456&metrics=[{"metricName":
"vm.cpu","timestamp":"1395556197448","value":80.0,"unit":"Percent","dimensions"
:{"instanceId":"vm_001"}},{"metricName":"vm.mem","timestamp":"1395556197448","v
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 |
例如:
{"code":"InvalidParameterValue","msg":"the metricName is empty."}
最后更新:2016-11-23 16:04:00
上一篇:
创建自定义监控项和报警规则__自定义监控_用户指南_云监控-阿里云
下一篇:
报警服务概览__报警服务_用户指南_云监控-阿里云
修改备份策略__备份恢复_API 参考_云数据库 RDS 版-阿里云
DMS 登录云数据库__连接实例_快速入门_云数据库 Redis 版-阿里云
安全管家应急服务能提供数据恢复服务吗?__常见问题_产品常见问题_安全管家服务-阿里云
云盘参数和性能测试方法__磁盘_产品简介_云服务器 ECS-阿里云
Column__DataType_API 参考_表格存储-阿里云
是否可以仅允许子用户查看青岛的ECS实例,但是不允许查看磁盘信息及快照信息___云服务器(ECS)授权问题_授权常见问题_访问控制-阿里云
短信签名的要求是什么?__常见问题_短信服务-阿里云
产品与技术__产品简介_数据集成-阿里云
报警服务概览__报警服务_用户指南_云监控-阿里云
CDN功能列表__用户指南_CDN-阿里云
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云