前言
公司项目需要,加入Grafana对项目的流量就行一个监控,具体Grafana的搭建这里不做介绍,大家可以参考Grafana官方文档。这里简单介绍一下用Kid数据上报来把业务请求数据上报到Grafana。
正文
1. 工作流程介绍
Kid工作流程图:
2. feature
- 支持业务数据上报到Grafana+influxdb,可定制dashboard及监控
- 支持业务数据上报到ElasticSearch
- 支持业务数据和大数据部门对接
- 支持springboot/Spring等项目
maven引入:1
2
3
4
5<dependency>
<groupId>org.simple.kid</groupId>
<artifactId>kid-collector-java</artifactId>
<version>1.0.0</version>
</dependency>
注意事项:
如果原项目引入guava,需要修改版本为20.01
2
3
4
5<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>20.0</version>
</dependency>
数据收集对象KVData构造器介绍:
KVData(String metric, Map<String, String> metricMap)
功能说明:用于Grafana日志监控
参数说明:
metric:统计项名称,英文格式(如:watcher)
metricMap:监控的数据
3.SpringBoot版本使用示例
appliaction.yml配置项:
1 | kid: |
4.原生Spring使用示例
appliaction.xml配置项:
1 | <bean id="transfer" class="org.simple.kid.collector.GrpcTransfer"> |
5.示例代码
注意事项,通过@Autowired引用kid时,确保当前class已经加上了spring注解。如@service,@controller等,对于未通过spring管理的bean,通过@Autowired引入会报null1
2
3
4
5
6
7//metricMap Map为<String,String>类型
Kid kid;
Map<String,String> kvMap = new HashMap();
kvMap.put("xxx","xxxx");
KVData kvData = new KVData("watcher", kvMap);
kid.record(kvData);
6.Grafana监控系统
最终数据可以通过Grafana实时展现出来
7.KvData通用接口监控参数
配置项定义:
platform: 平台自己根据业务定义
appName: 平台自己根据业务定义
KvData数据格式如下:
metric:commonWatcher (固定值)
metricMap参数如下:
tag:统计项别名
host:主机host,ip
success:1(成功)0(异常,失败)
faliure:1(异常,失败),0(成功) 和success值相反
timeCost:耗时(毫秒)
参考示例kvMap参数如下:
Map<String, String> kvMap = Maps.newHashMap();
kvMap.put("tag", kidMonitorBO.getTag());
kvMap.put("host", kidMonitorBO.getHost());
kvMap.put("success", kidMonitorBO.getSuccess());
kvMap.put("faliure", kidMonitorBO.getFaliure());
kvMap.put("timeCost", String.valueOf(kidMonitorBO.getTimeCost()));
kvMap.put("resultCount", String.valueOf(kidMonitorBO.getResultCount()));
KVData kvData = new KVData(TAG_COLLECT_API, kvMAap);