自己写代码来定义一个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毫秒返回的。它是能告诉你这个数据,在一个比例的之间里面有多少请求。

写代码

统计创建订单的服务被调用了多少次,getInfo订单信息的服务被调用了多少次。

pom的这个里面已经引用了metrics了,但是这个里面是按照状态码来统计的。状态码是200的请求是多少,500的请求是多少。

但是我们现在想知道创建订单和获取订单分别被调用了多少次。这个现在是没法满足的,需要我们自己写一个指标的处理器来处理。我们用的指标的类型就是刚才讲的counter.counter是只增不减的。我的访问次数永远是只增不减的

定义counter


加上@Configuration注解

注入prometheus的注册器,然后自己写一个指标。注册到注册器上去。

这样我们在访问prometheus的端点的时候就能看到,我给它系统的这个指标了。

这个包下的Counter。这个就是我们要的计数器。

用Counter的build方法,用里面有两个参数的那个方法,第一个参数是指标的名字。

metrics的名字就是我们在这里看到的类似这种的

就是大括号前面之前的

第二个参数是Help。就是一个说明、描述性的文字。


要在这个指标上带哪些标签。

通过labelNames来指定。service代表是哪个请求,method代表是get还是post方法,code代表返回的状态码。

注册到peometheus的注册器上。

这样prometheus的metrics指标上就会多一个is_request_count的指标。但是它现在还没有值,

我们需要让他用这个counter去计数。什么时候计数呢?我们需要在拦截器那,用拦截器拦住所有的请求,然后来计数。

创建prometheus的拦截器

继承handlerInterceptor

直接声明称Spring的组件。

注入Counter,然后覆盖掉afterCompletion,不管你的请求是成功还是失败,最终会进入到这个方法里面来。

这里定义了三个标签。

这里就要给它传三个值

状态码是一个int类型转换成String类型

调用它的inc方法,就是把这个counter往上加1

让interceptor生效

创建一个配置类,实现WebMvcConfigurer


在这里面 我们把interceptor加进去。

注入我们自己写的interceptor。然后注册上去,并制定所有的请求,都拦截。

最后修改下orderController的参数接收方式

启动测试


刷新端点,然后搜索我们自己定义的指标。指标有了但是没有数据。

调用orders方法。多点击几次。

再调用 获取订单的方法。多点击几次

可以看到我们自己定义的指标有数据了 。这样我就把服务的调用信息加到prometheus的端点上了。然后把这个metrics暴露出来了。

定义dashboard

下面去grafana里面定义个dashboard把数据展示出来。

加一个新的dashboard



进入到编辑页面
起个名字

首先选择数据源,这选择Prometheus.

下面就是要写查询语句,这就是我们要查的东西。

创建订单的方法被调用了多少次。

每隔5秒采一次样,然后显示最近5分钟的数据

保存这个dashboard


再进去到编辑页面

选择当前最近的一次采集的数据

多调用几次orders方法

这里的数据就变成10了

前缀和后缀

当前的值是10小于20所以显示第一个颜色。

这里过户选的是Value的话 就是数字的颜色

1在5和20之间 所以就显示第二个颜色。

上面值的曲线。

在多访问几次接口,曲线应该还会往上走。

结束

Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)的更多相关文章

  1. 《Spring Cloud微服务 入门 实战与进阶》

    很少在周末发文,还是由于昨晚刚收到实体书,还是耐不住性子马上发文了. 一年前,耗时半年多的时间,写出了我的第一本书<Spring Cloud微服务-全栈技术与案例解析>. 时至今日,一年的 ...

  2. Spring Cloud微服务安全实战_00_前言

    一.前言: 一直以来对服务安全都很感兴趣,所以就学习.这是学习immoc的 jojo老师的 <Spring Cloud微服务安全实战课程>的笔记,讲的很好. 课程简介:  二.最终形成的架 ...

  3. Spring cloud微服务安全实战_汇总

    Spring cloud微服务安全实战 https://coding.imooc.com/class/chapter/379.html#Anchor Spring Cloud微服务安全实战-1-1 课 ...

  4. Spring Cloud微服务安全实战_4-5_搭建OAuth2资源服务器

    上一篇搭建了一个OAuth2认证服务器,可以生成token,这篇来改造下之前的订单微服务,使其能够认这个token令牌. 本篇针对订单服务要做三件事: 1,要让他知道自己是资源服务器,他知道这件事后, ...

  5. Spring Cloud微服务安全实战_4-3_订单微服务&价格微服务

    实现一个场景: 订单微服务: POM: <?xml version="1.0" encoding="UTF-8"?> <project xml ...

  6. Spring cloud微服务安全实战 最新完整教程

    课程资料获取链接:点击这里 采用流行的微服务架构开发,应用程序访问安全将会面临更多更复杂的挑战,尤其是开发者最关心的三大问题:认证授权.可用性.可视化.本课程从简单的API安全入手,过渡到复杂的微服务 ...

  7. Spring cloud微服务安全实战-6-8sentinel限流实战

    阿里2018年开源的. 简单来说就是干三件事,最终的结果就是保证你的服务可用,不会崩掉.保证服务高可用. 流控 先从最简单的场景来入手. 1.引用一个依赖, 2,声明一个资源. 3.声明一个规则 注意 ...

  8. Spring cloud微服务安全实战-6-4权限控制改造

    授权,权限的控制 令牌里的scope包含fly就有权限访问.根据Oauth的scope来做权限控制, 要让@PreAuthorize生效,就要在启动类里面写一个注解. 里面有一个属性叫做,就是在方法的 ...

  9. Spring cloud微服务安全实战-6-2JWT认证之认证服务改造

    首先来解决认证的问题. 1.效率低,每次认证都要去认证服务器调一次服务. 2.传递用户身份,在请求头里面, 3.服务之间传递请求头比较麻烦. jwt令牌. spring提供了工具,帮你在微服务之间传递 ...

  10. Spring cloud微服务安全实战-5-7实现基于session的SSO(客户端应用的Session有效期)

    授权模式改造成了Authorization code完成了改造的同时也实现了SSO.微服务环境下的前后端分离的单点登陆. 把admin的服务重启.刷新页面 并没有让我去登陆,直接就进入了首页. ord ...

随机推荐

  1. 关于free的使用疑惑

    #include <stdio.h> #include <string.h> #include <stdlib.h> #include "mainc26. ...

  2. php的希尔排序

    算是改进了的插入排序, 从性能时间上来看,也确实更有改进. 但比起php内置的功能,性能还有十倍之差呢 <?php /** * 原理:把排序的数据根据增量分成几个子序列,对子序列进行插入排序, ...

  3. POJ 1797 Heavy Transportation(Kruskal灵活使用)(瓶颈树)

    题意: 求1到n路径上最大的最小值. 原因:样例输入 1 3 3 1 2 3 1 3 4 2 3 5 1-2最多可以运输3,2-3可最多以运输5,但是2的来源只有3,所以路径1-2-3上能运输的量为3 ...

  4. Python +urllib+urllib2 带数据的post请求实例

    #coding:utf-8 ''' Created on 2017年11月2日 @author: li.liu ''' import urllib import urllib2 import re f ...

  5. danci1

    oddball 英 ['ɒdbɔːl] 美 adj. 古怪的:奇怪的 n. 古怪:古怪的人 rather than 英 美 而不是:宁可…也不愿 grasp 英 [grɑːsp] 美 [ɡræsp] ...

  6. 独角兽估值30亿美金,我们聊聊RPA是什么

    https://www.jianshu.com/p/397ecd238ffc 缩短法定工作时间,已成国际劳动立法趋势,全球政府都曾面对这样的议题,过往企业IT也在思考这件事,开发出更好的软件系统帮助员 ...

  7. 关于System.BadImageFormatException

    什么是BadImageFormatException BadImageFormatException是当动态链接库 (DLL) 或可执行程序的文件映像无效时引发的异常. 可能的原因 如果动态链接库 ( ...

  8. xamarin/xamarin.forms 在锁屏电源唤醒时保持后台运行

    PARTIAL_WAKE_LOCK:保持CPU 运转,屏幕和键盘灯有可能是关闭的. SCREEN_DIM_WAKE_LOCK:保持CPU 运转,允许保持屏幕显示但有可能是灰的,允许关闭键盘灯 SCRE ...

  9. [RN] React Native 使用 React-native-scrollable-tab-view 实现 类头条 新闻页头部 效果

    React Native 使用 React-native-scrollable-tab-view 实现 类头条 新闻页效果 效果如下: 一.安装依赖 npm install react-native- ...

  10. 利用 PHP CURL zip压缩文件上传

    $postData['file'] = "@".getcwd()."/../attachment/qianbao/{$customer_id}.zip"; $t ...