Actuator、心跳机制、endpoint

1.概念及作用:Actuator是Spring Boot的一个模块,它提供了一些生产级别的功能,如健康检查、审计、指标收集、HTTP跟踪等,监控和管理Spring Boot应用。这些功能可以通过HTTP和JMX访问。
2.应用:Actuator也可以和一些外部的应用监控系统整合(例如:Prometheus,Graphite,DataDog,Influx,Wavefront,New Relic等)这些监控系统提供了出色的的仪表板,图形,分析和警报,通过一个统一友好的界面,监视和管理应用程序。
3.使用
要使用Spring Boot Actuator提供的监控功能,需要在pom.xml中添加依赖

<!--        Actuator监控-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

加上这个maven依赖,Spring Boot在运行时就会自动开启/actuator/health和/actuator/info这两个endpoint。可以通过这两个endpoint查看当前Spring Boot 运行的情况。
如果Eureka客户端访问不了:则在application.yml中加入以下配置:

eureka:
  client:
    healthcheck:
      enabled: true 
      # 改用健康检查方式,使用Actuator/health端点来检查客户端健康状态
      【默认是通过心跳机制来检查,默认开启,不用做任何设置】

拓展:
一、心跳机制和Actuator:
心跳机制和Actuator是两种不同的健康检查方式,他们都用于监控和管理应用程序的健康状态。
但是工作原理和使用场景有所不同。

  • 心跳机制通常用于检查网络连接的状态。在这种机制中,客户端会定期向服务器发送心跳消息,表明自己还在运行。如果服务器在一定时间内没有收到某个客户端的心跳,那么服务器会认为这个客户端已经下线。心跳机制是一种轻量级的健康检查方式,它只能检查网络连接是否正常,不能检查应用程序的内部状态。

  • Spring Boot Actuator 则提供了更为详细和全面的健康检查功能。Actuator可以收集和暴露应用程序的各种信息,如内存使用情况、线程信息、HTTP请求和统计等。这些信息可以通过HTTP或JMX访问。Actuator还可以和一些外部的应用监控系统整合,如Prometheus,Graphite,DataDog,Influx,Wavefront,New Relic等。

-【其他几种健康检查方式】

  • TCP_HALF_OPEN:通过发送SYN包建立TCP连接,如果能收到SYN_ACK,就认为服务是健康的。
  • TCP ECV:通过发送定制的TCP报文,然后在返回值中匹配指定内容,判断应用状态。
  • HTTP GET:通过HTTP GET的方式,获取指定页面,通过判断页面中是否有指定的字符串,判断HTTP应用的健康状态。

二、endpoint是什么

在Spring Boot中,endpoint是一种可以暴露应用程序内部信息的机制。endpoint可以提供应用程序的健康状况、内存使用情况、线程信息、日志等信息。通过访问endpoint,可以更加方便的了解应用程序的运行情况,进行问题排查和监控。
Spring Boot 提供了一些内置的endpoint,比如/health、/metrics等,同时也支持自定义endpoint。这些endpoint主要用来监控应用服务的运行状况,并集成在MVC中提供查看接口。
例如:/health 会提供应用程序的健康状态信息,如数据库连接是否正常,磁盘空间是否足够等。/metrics 会提供一些应用程序指标,如JVM内存使用、系统CPU使用等。

常见的endpoint:

  • /actuator:查看有哪些 Actuator Endpoint 是开放的。
  • /actuator/auditevent:查看 audit 的事件,例如认证进入、订单失败,需要搭配 Spring security 使用。
  • /actuator/beans:查看运行当下里面全部的 bean,以及他们的关系。
  • /actuator/conditions:查看自动配置的结果,记录哪些自动配置条件通过了,哪些没通过。
  • /actuator/configprops:查看注入带有 @ConfigurationProperties 类的 properties 值(包含默认值)。
  • /actuator/env:查看全部环境属性,可以看到 SpringBoot 载入了哪些 properties,以及这些 properties 的值。
  • /actuator/flyway:查看 flyway DB 的 migration 信息。
  • /actuator/health:查看当前 SpringBoot 运行的健康指标。
  • /actuator/info:查看 properties 中 info 开头的属性的值。
  • /actuator/mappings:查看全部的 endpoint(包含 Actuator ),以及他们和 Controller 的关系。
  • /actuator/metrics:查看有哪些指标可以看(ex: jvm.memory.max、system.cpu.usage),使用 /actuator/metrics/{metric.name} 分别查看各指标的详细信息。
  • /actuator/scheduledtasks:查看定时任务的信息。
  • /actuator/shutdown:唯一 一个需要 POST 请求的 endpoint,优雅的关闭 SpringBoot 程序。默认是关闭的。
    【开启设置】:
#暴露所有接口,也可以指定特定接口
management.endpoints.web.exposure.include=*

#启用shutdown
management.endpoint.shutdown.enabled=true

你可能感兴趣的:(spring,boot,spring,cloud)