Spring Boot 集成 Prometheus
Prometheus是一个根据应用的metrics来进行监控的开源工具。其原理使用主动采集服务暴露的指标接口的方式拉取指标数据,所以需要给需要被监控的服务暴露数据指标接口,对于SpringBoot服务,集成起来非常简单,如下:
一、为pom添加依赖
<!-- prometheus --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>io.micrometer</groupId><artifactId>micrometer-registry-prometheus</artifactId></dependency>
二、配置文件添加配置
management.endpoint.metrics.enabled=true
management.endpoints.web.exposure.include=*
management.endpoint.prometheus.enabled=true
management.metrics.export.prometheus.enabled=true
# 开启Micormeter
management.metrics.distribution.percentiles-histogram.http.server.requests=true
# Micormeter bucket指标配置,千分尺分段记录
management.metrics.distribution.sla.http.server.requests=100ms,200ms,400ms
# Micormeter quantile指标配置
management.metrics.distribution.percentiles.http.server.requests=0.5,0.9,0.95,0.99,0.999
三、访问验证
可以看到输出很多指标数据,表示完成。
四、集成 JVM (Micrometer)
JVM (Micrometer) 是一个 dashboard 模板,官网地址: https://grafana.com/grafana/dashboards/4701
SpringBoot 集成它只需要做一点简单的改动即可,添加 MeterRegistryCustomizer
如下:
public class StartApplication {…省略代码…@BeanMeterRegistryCustomizer<MeterRegistry> configurer(@Value("${spring.application.name}") String applicationName) {return (registry) -> registry.config().commonTags("application", applicationName);}}
然后在 application 配置文件中添加配置:
management.metrics.tags.application=${spring.application.name}
特别提醒!!!
特别提醒!!!
特别提醒!!!
开启 actuator
后要注意要防护,请勿将开启 actuator
的服务直接对外。如果你需要这么做,可以新增一个过滤器对 /actuator
进行过滤,只允许内网IP地址访问。
(如果单纯的开启 security 可能为很多第三方监控系统带来麻烦,所以请选择适合自己的方案)
包含但不限于以下接口都是在开启 actuator 之后可以访问的(默认统一前缀 /actuator
):
序号 | 接口 | Method | 说明 |
---|---|---|---|
1 | /health/{component}/{instance} | GET | 报告程序的健康指标,这些数据由HealthIndicator实现类提供 |
2 | /info | GET | 获取程序指定发布的信息,这些信息由配置文件中info打头的属性提供 |
3 | /configprops | GET | 描述配置属性(包含默认值)如何注入到bean |
4 | /beans | GET | 描述程序中的bean,及之间的依赖关系 |
5 | /env | GET | 获取全部环境属性 |
6 | /env/{name} | GET | 根据名称获取指定的环境属性值 |
7 | /mappings | GET | 描述全部的URI路径,及和控制器的映射关系 |
8 | /metrics/{requiredMetricName} | GET | 统计程序的各种度量信息,如内存用量和请求数 |
9 | /httptrace | GET | 提供基本的http请求跟踪信息,如请求头等 |
10 | /threaddump | GET | 获取线程活动的快照 |
11 | /conditions | GET | 提供自动配置报告,记录哪些自动配置通过,哪些没有通过 |
12 | /loggers/{name} | GET | 查看日志配置信息 |
13 | /auditevents | GET | 查看系统发布的事件信息 |
14 | /caches/{cache} | GET/DELETE | 查看系统的缓存管理器,另可根据缓存管理器名称查询;另DELETE操作可清除缓存 |
15 | /scheduledtasks | GET | 查看系统发布的定时任务信息 |
16 | /features | GET | 查看Springcloud全家桶组件信息 |
17 | /refresh | POST | 重启应用程序,慎用 |
18 | /shutdown | POST | 关闭应用程序,慎用 |
19 | /dump | GET | 获取线程活动的快照 |
20 | /metrics | GET | 报告各种应用程序度量信息,比如内存用量和HTTP请求计数 |
21 | /trace | GET | 提供基本的HTTP请求跟踪信息(时间戳、HTTP头等) |
(END)
Spring Boot 集成 Prometheus相关推荐
- Spring Boot集成Swagger导入YApi@无界编程
接口APi开发现状 现在开发接口都要在类似YApi上写文档,这样方便不同的团队之间协作,同步更新接口,提高效率. 但是如果接口很多,你一个个手工在YApi去录入无疑效率很低. 如果是使用Spring ...
- spring boot集成swagger,自定义注解,拦截器,xss过滤,异步调用,定时任务案例...
本文介绍spring boot集成swagger,自定义注解,拦截器,xss过滤,异步调用,定时任务案例 集成swagger--对于做前后端分离的项目,后端只需要提供接口访问,swagger提供了接口 ...
- 6.3 Spring Boot集成mongodb开发
6.3 Spring Boot集成mongodb开发 本章我们通过SpringBoot集成mongodb,Java,Kotlin开发一个极简社区文章博客系统. 0 mongodb简介 Mongo 的主 ...
- springboot(十八):使用Spring Boot集成FastDFS
上篇文章介绍了如何使用Spring Boot上传文件,这篇文章我们介绍如何使用Spring Boot将文件上传到分布式文件系统FastDFS中. 这个项目会在上一个项目的基础上进行构建. 1.pom包 ...
- Spring Boot集成Hazelcast实现集群与分布式内存缓存
2019独角兽企业重金招聘Python工程师标准>>> Hazelcast是Hazelcast公司开源的一款分布式内存数据库产品,提供弹性可扩展.高性能的分布式内存计算.并通过提供诸 ...
- Spring Boot 集成 Swagger 生成 RESTful API 文档
原文链接: Spring Boot 集成 Swagger 生成 RESTful API 文档 简介 Swagger 官网是这么描述它的:The Best APIs are Built with Swa ...
- 【Java进阶】Spring Boot集成ES
目录 spring boot集成ES ElasticSearchConfig 测试文档的基本操作 Elasticsearch Clients 文档 spring boot集成ES Java REST ...
- Spring Boot集成Jasypt安全框架
Jasypt安全框架提供了Spring的集成,主要是实现 PlaceholderConfigurerSupport类或者其子类. 在Sring 3.1之后,则推荐使用PropertySourcesPl ...
- Spring Boot集成JPA的Column注解命名字段无效的问题
偶然发现,Spring Boot集成jpa编写实体类的时候,默认使用的命名策略是下划线分隔的字段命名. Spring Boot版本:1.5.4.release 数据表: id int, userNam ...
- Spring Boot集成CKFinder
2019独角兽企业重金招聘Python工程师标准>>> Spring Boot集成CKFinder,实现浏览功能. 前言 上一篇记录了Spring Boot集成CKEditor,这里 ...
最新文章
- 驱动编程中的头文件与内核源码的关系
- 解决 supervisor中stop django进程不能真正的停止 问题
- php读取csv指定行_PHP快速读取CSV大文件指定行
- oracle日志查看问题?
- Centos 7安装与配置nagios监控(一)
- Windows下DNS ID欺骗的原理与实现
- jquery-ajax的同步与异步
- Oracle删除重复数据并且只留其中一条数据
- 召回率(Recall),精确率(Precision),交除并(Intersection-over-Union(IoU)
- JSONObject跟JSONArray来自不同的包会有不同的功能
- php 页面上显示xls文档,phpExcel输出xls文档显示乱码的解决方法
- 7-7 找出总分最高的学生 (15 分)
- Django+MySQLDB配置
- 软考程序员资源免费分享
- 几种主流数据库类型简介
- 学位论文写作规范之论文选题、开题报告、毕业论文
- ahu-557容斥原理
- PCB设计中如何进行统一批量检测并生成错误报告
- 手把手教你做一个网页
- 日薪行-大龄程序员的绝对优势与绝对劣势-反观01
热门文章
- RISC-V from scratch 4: 写 UART 驱动
- [UE4]Viewport中摄像机镜头缩放速度修改
- 天神娱乐实控人朱晔宣布离职:暂时的离开是为更好相见
- 电脑技巧:加装SSD固态硬盘注意事项,电脑速度超流畅
- 【转录调控网络】基因转录调控网络——转录因子调控网络分析
- 什么是Zigbee,主要有哪些特点,主要应用于哪些领域?
- wma转mp3怎么弄_mp3格式转换器如何把wma转mp3格式(教程)
- pytorch-tenor-细节
- html太极旋转css,前端CSS技巧之太极旋转图详解
- ansi编码_刨根究底字符编码之零——前言