SpringBoot 指标监控
1. 简介
未来每一个微服务在云上部署以后,我们都需要对其进行监控、追踪、审计、控制等。SpringBoot就抽取了Actuator场景,使得我们每个微服务快速引用即可获得生产级别的应用监控、审计等功能。
2. 使用
2.1 引入场景依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency>
2.2 访问网址
http://localhost:8080/actuator/**
2.3 暴露所有监控信息为HTTP
# management 是所有actuator的配置
# management.endpoint.端点名.xxxx 对某个端点的具体配置
management:endpoints:enabled-by-default: true #暴露所有断电信息web:exposure:include: '*' #以web方式暴露endpoint:health:show-details: always #显示某一个端点的详细信息
测试:
http://localhost:8080/actuator/beans
http://localhost:8080/actuator/configprops
http://localhost:8080/actuator/metrics/application.ready.time
http://localhost:8080/actuator/endpointName/detailPath
3.Actuator EndPoint
3.1最常使用的端点:
ID | 描述 |
---|---|
auditevents | 暴露当前应用程序的审核事件信息。需要一个AuditEventRepository组件。 |
beans | 显示应用程序中所有Spring Bean的完整列表。 |
caches | 暴露可用的缓存。 |
conditions | 显示自动配置的所有条件信息,包括匹配或不匹配的原因。 |
configprops | 显示所有@ConfigurationProperties。 |
env | 暴露Spring的属性ConfigurableEnvironment |
flyway | 显示已应用的所有Flyway数据库迁移。需要一个或多个Flyway组件。 |
health | 显示应用程序运行状况信息。 |
httptrace | 显示HTTP跟踪信息(默认情况下,最近100个HTTP请求-响应)。需要一个HttpTraceRepository组件。 |
info | 显示应用程序信息。 |
integrationgraph | 显示Spring integrationgraph 。需要依赖spring-integration-core。 |
loggers | 显示和修改应用程序中日志的配置。 |
liquibase | 显示已应用的所有Liquibase数据库迁移。需要一个或多个Liquibase组件。 |
metrics | 显示当前应用程序的“指标”信息。 |
mappings | 显示所有@RequestMapping路径列表。 |
scheduledtasks | 显示应用程序中的计划任务。 |
sessions | 允许从Spring Session支持的会话存储中检索和删除用户会话。需要使用Spring Session的基于Servlet的Web应用程序。 |
shutdown | 使应用程序正常关闭。默认禁用。 |
startup | 显示由ApplicationStartup收集的启动步骤数据。需要使用SpringApplication进行配置 |
threaddump | 执行线程转储。 |
如果您的应用程序是Web应用程序(Spring MVC,Spring WebFlux或Jersey),则可以使用以下附加端点:
ID | 描述 |
---|---|
heapdump | 返回hprof堆转储文件。 |
jolokia | 通过HTTP暴露JMX bean(需要引入Jolokia,不适用于WebFlux)。需要引入依赖jolokia-core。 |
logfile | 返回日志文件的内容(如果已设置logging.file.name或logging.file.path属性)。支持使用HTTPRange标头来检索部分日志文件的内容。 |
prometheus | 以Prometheus服务器可以抓取的格式公开指标。需要依赖micrometer-registry-prometheus。 |
最常用的Endpoint
● Health:监控状况
● Metrics:运行时指标
● Loggers:日志记录
3.2 Health Endpoint
健康检查端点,我们一般用于在云平台,平台会定时的检查应用的健康状况,我们就需要Health Endpoint可以为平台返回当前应用的一系列组件健康状况的集合。
重要的几点:
● health endpoint返回的结果,应该是一系列健康检查后的一个汇总报告
● 很多的健康检查默认已经自动配置好了,比如:数据库、redis等
● 可以很容易的添加自定义的健康检查机制
3.3 Metrics Endpoint
提供详细的、层级的、空间指标信息,这些信息可以被pull(主动推送)或者push(被动获取)方式得到;
● 通过Metrics对接多种监控系统
● 简化核心Metrics开发
● 添加自定义Metrics或者扩展已有Metrics
3.4管理Endpoints
3.4.1开启与禁用Endpoints
● 默认所有的Endpoint除过shutdown都是开启的。
● 需要开启或者禁用某个Endpoint。配置模式为 management.endpoint..enabled = true
management:endpoint:beans:enabled: true
或者禁用所有的Endpoint然后手动开启指定的Endpoint
management:endpoints:enabled-by-default: falseendpoint:beans:enabled: truehealth:enabled: true
4.定制 Endpoint
4.1定制Health信息
@Component
//点点名为截取前半部分 MyCom
public class MyComHealthIndicator extends AbstractHealthIndicator {/*** 真实的检查方法* @param builder* @throws Exception*/@Overrideprotected void doHealthCheck(Health.Builder builder) throws Exception {//mongodb。 获取连接进行测试Map<String,Object> map = new HashMap<>();// 检查完成if(1 == 2){// builder.up(); //健康builder.status(Status.UP);map.put("count",1);map.put("ms",100);}else {// builder.down();builder.status(Status.OUT_OF_SERVICE);map.put("err","连接超时");map.put("ms",3000);}builder.withDetail("code",100).withDetails(map);}
}
4.2 定制info信息
import java.util.Collections;import org.springframework.boot.actuate.info.Info;
import org.springframework.boot.actuate.info.InfoContributor;
import org.springframework.stereotype.Component;@Component
public class ExampleInfoContributor implements InfoContributor {@Overridepublic void contribute(Info.Builder builder) {builder.withDetail("example",Collections.singletonMap("key", "value"));}}
4.3 定制Metrics信息
4.3.1 SpringBoot支持自动适配的Metrics
● JVM metrics, report utilization of:
○ Various memory and buffer pools
○ Statistics related to garbage collection
○ Threads utilization
○ Number of classes loaded/unloaded
● CPU metrics
● File descriptor metrics
● Kafka consumer and producer metrics
● Log4j2 metrics: record the number of events logged to Log4j2 at each level
● Logback metrics: record the number of events logged to Logback at each level
● Uptime metrics: report a gauge for uptime and a fixed gauge representing the application’s absolute start time
● Tomcat metrics (server.tomcat.mbeanregistry.enabled must be set to true for all Tomcat metrics to be registered)
● Spring Integration metrics
4.3.2 增加定制Metrics
@Service
public class CityServiceImpl implements CityService {@AutowiredCityMapper cityMapper;Counter counter;public CityServiceImpl(MeterRegistry meterRegistry){counter = meterRegistry.counter("cityService.saveCity.count");}public void saveCity(City city) {counter.increment();cityMapper.insert(city);}
}
4.4 定制Endpoint
@Component
@Endpoint(id = "container")
public class DockerEndpoint {@ReadOperationpublic Map getDockerInfo(){return Collections.singletonMap("info","docker started...");}@WriteOperationprivate void restartDocker(){System.out.println("docker restarted....");}}
5. 指标监控可视化
可视化
视频教程
SpringBoot 指标监控相关推荐
- SpringBoot指标监控
SpringBoot Actuator可以帮助程序员监控和管理SpringBoot,比如健康检查.内存使用情况.线程使用情况统计.添加Actuator依赖,即可使用Actuator监控项目 1. #开 ...
- SpringBoot - 构建监控体系02_定义度量指标和 Actuator 端点
文章目录 Pre Actuator 中的度量指标 Micrometer 度量库 Meter接口 计量器类型 如何创建这些计量器 扩展 Metrics 端点 自定义 Metrics 指标 使用 Mete ...
- SpringBoot——四大核心之指标监控(actuator)
1.写在前面 首先肯定要说一下SpringBoot的四大核心了: 自动装配:简单配置甚至零配置即可运行项目 起步依赖:场景启动器 Actuator:指标监控 命令行界面 :命令行 这篇文章呢,我来和大 ...
- SpringBoot Actuator监控【转】
springboot actuator 监控 springboot1.5和springboot2.0 的actuator在启动日志上的差异就很大了. springboot1.5在启动时会打印很多/XX ...
- springboot监控服务器信息,面试官:聊一聊SpringBoot服务监控机制
目录 前言 任何一个服务如果没有监控,那就是两眼一抹黑,无法知道当前服务的运行情况,也就无法对可能出现的异常状况进行很好的处理,所以对任意一个服务来说,监控都是必不可少的. 就目前而言,大部分微服务应 ...
- SpringBoot 服务监控机制,你了解多少?
点击关注公众号,实用技术文章及时了解 来源:blog.csdn.net/zwx900102/article/ details/115446997 前言 任何一个服务如果没有监控,那就是两眼一抹黑,无法 ...
- 面试官:聊一聊SpringBoot服务监控机制
面试官:聊一聊SpringBoot服务监控机制 前言 SpringBoot 监控 HTTP Endpoints 监控 内置端点 health 端点 loggers 端点 metrics 端点 自定义监 ...
- SpringBoot应用监控SpringBoot+Prometheus+Grafana
SpringBoot应用监控SpringBoot+Prometheus+Grafana 1. SpringBoot应用监控 1.1 SpringBoot应用监控 1.2 SpringBoot应用搭建 ...
- 002 第一季SpringBoot2核心技术-核心功能:配置文件、Web开发(原生组件)、数据访问、单元测试、指标监控、原理解析:@Value、命令行参数、手动获取bean、自定义starter
三.核心技术之- ->核心功能 1. 配置文件 1.1 文件类型 1.1.1 properties 同以前的properties用法 优先级高于yml的方式. 1.1.2 yaml 1) 简介 ...
最新文章
- gradle工程环境搭建---从SVN上导出项目源码
- word经常用到的技巧
- 混合多云架构_使用混合多云每个人都应避免的3个陷阱(第2部分)
- c++中new的总结(动态管理,malloc存在的问题,malloc与new的区别)
- 《计算机应用基础》期末试卷.,《计算机应用基础》期末试卷(A卷)《计算机应用基础》期末试卷(A卷).doc...
- react.js基础
- html5 规定输入字段,HTML5 Input属性详解
- 【数值分析】顺序高斯消去法和列主元高斯消去法的三个主要不同点
- java获取泛型的值_java 反射之获取泛型对象的所有字段与对应的值(包括父类的)...
- Doule类型转成十六进制查看
- VB.NET工作笔记002---asp调用vb6编写的activex dll
- python大佬养成计划--协程实现TCP连接
- ubtunu开机黑屏无桌面解决方法
- 如何使用Java代码获取文件、文件流或字符串的编码方式
- android 盒子dns设置,电视盒修改DNS,让你的上网速度更快!
- ubuntu 14.04 32位设置1920x1080分辨率
- 分享软件测试人员必备的60个测试工具,赶紧收藏起来
- 微信小程序登录服务器失败,微信小程序后台登录一直失败
- codereview(codereview什么意思)
- 通过阿里云ECS服务器部署FRP实现Windows自带远程桌面