使用Actuator 实现Spring Boot应用监控
我们知道Spring Boot 提供了Actuator组件,方便我们对应用程序进行监控和维护。接下来,就来介绍Actuator到底是什么?如何在Spring Boot项目中快速集成Actuator?
一、Actuator简介
1.Actuator是什么?
Actuator是Spring Boot提供的应用系统监控的开源框架,它是Spring Boot体系中非常重要的组件。它可以轻松实现应用程序的监控治理。支持通过众多 REST接口、远程Shell和JMX收集应用的运行情况。
2.端点(Endpoint)
Actuator的核心是端点(Endpoint),它用来监视、提供应用程序的信息,Spring Boot提供的spring-boot-actuator组件中已经内置了非常多的 Endpoint(health、info、beans、metrics、httptrace、shutdown等),每个端点都可以启用和禁用。Actuator也允许我们扩展自己的端点。通过JMX或HTTP的形式暴露自定义端点。
Actuator会将自定义端点的ID默认映射到一个带/actuator前缀的URL。比如,health端点默认映射到/actuator/health。这样就可以通过HTTP的形式获取自定义端点的数据。
Actuator同时还可以与外部应用监控系统整合,比如 Prometheus, Graphite, DataDog, Influx, Wavefront, New Relic等。这些系统提供了非常好的仪表盘、图标、分析和告警等功能,使得你可以通过统一的接口轻松的监控和管理你的应用系统。这对于实施微服务的中小团队来说,无疑快速高效的解决方案。
二、Spring Boot集成Actuator
在Spring Boot项目中集成Actuator非常简单,只需要在项目中添加spring-boot-starter-actuator组件,就能自动启动应用监控的功能。
首先,创建一个Spring Boot项目来添加spring-boot-starter-actuator依赖:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId> </dependency>
上面的示例所示,我们添加了actuator和web两个组件。spring-boot-starter-actuator除了可以监控Web系统外,还可以监控后台服务等Spring Boot应用。
然后,修改配置文件,配置Actuator端点
# 打开所有的监控点 management.endpoints.web.exposure.include=* management.endpoint.health.show-details=always
最后,启动项目并在浏览器中输入http://localhost:8080/actuator,我们可以看到返回的是Actuator提供的各种数据接口信息。
Actuator提供了丰富的数据接口,包括/health、/env、/metrics等。下面我们请求其中的一个地址/actuator/health,查看接口返回的详细信息。
如图上图所示,/health接口返回了系统详细的健康状态信息,包括系统的状态(UP为正常)、磁盘使用情况等信息。
三、自定义端点
Spring Boot支持自定义端点,只需要在我们定义的类中使用@Endpoint、@JmxEndpoint、@WebEndpoint等注解,实现对应的方法即可定义一个Actuator中的自定义端点。从Spring Boot 2.x版本开始,Actuator支持CRUD(增删改查)模型,而不是旧的RW(读/写)模型。我们可以按照3种策略来自定义:
- 使用@Endpoint注解,同时支持JMX和HTTP方式。
- 使用@JmxEndpoint 注解,只支持JMX技术。
- 使用@WebEndpoint注解,只支持HTTP。
编写自定义端点类很简单,首先需要在类前面使用@Endpoint注解,然后在类的方法上使用@ReadOperation、@WriteOperation或@DeleteOperation(分别对应HTTP中的GET、POST、DELETE)等注解获取、设置端点信息。
下面我们创建一个获取系统当前时间的自定义端点。
首先,创建自定义端点类SystemTimeEndpoint,使用@Endpoint注解声明端点ID,同时需要使用@Component注解,将此类交给Spring Boot管理。示例代码如下:
/** 自定义端点类* @Endpoint //表示这是一个自定义事件端点类* Endpoint 中有一个id //它是设置端点的URL路径* */ @Endpoint(id="systemtime") //端点路径不要与系统自带的重合 @Component public class SystemTimeEndpoint {//一般端点都是对象,或者一个json返回的格式,所以通常我们会将端点定义一个MAP的返回形式//通过ReadOperation//访问地址是根据前缀+ endpoint 的ID///actuator/systemtimeprivate String format = "yyyy-MM-dd HH:mm:ss";@ReadOperation //显示监控指标public Map<String,Object> info(){Map<String,Object> info = new HashMap<>();info.put("system","数据管理服务");info.put("memo","系统当前时间端点");info.put("datetime",new SimpleDateFormat(format).format(new Date()));return info;}//动态修改指标@WriteOperation //动态修改指标,是以post方式修改public void setFormat(String format){this.format = format;} }
上面的示例中,我们通过@Endpoint注解定义一个自定义端点,参数id为自定义端点的唯一标识和访问路径,必须唯一不重复。
做好这些配置后,就能访问http://127.0.0.1:8080/actuator/systemtime端点了,如图下图所示。
最后
以上,Actuator到底是什么,如何在Spring Boot项目中快速集成Actuator介绍完了。Actuator是Spring Boot 提供的非常重要的应用监控组件,希望大家能熟悉掌握。
原文链接:https://developer.51cto.com/article/700961.html
使用Actuator 实现Spring Boot应用监控相关推荐
- Spring Boot 应用监控:Actuator与 Admin
第 III 部分Spring Boot 系统监控.测试与运维 Spring Boot 应用监控:Actuator与 Admin <Spring Boot 实战开发>(陈光剑) -- 基于 ...
- Spring Boot应用监控实战
概述 之前讲过Docker容器的可视化监控,即监控容器的运行情况,包括 CPU使用率.内存占用.网络状况以及磁盘空间等等一系列信息.同样利用SpringBoot作为微服务单元的实例化技术选型时,我们不 ...
- Spring Boot指标监控与健康检查
Spring Boot指标监控与健康检查 Actuator Spring Boot Actuator 可以帮助你监控和管理 Spring Boot 应用,比如健康检查.审计.统计和HTTP追踪等.所有 ...
- 第8章Spring Boot整合监控
8.1 使用actuator监控 8.1.1 actuator是什么 在Spring Boot的众多Starter POMs中有一个特殊的模块,不同于其他模块大多用于开发业务功能或连接一些其他外部资源 ...
- 注册为Linux服务,docker部署,dockerfile,spring boot测试监控,actuator,项目远程访问,maven的scope标签
1. 项目注册为 Linux服务 可以开启 关闭 开机启动 mvn package java -jar xxxx.jar pom加executable <build><plugins ...
- 面试官:聊一聊 Spring Boot 服务监控机制
欢迎关注方志朋的博客,回复"666"获面试宝典 任何一个服务如果没有监控,那就是两眼一抹黑,无法知道当前服务的运行情况,也就无法对可能出现的异常状况进行很好的处理,所以对任意一个服 ...
- 聊聊Spring Boot服务监控,健康检查,线程信息,JVM堆信息,指标收集,运行情况监控等!...
来自:https://juejin.im/post/5e2179def265da3e152d2561 前言 去年我们项目做了微服务1.0的架构转型,但是服务监控这块却没有跟上.这不,最近我就被分配了要 ...
- Spring Boot 服务监控,健康检查,线程信息,JVM堆信息,指标收集,运行情况监控...
作者:Richard_Yi 来源:http://39sd.cn/B2A0B 去年我们项目做了微服务1.0的架构转型,但是服务监控这块却没有跟上.这不,最近我就被分配了要将我们核心的微服务应用全部监控起 ...
- 一文了解 Spring Boot 服务监控,健康检查,线程信息,JVM堆信息,指标收集,运行情况监控!...
作者 | Richard_Yi 责编 | 徐威龙 稿源 | 掘金 封图| CSDN 下载于视觉中国 本文为作者个人经验,供大家参考. 去年我们项目做了微服务1.0的架构转型,但是服务监控这块却没有跟上 ...
最新文章
- Docker初学4:下载运行一些必要的镜像
- Laravel:使用Migrations
- bzoj 3339 莫队
- 接手一个网站后应做什么
- 一个域名可以对应多个ip地址吗_域名解析 | A记录 ,CNAME,MX,NS 你懂了吗
- python封装类连接mysql数据_python操作mysql数据库基本类封装
- 图卷积神经网络(part4)--GNN
- 代码整理工具_整理了 11 个好用的代码质量审核和管理工具
- 2012-01-17-05
- Java面试之阻塞队列
- AX7 Form继承接口
- 第二十四章 SHELL脚本-CENTOS7.5知识
- mysql子查询更改指定数据库_MySQL数据库update更新子查询
- 天线设计-电感计算以及天线匹配
- 大麦网抢票程序(二)之Selenium的使用
- myeclipse当前页面的脚本发生错误问题
- 数据分析模型篇—麦肯锡矩阵(GE矩阵)
- 如何解除计算机方向键问题,电脑键盘方向键错乱怎么处理
- siss编程--C语言--三子棋
- vue 实现电子签名功能 支持生成图片