springboot 使用Spring Boot Actuator监控应用小结

下面是对“springboot使用SpringBootActuator监控应用小结”的详细讲解,包含完整的攻略和示例。

1. 什么是SpringBootActuator

SpringBootActuator是SpringBoot框架下的一个辅助工具,可以帮助开发者更好的管理和监控应用程序的运行情况。通过向应用程序的运行时环境中添加各种监控指标,开发者可以实时了解应用程序的运行状况,并且可以方便的采取措施来解决问题。

2. 使用SpringBootActuator监控应用程序

使用SpringBootActuator监控应用程序非常简单,只需要在项目中引入 actuator 的依赖,然后通过配置文件开启即可。

2.1 引入依赖

可以使用Maven来管理依赖,在pom.xml文件中添加以下的依赖:

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

2.2 开启监控

application.properties配置文件中添加以下配置:

# 开启所有的 actuator 端点
management.endpoints.web.exposure.include=*
# 或者:只开启 health 和 info 端点
# management.endpoints.web.exposure.include=health,info

# 对所有端点进行安全认证
management.endpoints.web.base-path=/admin
management.endpoints.web.path-mapping.health=health-check
management.endpoints.web.path-mapping.info=app-info

# 开启热部署支持
spring.devtools.restart.enabled=true
spring.devtools.restart.exclude=target/**/*
spring.devtools.restart.additional-paths=src/main/java
spring.devtools.restart.trigger-file=.restart_trigger

# 监控的健康检查指标
management.endpoint.health.show-details=always
management.health.defaults.enabled=false
management.health.diskSpace.enabled=true
management.health.db.enabled=true

# 数据源相关的监控指标
spring.datasource.name=Database
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
management.endpoints.web.exposure.include=*
management.endpoints.web.base-path=/admin
management.endpoints.web.path-mapping.health=health-check
management.endpoints.web.path-mapping.info=app-info
management.endpoint.health.show-details=always

这些配置大多数是可选的,但对于一些重要的和操作系统相关的健康检查指标,我们可能需要启用一些额外的功能。

2.3 查看监控指标

完成配置之后,我们就可以通过访问相应的端口,来获取应用程序的各种监控指标了。这些端点的域名为:http://{host}:{port}/actuator/{endpoint}

常用的端点包括:

  • /health: 返回应用程序的运行状态和各种指标。
  • /metrics: 返回应用程序运行时的性能统计数据。
  • /configprops: 返回应用程序的配置属性信息。
  • /env: 返回应用程序的环境变量配置信息。
  • /dump: 返回线程堆栈信息。
  • /mappings: 返回 URL 映射信息。
  • /trace: 返回 HTTP 请求跟踪信息。

注:SpringBoot v2.x 版本中,以上的端点名称都已过期,需添加前缀actuator,例如:/actuator/health

2.4 示例

下面是一个示例,假设我们已经启动了一个运行在本地 8080 端口的 SpringBoot 应用程序。为了查看当前应用程序的健康状态,我们可以访问以下的 URL:

http://localhost:8080/actuator/health

得到的输出可能类似于以下内容:

{
    "status": "UP",
    "details": {
        "diskSpace": {
            "status": "UP",
            "details": {
                "total": 1000240963584,
                "free": 802697148160,
                "threshold": null
            }
        },
        "mybatis": {
            "status": "UP"
        },
        "mongo": {
            "status": "UP",
            "details": {
                "version": "4.4.1"
            }
        }
    }
}

上述的返回结果说明了我们应用程序的磁盘空间和MongoDB的连接状态都是正常的。在这里,health指标会收集所有健康检查的信息,并将结果显示在格式化的 JSON字符串中。

在上面的配置中,我们还配置了一些额外的端点,例如:

  • /admin/health-check: 用于健康检查的端点;
  • /admin/app-info: 返回应用程序的信息;
  • /admin/{insert-custom-endpoint-here}: 自定义端点。

假设我们现在需要监控我们自定义的某个端点,假设他的域名是/admin/log-info,那我们只需要在Controller类中,添加以下内容:

@RestController
public class LogInfoController {
    private static final Logger logger = LoggerFactory.getLogger(LogInfoController.class);

    @PostMapping(value = "/admin/log-info")
    String logInfo() {
        logger.info("log info detected!");
        return "log info detected!";
    }
}

这个配置可以让我们记录一些特殊的日志消息,并为它们添加一个简单的 HTTP 结构。

现在,当我们访问/admin/log-info端点时,它将自动触发一个日志事件,并记录相关的HTTP请求。通过访问http://localhost:port/actuator/httptrace可以查看这些请求的详细信息。

3.总结

SpringBootActuator是一个非常强大的监控工具,可以帮助开发者实时监控应用程序的健康状况,了解各种运行状态和性能指标,以便更好地优化和管理我们的应用程序。这个工具非常容易配置和集成进我们的应用程序中,在开发和测试过程中都可以大大方便我们的使用。

还有就是通过集成Reactor提供的返回Mono的方式将健康检查的结果输出成流,灵活程度更高,这个可以具体看文档和实际的应用场景。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot 使用Spring Boot Actuator监控应用小结 - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • 一文吃透Elasticsearch

    本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~ Github地址 如果访问不了Github,可以访问gitee地址。 gitee地址 跟大家分享Elastic…

    Java 2023年4月17日
    00
  • spring控制事务的三种方式小结

    让我为您详细讲解一下“spring控制事务的三种方式小结”。 什么是事务 在介绍 Spring 的事务管理之前,我们需要先了解一下什么是事务。在数据库中,事务是指一组数据库操作,它们要么全部执行,要么全部不执行,是一个不可分割的工作单元。如果其中任意一条操作失败,那么整个事务就会被回滚,也就是所有已经提交的操作都会被回滚,回到事务开始前的状态。 Spring…

    Java 2023年5月20日
    00
  • Springboot中如何使用Jackson

    下面就是Spring Boot中如何使用Jackson的完整攻略。 什么是Jackson Jackson是一款用于Java平台的高效、功能强大的JSON库。它可以将Java对象转换为JSON格式的字符串,也可以将JSON格式的字符串转换为Java对象。Jackson是目前Java开发中最受欢迎的JSON库之一。 在Spring Boot中使用Jackson …

    Java 2023年5月19日
    00
  • 在JS中如何调用JSP中的变量

    在JS中如何调用JSP中的变量需要用到以下两步: 在JSP中将要调用的变量声明为JS全局变量 在JS中通过调用全局变量来获取JSP中的变量值 下面我们分别来详细讲解。 1. 声明全局变量 在JSP中,我们需要将要被JS调用的变量声明为全局变量。在JSP中,我们可以使用<script>标签来声明全局变量,例如: <% String name …

    Java 2023年6月15日
    00
  • Java中Exception和Error的区别详解

    Java中Exception和Error的区别详解 在Java中,Exception和Error是两种不同的异常类型,它们的发生和处理方式是不同的。本文将详细讲解Exception和Error的区别及其在程序开发中的应用。 异常的分类 在Java中,异常可以分为两种:受检异常和非受检异常(也称为运行时异常)。 受检异常 受检异常是指在程序运行期间可能出现的异…

    Java 2023年5月27日
    00
  • Java中FTPClient上传中文目录、中文文件名乱码问题解决方法

    为了解决Java中FTPClient上传中文目录、中文文件名乱码问题,我们需要进行如下步骤: 步骤一:设置编码格式 Java中的FTPClient默认编码为ISO-8859-1,需要将其改为UTF-8,以支持中文目录和文件名的上传。 FTPClient ftpClient = new FTPClient(); ftpClient.setControlEnco…

    Java 2023年5月20日
    00
  • JAVA StringBuffer类与StringTokenizer类代码解析

    JAVA StringBuffer类与StringTokenizer类代码解析 StringBuffer类 StringBuffer类是java中的一个类,位于java.lang包中。该类用于提供可变的字符串,它的长度和内容可以随时改变。在字符串频繁变化的应用场景下,使用StringBuffer相较于直接操作String具有更好的性能表现。 StringBu…

    Java 2023年5月26日
    00
  • httpclient重定向之后获取网址信息示例

    理解题意:本文旨在介绍如何利用 HttpClient 在网页发生重定向后获取最终网址信息的方法。本文将会提供两个示例帮助理解这个过程。 使用 HttpClient 获取重定向后的网址信息 在 HttpClient 中,针对重定向的处理分为两种: 允许重定向,并自动地重定向到最终站点,该方式称为自动重定向。 禁止重定向,返回非重定向的响应码,并在响应消息头中提…

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部