我们知道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应用监控相关推荐

  1. Spring Boot 应用监控:Actuator与 Admin

    第 III 部分Spring Boot 系统监控.测试与运维 Spring Boot 应用监控:Actuator与 Admin <Spring Boot 实战开发>(陈光剑) -- 基于 ...

  2. Spring Boot应用监控实战

    概述 之前讲过Docker容器的可视化监控,即监控容器的运行情况,包括 CPU使用率.内存占用.网络状况以及磁盘空间等等一系列信息.同样利用SpringBoot作为微服务单元的实例化技术选型时,我们不 ...

  3. Spring Boot指标监控与健康检查

    Spring Boot指标监控与健康检查 Actuator Spring Boot Actuator 可以帮助你监控和管理 Spring Boot 应用,比如健康检查.审计.统计和HTTP追踪等.所有 ...

  4. 第8章Spring Boot整合监控

    8.1 使用actuator监控 8.1.1 actuator是什么 在Spring Boot的众多Starter POMs中有一个特殊的模块,不同于其他模块大多用于开发业务功能或连接一些其他外部资源 ...

  5. 注册为Linux服务,docker部署,dockerfile,spring boot测试监控,actuator,项目远程访问,maven的scope标签

    1. 项目注册为 Linux服务 可以开启 关闭 开机启动 mvn package java -jar xxxx.jar pom加executable <build><plugins ...

  6. 面试官:聊一聊 Spring Boot 服务监控机制

    欢迎关注方志朋的博客,回复"666"获面试宝典 任何一个服务如果没有监控,那就是两眼一抹黑,无法知道当前服务的运行情况,也就无法对可能出现的异常状况进行很好的处理,所以对任意一个服 ...

  7. 聊聊Spring Boot服务监控,健康检查,线程信息,JVM堆信息,指标收集,运行情况监控等!...

    来自:https://juejin.im/post/5e2179def265da3e152d2561 前言 去年我们项目做了微服务1.0的架构转型,但是服务监控这块却没有跟上.这不,最近我就被分配了要 ...

  8. Spring Boot 服务监控,健康检查,线程信息,JVM堆信息,指标收集,运行情况监控...

    作者:Richard_Yi 来源:http://39sd.cn/B2A0B 去年我们项目做了微服务1.0的架构转型,但是服务监控这块却没有跟上.这不,最近我就被分配了要将我们核心的微服务应用全部监控起 ...

  9. 一文了解 Spring Boot 服务监控,健康检查,线程信息,JVM堆信息,指标收集,运行情况监控!...

    作者 | Richard_Yi 责编 | 徐威龙 稿源 | 掘金 封图| CSDN 下载于视觉中国 本文为作者个人经验,供大家参考. 去年我们项目做了微服务1.0的架构转型,但是服务监控这块却没有跟上 ...

最新文章

  1. Docker初学4:下载运行一些必要的镜像
  2. Laravel:使用Migrations
  3. bzoj 3339 莫队
  4. 接手一个网站后应做什么
  5. 一个域名可以对应多个ip地址吗_域名解析 | A记录 ,CNAME,MX,NS 你懂了吗
  6. python封装类连接mysql数据_python操作mysql数据库基本类封装
  7. 图卷积神经网络(part4)--GNN
  8. 代码整理工具_整理了 11 个好用的代码质量审核和管理工具
  9. 2012-01-17-05
  10. Java面试之阻塞队列
  11. AX7 Form继承接口
  12. 第二十四章 SHELL脚本-CENTOS7.5知识
  13. mysql子查询更改指定数据库_MySQL数据库update更新子查询
  14. 天线设计-电感计算以及天线匹配
  15. 大麦网抢票程序(二)之Selenium的使用
  16. myeclipse当前页面的脚本发生错误问题
  17. 数据分析模型篇—麦肯锡矩阵(GE矩阵)
  18. 如何解除计算机方向键问题,电脑键盘方向键错乱怎么处理
  19. siss编程--C语言--三子棋
  20. vue 实现电子签名功能 支持生成图片

热门文章

  1. 学海无涯——不想苦作舟
  2. 摩托罗拉 Moto XT800的CPU多少?
  3. IDEA debug下调试Evaluate
  4. CentOS安装验证PaceMaker
  5. mysql pacemaker_集群:corosync+pacemaker实现MySQL服务高可用
  6. win软件使用---克隆虚拟机
  7. 线上出现死锁怎么解决?不看别后悔!!!
  8. 如何提升数据分析能力,数据分析的正确步骤
  9. python语言基础项目报告书_Python语言基础01-初识Python
  10. CMake实战:安装测试和添加环境生成安装包