十五、SpringBoot与监控管理

本文介绍了如何在Spring Boot应用中集成actuator组件,实现监控管理,包括启用endpoints、设置访问权限,并演示如何自定义HealthIndicators。重点讲解了健康检查和HTTP端点的配置,适合开发者理解和实践生产环境监控。

一、监控管理

通过引入 spring-boot-starter-actuator ,可以使用SpringBoot为我们提供准生产环境下的应用监控和管理功能。我们可以通过HTTP、JMX、SSH协议来进行操作,自动得到审计、健康及指标信息等

1. 步骤:

  1. 引入 spring-boot-starter-actuator
     <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-actuator</artifactId>
     </dependency>
    
  2. 通过http方式访问监控端点
    management:
      endpoints:
        #开启所有 endpoint 默认为true
        enabled-by-default: true
        web:
          exposure:
            # 端点默认情况下仅仅/health可以直接访问,其他endpoint是不可见的,这里我们把他设置为“*”,意思是全部可见,当让也可以单独设置是否可见
            include: "*"
          # 修改默认访问endpoint的路径
          base-path: /abc
      endpoint:
        # 远程关闭 shutdown 默认是关闭状态的,我们可以将它打开,通过post请求可以实现远程关闭应用
        shutdown:
          enabled: true
      # endpoint的服务端口,默认和web是相同的端口,也可以单独配置
      server:
        port: 8181
    
  3. 可以进行shutdown(POST提交,此端点默认关闭)

2. endpoints:

IDDescription
auditevents暴露出当前应用的一些审计信息. 需要一个@Bean AuditEventRepository 才可以生效
beans显示出当前应用程序的完整的Bean列表
caches暴露出可以使用的Cache
conditions显示出一些可评估的配置,自动配置类和他们的匹配条件
configprops显示出所有@ConfigurationProperties注解下的配置的集合
env暴露出一些spring的执行参数
flyway显示出数据库的转移路线。 需要一个或者多个 beans.Flyway 才生效
health显示应用的健康信息
httptrace显示http的追踪信息 (默认显示最新100个路由请求). 需要一个 bean.HttpTraceRepository 才生效
info显示自定义程序信息
integrationgraph显示spring的一些整合图. 需要.spring-integration-core 的相关依赖
loggers显示和更新一些关于logger的配置
liquibase显示提供的数据流信息,需要一个或者多个Liquibase 的Bean
metrics显示当前应用的一些指标信息
mappings显示所有的使用@RequestMapping 注解的路径信息
quartz显示一些Quartz 调度器job的信息.
scheduledtasks显示当前应用的调度任务信息
sessions允许从Session-backed 检索和删除一些用户session,对使用了spring-session的sevelet的web容器才生效
shutdown让应用可以优雅的关闭,默认是关闭的
startup显示了一些应用启动的过程信息 . 需要配置了ApplicationStartupSpringApplicationBufferingApplicationStartup 才生效
threaddump显示了一些线程相关信息
heapdump返回一个包含虚拟机参数的格式化文件
jolokia在Jolokia 存在环境变量中时会暴露出JMX相关的bean信息. 需要 jolokia-core 相关依赖
logfile返回日志文件的内容 (在日志文件配置情况下).支持使用HTTP 头信息去改变日志文件的部分内容
prometheus显示一些可以被Prometheus服务器识别的一些格式化信息,但是需要依赖micrometer-registry-prometheus

二、自定义HealthIndicators

@Component
public class MyHealthIndicator implements HealthIndicator {

    @Override
    public Health health() {
        int errorCode = check();
        if (errorCode != 0) {
            return Health.down().withDetail("Error Code", errorCode).build();
        }
        return Health.up().build();
    }

    private int check() {
        // perform some specific health check
        return ...
    }

}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天使吻过的BUG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值