`

SpringBoot:Actuator 应用监控管理

阅读更多

编写不易,转载请注明(http://shihlei.iteye.com/blog/2433665)!

一 概述

SpringBoot Actuator 是SpringBoot提供的 “应用监控管理” 工具,可以方便的获取系统的各种信息,配合其他的监控工具定时采集这些信息完成系统监控。

 

Endpoint 是 Actuator 暴露的信息端点,Actuator 内建了众多的Endpoint 覆盖了常用的监控管理点,同时开发一套框架,方便应用定义自己的Endpoint。

 

应用获得 Actuator 只需要添加“spring-boot-starter-actuator”依赖即可。

 

doc:https://docs.spring.io/spring-boot/docs/2.0.1.RELEASE/reference/htmlsingle/#production-ready

 

注:文章基于 SpringBoot 版本 : 2.0.5.RELEASE

 

二 Actuator 使用

1)Actuator 使用初步

(1)添加依赖

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

 

(2)添加配置

 

# actuator 监控
management:
  # 监控开放的端口,可以区别于 应用web服务端口
  server:
    port: 8088
  endpoints:
    # 配置Http 暴露的 Endpoint
    web:
      exposure:
        # include 用于开放指定Endpoint,只开放需要的,默认["info","health"]
        include: ["*"]
        # exclude 用于排除指定的Endpoint,只开放需要的
        exclude: []
      # web 访问路径
      base-path: /actuator


    # 配置Http 暴露的 Endpoint
    jmx:
      exposure:
        # include 用于开放指定Endpoint,只开放需要的,默认["*"]
        include: ["*"]
        # exclude 用于排除指定的Endpoint,只开放需要的
        exclude: []

    # enable 用于 开启禁用 某个 Endpoint, "shutdown" 为 Endpoint id
    shutdown:
      enabled: true

  # headlth Endpoint 配置
  endpoint:
    health:
      show-details: always

 

(3)启动 SpringBoot App

  【1】Idea SpringBoot RunDashboard 查看



 

 【2】web访问:Http://localhost:8088/actuator

 

 

2)内建Endpoint 说明:

(1)概述:

Actuator 默认内建了大量的Endpoint,提供了常用的监控管理功能。按照Endpoint的职能,一般分为如下三类:

(a)配置类:查看应用启动时的某些配置信息

(b)指标类:查看应用运行时的实时信息

(c)控制类:操作应用,例如重启,关闭等

 

(2)SpringBoot2.0 内建Endpoint举例说明

【1】应用信息

info:显示yml配置的应用信息。

env,env-toMatch:环境信息

 

【2】配置:可用于检查系统的注入情况是否正确

beans:应用的 bean 列表

conditions:显示Conguration或AutoCongration创建的Bean及创建是Condition的匹配程度

loggers,loggers-name:日志Logger的信息

 

mappings:web应用@RequestMapping信息

 

【3】实时信息

health:健康信息

heapdump,threaddump:堆dump,线程栈dump

httptrace:最近该应用的http请求跟踪

metrics,metrics-requiredMetricName:监控信息

 

【4】操作:比较危险,一般不开放操作

shutdown:关闭应用

 

(3)开启关闭Endpoint配置:

management.endpoints.enabled-by-default=false
management.endpoint.[endpoint id].enabled=true

 

三 自定义 Endpoint

1)概述

Actuator 内建很多Endpoint ,基本涵盖各个分类,如果业务需要,某些监控管理功能不是和复用或扩展已有的Endpoint,可以自定义Endpoint。

 

2)自定义 Demo

(1)概述:

自定义Endpoint 需要2步:添加@Endpoint 注解修饰的Endpoint类,通过 @ReadOperation ,@WriteOperation,@DeleteOperation。注解方法。通过 Conguration 注册到容器中。

 

@ReadOperation:注解的方法提供获取信息的能力

@WriteOperation:注解的方法提供修改能力

@DeleteOperation:注解的方法某些删除能力

 

Demo 定义一个名叫 app 的endpoint ,提供name,platform信息

 

(2)Demo实现

依赖:

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

 

【1】定义Endpoint 类

App:

package x.demo.springboot.actuator.app;

/**
 * App 信息
 *
 */
public class App {
    private String name;
    private String platform;

    public App() {

    }

    public App(String name, String platform) {
        this.name = name;
        this.platform = platform;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPlatform() {
        return platform;
    }

    public void setPlatform(String platform) {
        this.platform = platform;
    }
}

 

Endpoint:

package x.demo.springboot.actuator.app;

import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
import org.springframework.boot.actuate.endpoint.annotation.WriteOperation;

@Endpoint(id = "app")
public class AppEndpoint {
    App app = new App("actuator-test", "ios");

    @ReadOperation
    public App read() {
        return app;
    }

    @WriteOperation
    public String write(String name, String platform) {
        app.setName(name);
        app.setPlatform(platform);
        return "success";
    }
}

  

【2】添加Configuration

package x.demo.springboot.actuator.app;

import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnEnabledEndpoint;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * AppEndpointAutoConfiguration
 */
@Configuration
public class AppEndpointConfiguration {

    @Bean
    @ConditionalOnMissingBean
    @ConditionalOnEnabledEndpoint
    public AppEndpoint appEndpoint() {
        return new AppEndpoint();
    }

} 

 

如果是自定义Starter里的Endpoint 可以配置下 AutoConfiguration:在META-INF/spring.factories 添加

# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
x.demo.springboot.actuator.app.AppEndpointConfiguration

 

【3】启动

 

【4】JMX修改:jconsole --> MBean --> Endpoint --> read/write



 

 四 Health Endpoint

1)概述:

Health Endpoint 如前所述,可以提供应用的健康信息,包括应用自己和应用依赖的中间件或服务(如Redis,db等),所有组件工作正常,应用的status才是up状态。

 

HealthIndicator是 Health Endpoint 设计的组件的探测器,亦是扩展口,可以通过提供HealthIndicator,通知 Health Endpoint 探测我们关注的依赖服务的健康情况。

 

提供 HealthIndicator 主要两种方式:实现 HealthIndicator 或 继承 AbstractHealthIndicator 等

 

2)Demo

(1)方式一:实现 HealthIndicator

package x.demo.springboot.actuator.health;

import org.springframework.boot.actuate.health.Health;
import org.springframework.boot.actuate.health.HealthIndicator;
import org.springframework.stereotype.Component;

/**
 * AppHealthIndicator
 *
 */
@Component("app")
public class AppHealthIndicator implements HealthIndicator {

    /**
     * Return an indication of health.
     *
     * @return the health for
     */
    @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() {
        return -1;
    }
}

 

(2)方式二:继承 AbstractHealthIndicator

package x.demo.springboot.actuator.health;

import org.springframework.boot.actuate.health.AbstractHealthIndicator;
import org.springframework.boot.actuate.health.Health;
import org.springframework.stereotype.Component;

/**
 * AppExtraHealthIndicator
 *
 */
@Component("app-extra")
public class AppExtraHealthIndicator extends AbstractHealthIndicator {

    /**
     * Actual health check logic.
     *
     * @param builder the {@link Builder} to report health status and details
     * @throws Exception any {@link Exception} that should create a {@link Status#DOWN}
     *                   system status.
     */
    @Override
    protected void doHealthCheck(Health.Builder builder) throws Exception {
        // 如果不正常,抛异常接口,AbstractHealthIndicator 完成异常捕获,down
        builder.up().withDetail("app-extra", "app-extra");
    }
}

 

(3)提供Configuration 通知框架

package x.demo.springboot.actuator.health;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * AppHealthIndicatorConfiguration
 */
@Configuration
public class AppHealthIndicatorConfiguration {

    // 指定名字
    @Bean("app-state")
    AppHealthIndicator appHealthIndicator() {
        return new AppHealthIndicator();
    }

    @Bean("app-state-extra")
    AppExtraHealthIndicator appExtraHealthIndicator() {
        return new AppExtraHealthIndicator();
    }
}

 

(4)验证

 

 

  • 大小: 273.7 KB
  • 大小: 355 KB
  • 大小: 135.2 KB
  • 大小: 79 KB
  • 大小: 184.1 KB
  • 大小: 80.8 KB
  • 大小: 259.5 KB
分享到:
评论

相关推荐

    11springboot+actuator监控1

    在Spring Boot生态系统中,Spring Boot Actuator是一个非常重要的模块,它为我们的应用程序提供了丰富的监控和管理功能。通过Actuator,开发者可以轻松地了解应用的健康状况、性能指标、日志输出以及更多的运行时...

    一个使用springboot actuator监控应用的实战项目例子

    一个使用springboot actuator监控应用的实战项目例子,对于想使用actuator来监控应用的初级程序员来说是一个不错的学习例子! 关注我!给我留言或者私信发邮箱,看到的话可以给你们发资源哦~

    SpringBoot2.0-Actuator监控参数说明

    SpringBoot2.0-Actuator是Spring Boot框架中的一个强大组件,主要负责提供应用程序的监控和管理能力。在Spring Boot应用中,Actuator通过暴露一系列的端点(endpoints),使得开发者可以方便地查看和操作应用程序的...

    详解关于springboot-actuator监控的401无权限访问

    Spring Boot Actuator是一款基于Spring Boot的监控工具,提供了许多有用的endpoint来监控和管理应用程序。这些endpoint包括beans、configprops、dump、env、health、info、metrics、mappings、shutdown、trace等,每...

    使用SpringBoot Actuator监控应用示例

    SpringBoot Actuator是Spring Boot框架中的一个核心组件,专门用于应用程序的监控和管理。它提供了一组丰富的端点(endpoints),允许开发者深入了解应用程序的运行状态、性能指标、配置信息等,从而帮助优化和维护...

    SpringBoot2.0-Actuator监控参数说明 - 最全文档.docx

    -- 监控和管理应用程序 --&gt; &lt;groupId&gt;org.springframework.boot &lt;artifactId&gt;spring-boot-starter-actuator ``` ##### 2.2 端点信息 端点(Endpoint)是Spring Boot Actuator的核心概念之一,它提供了对...

    SpringBoot 监控管理模块actuator没有权限的问题解决方法

    SpringBoot 监控管理模块actuator 没有权限的问题解决方法 SpringBoot 监控管理模块actuator 是一个功能强大且灵活的监控管理模块,它提供了一系列的监控和管理功能,例如自动配置报告、 Beans 列表、配置属性、...

    一文搞懂并学会使用SpringBoot的Actuator运行状态监控组件的详细教程

    SpringBoot的Actuator组件是Spring Boot框架中用于监控和管理应用程序的一个强大工具。它提供了丰富的端点(endpoints),允许开发者深入了解应用的运行状态,包括健康检查、审计日志、指标统计、环境信息以及应用的...

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

    Spring Boot Actuator 是 Spring Boot 框架提供的对应用系统的自省和监控的集成功能,可以查看应用配置的详细信息,例如自动化配置信息、创建的 Spring beans 以及一些环境属性等。Actuator 监控只需要添加以下依赖...

    springboot:springboot演示

    SpringBoot Actuator提供了一套监控和管理应用的工具,包括应用指标、审计、健康检查、环境信息等。 9. **Thymeleaf模板引擎** 对于前端展示,SpringBoot可以配合Thymeleaf或其他模板引擎,如FreeMarker或...

    springboot:前后台分离后台管理系统

    9. **Actuator**:SpringBoot的Actuator模块提供了丰富的健康检查和监控指标,包括应用的环境信息、内存使用情况、线程状态等。 10. **Docker化部署**:SpringBoot应用可以轻松打包为可执行的JAR或WAR文件,进一步...

    springboot-actuator-service-sample

    SpringBoot Actuator是SpringBoot框架中一个非常重要的模块,它为微服务提供了一套丰富的健康检查、监控和管理功能,使得开发者能够更好地了解和控制运行中的应用程序。本篇文章将深入探讨"springboot-actuator-...

    SpringBoot:学习springboot

    Actuator提供了丰富的端点来监控和管理应用程序,而Spring Security则可以帮助你实现权限控制和认证。 总的来说,这个学习资源将带你全面了解SpringBoot的方方面面,从基础的起步搭建到复杂的微服务整合,都是Java...

    springboot:springboot学习

    5. 良好的监控:通过Actuator提供健康检查、指标、审计等监控功能。 三、配置 SpringBoot的配置主要通过application.properties或application.yml文件进行。这些文件中的配置项会被自动加载到Spring的Environment中...

    SpringBoot:尝试SpringBoot

    6. **健康检查与监控**:SpringBoot 提供了 Actuator 组件,用于监控应用的健康状态和暴露管理端点,如 `/info` 和 `/health`。 7. **Actuator**:Actuator 提供了一套端点,可用于查看应用程序的状态、日志、指标...

    springboot:springboot源码分析

    - Actuator是SpringBoot的监控和管理工具,提供了健康检查、指标、审计、日志配置等丰富的端点。 7. **Web MVC与WebFlux** - SpringBoot对Spring MVC的支持无处不在,同时也引入了反应式编程的WebFlux框架,用于...

    helloworld-springboot:应用程序Hello World(Springboot)

    4. 健康检查和Actuator:SpringBoot提供了Actuator模块,用于监控和管理应用状态,包括健康检查、指标收集等。 5. 模块化:SpringBoot支持Spring生态系统中的多个模块,如Spring Data、Spring Security等,可以方便...

    SpringBoot:Estacionamento MVC

    "SpringBoot:Estacionamento MVC"这个项目显然使用了SpringBoot来构建一个Model-View-Controller(MVC)架构的停车管理应用。下面将详细介绍SpringBoot和MVC模式在项目中的运用及相关知识点。 1. **SpringBoot**: ...

Global site tag (gtag.js) - Google Analytics