自己写代码来定义一个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. 关于python模块总结

    名词解释 模块(module):在python中,一个.py文件就是一个模块 包(package):为了避免模块名冲突,Python又引入了按目录来组织模块的方法.当目录下存在__init__.py, ...

  2. spring cloud (五) 熔断面板 聚合熔断 turbine

    改造feign 项目 1 启动类添加注解  @EnableHystrix 2 添加如下配置文件 #ji eureka.instance.metadata-map.cluster=MAIN#actuat ...

  3. tkinter代码正式版

    可以绘图了. import json import tkinter as tk from tkinter import filedialog from tkinter import LabelFram ...

  4. 一道面试题关于js中逗号

    一.今天遇到一个面试题,自我感觉是会,但是却做错了.人都是这样,自我感觉良好,其实也就预警自己已经忽视一些细节以及一些自我感知. 面试题: ,j=,k; ,j<;i++,j++){ k=i+j; ...

  5. hexo利用SAE提高网页打开速度

    起因 之前一直觉得网页加载速度其实也还行,就是有两个图标加载的非常慢,经常是网页都出来了,那两个图标还是个方框,要等好久才出来.终于,好好研究了一番,发现那个图标是fontawesome里的,然后字体 ...

  6. iptables 通用语句

    iptables -t filter -nvL --line-number | grep destination -t :  指定表 {fillter|nat|mangle|raw} -v : 显示详 ...

  7. postgres linux系统下连接方法

    psql -U 用户名 -h ip  -p 端口号 -w 库名称 查询实例下的数据结构 语法:select 字段名  from  实例名“.”表名(account.tb_user) 如:  selec ...

  8. 一个Tomcat下部署多个项目异常:org.springframework.jmx.export.UnableToRegisterMBeanException: Unable to register MBean 的解决方法

    内容简介 在测试服务器上Tomcat下部署两个Spring boot项目,总是一个能启动成功,另一个启动不成功.这两个war包单独部署均能正常启动. 查看日志:启动时报出 org.springfram ...

  9. [CSS3] Use media query to split css files and Dark mode (prefers-color-scheme: dark)

    Dark Mode: :root { --text-color: #000; --background-color: #fff; } body { color: var(--text-color); ...

  10. Spring之IOC(控制反转)与AOP(面向切面编程)

    控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合.当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象.可以认为IoC与JND ...