a.下载数据源插件,将解压后的文件夹放入grafana安装目录下的数据源目录中(${GRAFANA_HOME}\public\app\plugins\);
b.重启grafana即完成安装。service grafana-server restart。
a.进入grafana的数据源配置页面(Data Sources),点击Add data source进入配置表单页面,填入数据源名称(Name),
在数据源类型(Type)对应的下拉列表中选择CMS Grafana Service。
b.然后开始配置HTTP以及cloudmonitor service details,URL是所有获取云监控数据的请求地址,根据你所在Endpoint填写,
默认为http://metrics.cn-hangzhou.aliyuncs.com, Access key ID和Secret access key填写账号AK,填写完成点击Save & Test,
如果显示Success Data source is working,说明数据源配置成功,可以开始在grafana中访问阿里云监控的数据了。
具体可参考:https://help.aliyun.com/document_detail/109434.html?spm=a2c4g.11186623.6.565.70d048adQpRZsT
a.进入aliyun-cms-grafana目录下,执行grunt命令(需要安装nodejs和npm),则会按照Gruntfile.js里面的配置将项目里面的文件打包到指定的目录,
当前配置是将项目文件打包到dist目录下,发布的时候打包发布整个插件目录下的文件,dist目录下一定是经源文件编译后的。
a.云监控grafana数据源配置的AK保存在哪里?有没有AK被窃取的风险?
数据源配置AK存储在grafana内置的数据库里,不会通过网络传输AK,只要保证安装grafana机器的安全AK就不会被窃取。
b.云监控grafana数据源实现原理是什么样的?
云监控数据源通过实现js版本的[签名算法](https://help.aliyun.com/document_detail/28616.html?spm=5176.doc28618.6.639.5rgcw8);
用配置的AK生成签名拼接URL请求阿里云网关的open api获取数据,这种方式安装配置简单,不需要部署其他额外的服务即可使用。
(更新对应cms open api version 20180308,aliyun-java-sdk-cms 6.0.*)
a.Project项目: 动态从QueryProjectMeta接口获取,且设置一个默认值为acs_ecs_dashboard;
b.Metric监控项: 根据已选择的Project动态从QueryMetricMeta接口获取(默认150,不足可输入),默认为空;
c.Period时间间隔: 根据已选择的Metric监控项动态从QueryMetricMeta接口获取,且支持输入联想框、手动输入;
d.Group分组: 根据ListMyGroups接口动态获取该Ak信息下的所有分组;
e.Dimensions实例维度: 若不选择Group分组,择根据QueryMetricLast接口动态获取该AK下的所有实例信息,且支持输入联想、多选、去除已选项;
若选择Group分组后,根据ListMyGroupInstances接口动态获取该分组下的所有实例信息,且支持输入联想、多选、去除重复已选项;
f.Y - column目标源: 根据已选择的Metric监控项动态从QueryMetricMeta接口获取,且支持输入联想框、手动输入、多选。
a.Project可选择自定义监控;
b.Metric无接口可查询自定义监控的Metric信息;
c.Group可查看groupName / groupId; 在自定义监控下,group必选; 在其他情况下,group可选;
d.Dimensions分二大种情况:
一.自定义监控、日志监控类: 此情况下,Dimensions不做任何提示,原因是QueryMetricList接口无法根据GroupId和MetricName获取维度信息,必须传入Dimension才可获取;
二.正常监控,选Group,获取该分组下的实例信息; 不选Group获取QueryMetricLast查询下的数据解析后去重实例信息;
e.页面参数全部增加提示信息。
a.支持对project、metric、period、group、dimensions、ycol的variables的custom变量模版支持。
a.新增对variables的Query语法支持,提供更灵活的模版功能,不在单纯只是custom模版,解放更多的手动输入,让模版使用更方便快捷;
暂支持:
namespace(filter),metric(namespace,filter),dimension(namespace,metric,instanceId,filter);
namespace、metric必须输入,不能为空,且为字符串,不需要符号;
filter、instanceId可输入null,为null时全部数据返回,不做过滤,且可输入字符串,或数组,数组使用";"分割数据。
eg:
namespace(_ecs_),namespace(null);
metric(acs_ecs_dashboard,disk),metric($namespace,disk),metric($namespace,null);
dimension(acs_ecs_dashboard,diskusage_used,i-2zed,/dev/vd),
dimension($namespace,$metric,[i-2zed;i-2zeg;i-2zeb],/dev/vda1),
dimension($namespace,$metric,i-2zed;i-2zeg;i-2zeb,/dev/vda1),
dimension($namespace,$metric,/dev/vda1,[i-2zed;i-2zeg;i-2zeb]),
dimension($namespace,$metric,/dev/vda1,null),
$instanceId [g99hxhnnyr;1egdhoza;kty4zk40hh] type(constant/custom)
dimension($namespace,$metric,$instanceId,/dev/vda1),
$instanceId [g99hxhnnyr;1egdhoza;kty4zk40hh] $filter [/dev/vda1;/dev/vdb] type(constant/custom)
dimension($namespace,$metric,$instanceId,$filter)。
b.修改Project为Namespace,保持原因功能不变;
c.优化dimensions,使用更强大的dimensions信息组合,提供更明了的dimensions信息展示;支持dimensions多选,包含模版、和下方条件;
d.去除非自定义监控、日志监控下的Group筛选实例信息功能,即Group只适用于自定义监控、日志监控,不在提供过滤dimensions信息支持;
e.优化dashboard数据展示,根据模版选定分条展示数据,暂只支持包含有instanceId的查询数据。
a.AK输入验证增加BASE64加解密功能,防止明码AK。后续持续优化
b.增加tagFilter,tag方法,对ECS和RDS的打Tag标签对应的实例进行过滤:
格式:
tagFilter(type, regionId, tagType, tagKey),
tags(type, regionId, resourceType, resourceId_array, tag_array);
eg:
1.tagFilter支持获取当前账户下的对应实例打Tag的Key和Key:/:Value集合;
//获取当前账户下北京地区的rds的Tag的key集合,即Tag Kye集合
tagFilter(rds, cn-beijing, key, null)
//获取当前账户下北京地域的rds的Tag的$tag对应的key:/:value集合,对应Tag Kye下的Key:/:Value集合
tagFilter(rds, cn-beijing, value, $tag)
2.tag支持获取当前账户下的对应实例打Tag的instanceId集合;
resourceId_array 需过滤的instanceId集合,ResourceId.N 格式["instanceId_1","instanceId_2","instanceId_3"]
tag_array 需过滤tag集合,Tag.N.Key,Tag.N.Value; 参数形式以 key:/:value or key形式填入参数
格式: ["key1:/:value1","key2:/:value2","key3:/:value3"] or ["key1","key2","key3"],
//获取当前账户下北京地域的rds的instanceId集合;
过滤条件:ResourceId.1=instanceId_1&ResourceId.2=instanceId_2&Tag.1.Key=key1&Tag.1.Value=value1&Tag.2.Key=key2&Tag.2.Value=value2
tag(rds, cn-beijing, INSTANCE, ["instanceId_1","instanceId_2"], ["key1:/:value1","key2:/:value2"]);
resourceId_array,tag_array支持variables语法,与tagFilter配合使用,效果更好,tagFilter支持分组模式,更好的使用Tag的标签;
tags(rds, cn-beijing, INSTANCE, null, $tagFilter);