Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)


自己写代码来定义一个metrics,然后让prmetheus收走,在grafana里面定义一个panel并展示出来。
prometheus的四种metrics指标。虽然所有的metrics都是数字,但是数字和数字之间还不一样。
counter:比如说请求的总量,cpu的使用时间
Gauge:统计的数,是可增加也可以减少的,比如说当前业务使用的内存的大小。垃圾回收后,内存就会减少。
Hostogram:用来做数据分布统计,比如说请求的响应时间来举例子,某个应用收了100个请求,在这100个请求里面,响应时间在0到100毫秒的有多少。100毫秒到300毫秒的有多少个。300毫秒到500毫秒的有多少个。它可以统计出这个数来。这0到100,100到300 ,300到500 这些就是 bucket桶,bucket是用来装数据的,bucket可以自己定义,
Summary:用来做数据分布统计,统计出来不是一个绝对的数,而是比率。还是拿响应时间来举例子,用summary统计出来的,你这100个请求里有百分九十的请求小于100毫秒返回的,然后有99%的请求都是在150毫秒返回的。它是能告诉你这个数据,在一个比例的之间里面有多少请求。
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)

写代码

统计创建订单的服务被调用了多少次,getInfo订单信息的服务被调用了多少次。
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)
pom的这个里面已经引用了metrics了,但是这个里面是按照状态码来统计的。状态码是200的请求是多少,500的请求是多少。
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)
但是我们现在想知道创建订单和获取订单分别被调用了多少次。这个现在是没法满足的,需要我们自己写一个指标的处理器来处理。我们用的指标的类型就是刚才讲的counter.counter是只增不减的。我的访问次数永远是只增不减的

定义counter

Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)
加上@Configuration注解
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)
注入prometheus的注册器,然后自己写一个指标。注册到注册器上去。
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)
这样我们在访问prometheus的端点的时候就能看到,我给它系统的这个指标了。
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)
这个包下的Counter。这个就是我们要的计数器。
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)
用Counter的build方法,用里面有两个参数的那个方法,第一个参数是指标的名字。
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)

metrics的名字就是我们在这里看到的类似这种的
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)
就是大括号前面之前的
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)

第二个参数是Help。就是一个说明、描述性的文字。
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)

Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)
要在这个指标上带哪些标签。
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)
通过labelNames来指定。service代表是哪个请求,method代表是get还是post方法,code代表返回的状态码。
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)
注册到peometheus的注册器上。
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)
这样prometheus的metrics指标上就会多一个is_request_count的指标。但是它现在还没有值,
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)
我们需要让他用这个counter去计数。什么时候计数呢?我们需要在拦截器那,用拦截器拦住所有的请求,然后来计数。

创建prometheus的拦截器

继承handlerInterceptor
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)
直接声明称Spring的组件。
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)
注入Counter,然后覆盖掉afterCompletion,不管你的请求是成功还是失败,最终会进入到这个方法里面来。
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)

这里定义了三个标签。
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)

这里就要给它传三个值
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)
状态码是一个int类型转换成String类型
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)
调用它的inc方法,就是把这个counter往上加1
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)

让interceptor生效

创建一个配置类,实现WebMvcConfigurer
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)

Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)
在这里面 我们把interceptor加进去。
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)

注入我们自己写的interceptor。然后注册上去,并制定所有的请求,都拦截。
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)
最后修改下orderController的参数接收方式
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)

启动测试

Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)
刷新端点,然后搜索我们自己定义的指标。指标有了但是没有数据。
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)
调用orders方法。多点击几次。
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)
再调用 获取订单的方法。多点击几次
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)
可以看到我们自己定义的指标有数据了 。这样我就把服务的调用信息加到prometheus的端点上了。然后吧这个metrics暴露出来了。
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)

定义dashboard

下面去grafana里面定义个dashboard把数据展示出来。
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)
加一个新的dashboard
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)

Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)
进入到编辑页面
起个名字
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)
首先选择数据源,这选择Prometheus.
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)
下面就是要写查询语句,这就是我们要查的东西。
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)
创建订单的方法被调用了多少次。
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)
每隔5秒采一次样,然后显示最近5分钟的数据
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)
保存这个dashboard
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)
再进去到编辑页面
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)
选择当前最近的一次采集的数据
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)
多调用几次orders方法
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)
这里的数据就变成10了
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)
前缀和后缀
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)
当前的值是10小于20所以显示第一个颜色。
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)

这里过户选的是Value的话 就是数字的颜色
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)
1在5和20之间 所以就显示第二个颜色。
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)

上面值的曲线。
Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)
在多访问几次接口,曲线应该还会往上走。

Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)

结束

 

上一篇:Error from server (ServiceUnavailable): the server is currently unable to handle the request


下一篇:kubernetes指南--弹性伸缩