1.说明

本文详细介绍Spring Boot集成Actuator监控管理的方法,
基于已经创建好的Spring Boot工程,
然后引入Actuator依赖,
介绍监控管理相关功能的使用。
Spring Boot提供的准生产环境下的应用监控和管理功能,
可以通过HTTP,JMX协议来进行操作,
自动获得审计、运行状态及度量指标等信息。
本文主要介绍通过HTTP进行监控和管理,
另外通过配置SSL,能够支持HTTPS协议操作。

2.引入依赖

修改pom.xml文件,
引入spring-boot-starter-actuator依赖:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

实际使用的版本是2.3.1.RELEASE,
后面的演示说明都是基于这个版本。

3.启动服务

配置文件和启动类都无需修改,
只要是一个Spring Boot微服务就行。
在application.yml文件指定了服务启动端口,
方便后面使用HTTP访问:

server:
port: 8011

启动成功日志:

.   ____          _            __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.3.1.RELEASE) 17:17:10.366 [restartedMain] INFO com.yuwen.spring.actuator.ActuatorApplication - Starting ActuatorApplication on yuwen-asiainfo with PID 9740 (D:\Code\Learn\SpringBoot\spring-boot-demo\actuator\target\classes started by yuwen in D:\Code\Learn\SpringBoot\spring-boot-demo\actuator)
17:17:10.371 [restartedMain] INFO com.yuwen.spring.actuator.ActuatorApplication - No active profile set, falling back to default profiles: default
17:17:10.425 [restartedMain] INFO org.springframework.boot.devtools.env.DevToolsPropertyDefaultsPostProcessor - Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable
17:17:10.425 [restartedMain] INFO org.springframework.boot.devtools.env.DevToolsPropertyDefaultsPostProcessor - For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG'
17:17:11.107 [restartedMain] INFO org.springframework.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8011 (http)
17:17:11.118 [restartedMain] INFO org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8011"]
17:17:11.118 [restartedMain] INFO org.apache.catalina.core.StandardService - Starting service [Tomcat]
17:17:11.118 [restartedMain] INFO org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.36]
17:17:11.164 [restartedMain] INFO org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
17:17:11.164 [restartedMain] INFO org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 738 ms
17:17:11.326 [restartedMain] INFO org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
17:17:11.497 [restartedMain] INFO org.springframework.boot.devtools.autoconfigure.OptionalLiveReloadServer - LiveReload server is running on port 35729
17:17:11.500 [restartedMain] INFO org.springframework.boot.actuate.endpoint.web.EndpointLinksResolver - Exposing 2 endpoint(s) beneath base path '/actuator'
17:17:11.513 [restartedMain] INFO org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-8011"]
17:17:11.526 [restartedMain] INFO org.springframework.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 8011 (http) with context path ''
17:17:11.566 [restartedMain] INFO com.yuwen.spring.actuator.ActuatorApplication - Started ActuatorApplication in 1.414 seconds (JVM running for 2.41)
17:17:12.939 [RMI TCP Connection(9)-127.0.0.1] INFO org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet'
17:17:12.939 [RMI TCP Connection(9)-127.0.0.1] INFO org.springframework.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
17:17:12.942 [RMI TCP Connection(9)-127.0.0.1] INFO org.springframework.web.servlet.DispatcherServlet - Completed initialization in 3 ms

请注意如下日志:

Exposing 2 endpoint(s) beneath base path '/actuator'

说明在基本路径'/actuator'下暴露2个端点。

4.通过日志查看暴露的端点

上面的日志只说明了暴露了2个端点,
具体对外暴露的端点可以通过配置日志查看。

修改log4j2.xml日志级别为Trace:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="TRACE">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>

重启服务可以看到如下日志:

17:20:34.665 [restartedMain] INFO  org.springframework.boot.actuate.endpoint.web.EndpointLinksResolver - Exposing 2 endpoint(s) beneath base path '/actuator'
17:20:34.666 [restartedMain] TRACE org.springframework.beans.factory.support.DefaultListableBeanFactory - Eagerly caching bean 'webEndpointServletHandlerMapping' to allow for resolving potential circular references
17:20:34.666 [restartedMain] TRACE org.springframework.beans.factory.support.DefaultListableBeanFactory - Invoking afterPropertiesSet() on bean with name 'webEndpointServletHandlerMapping'
17:20:34.666 [restartedMain] TRACE org.springframework.boot.actuate.endpoint.web.servlet.WebMvcEndpointHandlerMapping - Register "{GET /actuator/health, produces [application/vnd.spring-boot.actuator.v3+json || application/vnd.spring-boot.actuator.v2+json || application/json]}" to java.lang.Object org.springframework.boot.actuate.endpoint.web.servlet.AbstractWebMvcEndpointHandlerMapping$OperationHandler.handle(javax.servlet.http.HttpServletRequest,java.util.Map<java.lang.String, java.lang.String>)
17:20:34.666 [restartedMain] TRACE org.springframework.boot.actuate.endpoint.web.servlet.WebMvcEndpointHandlerMapping - Register "{GET /actuator/health/**, produces [application/vnd.spring-boot.actuator.v3+json || application/vnd.spring-boot.actuator.v2+json || application/json]}" to java.lang.Object org.springframework.boot.actuate.endpoint.web.servlet.AbstractWebMvcEndpointHandlerMapping$OperationHandler.handle(javax.servlet.http.HttpServletRequest,java.util.Map<java.lang.String, java.lang.String>)
17:20:34.666 [restartedMain] TRACE org.springframework.boot.actuate.endpoint.web.servlet.WebMvcEndpointHandlerMapping - Register "{GET /actuator/info, produces [application/vnd.spring-boot.actuator.v3+json || application/vnd.spring-boot.actuator.v2+json || application/json]}" to java.lang.Object org.springframework.boot.actuate.endpoint.web.servlet.AbstractWebMvcEndpointHandlerMapping$OperationHandler.handle(javax.servlet.http.HttpServletRequest,java.util.Map<java.lang.String, java.lang.String>)
17:20:34.667 [restartedMain] TRACE org.springframework.boot.actuate.endpoint.web.servlet.WebMvcEndpointHandlerMapping - Register "{GET /actuator, produces [application/vnd.spring-boot.actuator.v3+json || application/vnd.spring-boot.actuator.v2+json || application/json]}" to public java.util.Map<java.lang.String, java.util.Map<java.lang.String, org.springframework.boot.actuate.endpoint.web.Link>> org.springframework.boot.actuate.endpoint.web.servlet.WebMvcEndpointHandlerMapping$WebMvcLinksHandler.links(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)

可以看到有4个URL服务端点:

GET /actuator/health
GET /actuator/health/**
GET /actuator/info
GET /actuator

其中一个是/actuator自己,
/actuator下面有3个URL,
但是/health和/health/**其实是1个端点,
所以日志中说是在基本路径下暴露2个端点。

5.通过HTTP查看暴露的端点

浏览器访问监控管理提供的基本路径:

http://localhost:8011/actuator

同样可以看到暴露出来的所有端点:

{
"_links": {
"self": {
"href": "http://localhost:8011/actuator",
"templated": false
},
"health": {
"href": "http://localhost:8011/actuator/health",
"templated": false
},
"health-path": {
"href": "http://localhost:8011/actuator/health/{*path}",
"templated": true
},
"info": {
"href": "http://localhost:8011/actuator/info",
"templated": false
}
}
}

6.查看health端口

访问上面查询出的health端口:

http://localhost:8011/actuator/health

返回结果:

{
"status": "UP"
}

代表监控的微服务状态是正常运行的。

7.查看info端口

访问上面查询出的info端口:

http://localhost:8011/actuator/info

返回结果:

{}

返回结果为空,
因为还没有在application.yml中设置参数。

8.新增info参数

在application.yml中新增info参数:

info:
description: spring boot actuator

在info下新增description参数,
重启服务后访问info端口:

http://localhost:8011/actuator/info

返回结果:

{
"description": "spring boot actuator"
}

可以看到新增的参数能够查询出来了,
实际上在info下可以新增任意参数,
都能够通过info端点查询出来。

9.参考文档

Spring Boot Actuator: Production-ready Features

SpringBoot集成Actuator监控管理的更多相关文章

  1. springboot集成Actuator

    Actuator监控端点,主要用来监控与管理. 原生端点主要分为三大类:应用配置类.度量指标类.操作控制类. 应用配置类:获取应用程序中加载的配置.环境变量.自动化配置报告等与SpringBoot应用 ...

  2. SpringBoot集成actuator模块的基本使用

    © 版权声明:本文为博主原创文章,转载请注明出处 1. 版本 SpringBoot:2.0.0.RELEASE 2. 集成 SpringBoot集成actuator模块非常简单,只需要引入actuat ...

  3. SpringBoot系列: Actuator监控

    Sprng Boot 2 actuator变动加大, 网上很多资料都都已经过期. ============================配置项============================ ...

  4. SpringBoot集成Actuator端点配置

    1.说明 Actuator端点可以监控应用程序并与之交互. Spring Boot包括许多内置的端点, 比如health端点提供基本的应用程序运行状况信息, 并允许添加自定义端点. 可以控制每个单独的 ...

  5. SpringBoot集成Actuator健康指示器health

    1.说明 本文详细介绍Actuator提供的HealthIndicators, 即健康指示器的配置使用, 利用自动配置的健康指标, 检查正在运行的应用程序的状态, 以及自定义健康指标的方法. 监控软件 ...

  6. SpringBoot集成Swagger接口管理工具

    手写Api文档的几个痛点: 文档需要更新的时候,需要再次发送一份给前端,也就是文档更新交流不及时. 接口返回结果不明确 不能直接在线测试接口,通常需要使用工具,比如postman 接口文档太多,不好管 ...

  7. SpringBoot要点之使用Actuator监控

    Actuator是Springboot提供的用来对应用系统进行自省和监控的功能模块,借助于Actuator开发者可以很方便地对应用系统某些监控指标进行查看.统计等. 在pom文件中加入spring-b ...

  8. java框架之SpringBoot(17)-监控管理

    介绍 SpringBoot 提供了监控管理功能的场景启动器,它可以为我们提供准生产环境下的应用监控和管理功能.我们可以通过HTTP.JMX.SSH协议来进行操作,自动得到审计.健康及指标信息等. 使用 ...

  9. Spring Boot整合actuator实现监控管理

    Spring Boot使用actuator监控管理 1.在pom文件中导入相关的依赖 <dependency> <groupId>org.springframework.boo ...

随机推荐

  1. Linux服务器---论坛discuz

    Discus Discuz是一款免费的论坛管理系统,大量的使用了AJAX,内部有丰富的模板风格. 1.下载discuz软件(https://cn.wordpress.org/download/rele ...

  2. JFinal之ActiveRecord开发示例

    JFinal独创Db + Record模式示例 JFinal配备的ActiveRecord插件,除了实现了类似Rails ActiveRecrod的功能之外,还实现了Db + Record模式,此模式 ...

  3. Oracle常用函数(SQL语句)

    使用sql函数,您可以在一个select语句的查询当中,直接计算数据库资料的平均值.总数.最小值.最大值.总和.标准差.变异数等统计.使用recordset对象时,也可使用这些sql函数. sql函数 ...

  4. matplotlib animation

    import numpy as np from matplotlib import pyplot as plt from matplotlib import animation fig, ax = p ...

  5. 【软件安装与配置】【Java】Eclipse For Java EE的安装

    Eclipse For Java EE的安装 哔哩哔哩:萌狼蓝天 微信公众号:萌狼蓝天 博客:萌狼工作室 00 提前说明 因为编程涉及的环境配置资源比较多,所以我专门创建了一个文件夹(Developm ...

  6. 了解LINQ

    本文主要的是泛谈LINQ是啥?以及常见的用法大纲如下: LINQ的那些根基 LINQ的一些基本用法 LINQ的根基 IEnumerable和IEnumerator 为啥能够被foreach? 实际上, ...

  7. shell脚本 查看cpu的温度

    一.简介 源码地址 日期:2018/8/24 介绍:查看主板上单个多核CPU中温度最高的一个内核 效果图: 二.使用 适用:centos6+ 语言:英文 注意:需要先安装lm_sensors,不支持虚 ...

  8. Java 在Word中嵌入多媒体(视频、音频)文件

    Word中可将Office(Word/Excel/PowerPoint).PDF.txt等文件作为OLE对象插入到文档中,双击该对象可直接访问或编辑该文件,除了以上常见的文件格式对象,也可以插入多媒体 ...

  9. HGAME2021 week2 pwn writeup

    week2一共有4道pwn题 killerqueen 有格式化字符串漏洞,题不算难,但是故事情节真实让人摸不着头脑,但是仔细分析分析,理清楚逻辑就可以做了. 第一次choose1的时候,可以输入0,泄 ...

  10. [BUUCTF]PWN——xdctf2015_pwn200

    xdctf2015_pwn200 附件 步骤 例行检查,32位程序,开启了nx保护 本地试运行一下程序,看看大概的情况 32位ida载入,习惯性的检索程序里的字符串,没有发现什么铭感的地方,直接看ma ...