阿里云服务器 ECS 实现自定义监控图表,图表实现为百度的 Echarts 图表
效果查看
安装
npm i -S aliyun-metrics
下面贴出我的实现方式:
const Metrics = require("aliyun-metrics");
const moment = require('moment');
const client = new Metrics({
accesskeyId: 'your_accesskey_id',
accesskeySecret: 'your_accesskey_secret',
})
const ECS = params => {
return new Promise((resolve, reject) => {
client.queryData({
project: "acs_ecs_dashboard",
metric: params.metric,
period: 60,
startTime: params.startTime || moment.utc()
.subtract(1, 'hour')
.format(),
endTime: params.endTime || moment.utc()
.format(),
dimensions: `{instanceId:'your_instanceId'}`
}, function(error, data) {
if (error || !data)
reject(error || 'data is null');
else
resolve(data);
});
})
}
module.exports = ECS;
关于 accesskeyId 和 accesskeySecret 请参考:创建AccessKey
client.queryData 参数说明:
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
project | String | 是 | 名字空间,表明监控数据所属产品,如 “acs_ecs_dashboard”,“acs_rds_dashboard”等 |
metric | String | 是 | 监控项名称,查看预设监控值参考 |
period | String | 否 | 获取监控数据的间隔时间,单位为秒。取值范围:60,600,3600。默认值:60 |
startTime | String | 是 | 获取数据的结束时间点。按照 ISO8601 标准表示,并需要使用 UTC 时间,格式为:YYYY-MM-DDThh:mm:ssZ。 如果指定的秒(ss)不是 00,则自动换算为下一分钟。 |
endTime | String | 是 | 获取数据的结束时间点。按照 ISO8601 标准表示,并需要使用 UTC 时间,格式为:YYYY-MM-DDThh:mm:ssZ。 如果指定的秒(ss)不是 00,则自动换算为下一分钟。 |
dimensions | String | 是 | json串,例如:{"instanceId":"i-23gyb3kkd"}。 |
返回值请参考:查看预设监控值参考
参考地址: