美文网首页框架建设收集
Spring Boot Application 监控利器:Spr

Spring Boot Application 监控利器:Spr

作者: ef6f9c30080a | 来源:发表于2019-07-27 09:51 被阅读209次

    前言

    接触和使用 Spring Boot,当然要知道 Spring Boot 的四大核心,包括:

    • Auto Configuration(自动配置)
    • Starter Dependency(启动依赖)
    • Spring Boot CLI (Command-Line Interface,命令行界面)
    • Spring Boot Actuator(监控利器)

    其中,Actuator 的出现,更是帮助了开发者可以更轻松的监控并管理应用程序。

    具体到 Spring Boot Application 中,只需要简单的引入 spring-boot-starter-actuator 依赖,配置开启相应的 Endpoint ,我们就可以通过 HTTP 或 JMX 的方式来访问这些暴露端点,以获取具体的监控信息:

    • 相关依赖
        <dependencies>
            <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>
        </dependencies>
    

    Endpoints

    从 Spring Boot 2.0 起,默认 Actuator 的基本访问路径带上了 /actuator ,且 HTTP 监控仅开放了 healthinfo 两个 Endpoint ,在 application.yml 配置文件中可以更改这些配置:

    • 配置信息
    spring:
      application:
        name: spring-boot-actuator
    
    # Actuator 配置
    management:
      server:
        address: localhost
        port: 8080
      endpoint:
        health:
          show-details: always
        shutdown:
          enabled: true
      endpoints:
        enabled-by-default: true
        web:
          exposure:
            include: "*"
            exclude:
            - auditevents
            - caches
        jmx:
          exposure:
            include:
            - info
            - health
            exclude: configprops
    

    在应用启动之后,通过访问 http://localhost:8080/actuator 来查看 Actuator 提供的这些监控功能:

    http://localhost:8080/actuator

    下图列出了一些常用的 Endpoint ,HTTP 访问的方式为: http://localhost:8080/actuator/${ID}

    常用的 Endpoint 常用的 Endpoint

    Health Indicator

    /actuator/health

    Health Indicator 是 Spring Boot Actuator 中最常用的功能之一,通过访问 /actuator/health 端点,可以获取应用、磁盘、中间件等服务的状态和信息。 在 Spring Boot 中,是通过 HealthIndicatorRegistry 来收集信息的,而 HealthIndicator 用于实现具体的健康检查逻辑,目前已支持内置的 HealthIndicator 清单已包含如下:

    HealthIndicator

    举个例子,想通过 Actuator 来查看 Redis 的状态,只需要补充相应的依赖及配置即可:

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-redis</artifactId>
            </dependency>
    
    spring:
      redis:
        url: redis://localhost:6379
    
    RedisHealthIndicator

    Custom

    幸运的是,Spring Boot Actuator 还允许开发者们自定义内容,包括 Endpoint、HealthIndicator和InfoContributor,有兴趣的可以自行看看文档资料。

    Metrics

    Metrics 也是 Actuator 提供支持的特色功能之一。简单来说,就是通过 Micrometer 门面把应用的一些状态指标等分发到其它监测系统中:

    Monitoring Systems

    如上图所示,这里以 Elastic 为例,看看具体如何使用这项功能,先补充相关依赖:

            <!-- https://mvnrepository.com/artifact/io.micrometer/micrometer-registry-elastic -->
            <dependency>
                <groupId>io.micrometer</groupId>
                <artifactId>micrometer-registry-elastic</artifactId>
                <version>1.1.4</version>
            </dependency>
    

    接着完善相关配置:

    management:
      metrics:
        export:
          elastic:
            enabled: true
            # Elasticsearch 服务端口
            host: http://localhost:9200
    

    启动服务,留意到控制台输出日志中有这么行信息:

    ElasticMeterRegistry

    等待1分钟后,借助 Head 插件可以看到相应的采集信息:

    metrics index

    参考阅读

    Spring Boot Actuator
    Spring Boot Actuator: Introduction
    Spring Boot Actuator: Endpoints
    Spring Boot Actuator: Metrics
    Micrometer Elastic

    示例源码
    欢迎关注我的个人公众号:超级码里奥
    如果这对您有帮助,欢迎点赞和分享,转载请注明出处

    相关文章

      网友评论

        本文标题:Spring Boot Application 监控利器:Spr

        本文链接:https://www.haomeiwen.com/subject/okjplctx.html