Springboot2.0集成actuator健康监控

1.引入Mavan依赖

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

2.actuator 相关配置

修改application.yml文件

server:
  port: 8081
spring:
  application:
    name: springboot
## actuator配置
management:
  endpoints:
    web:
      cors:    # 跨域处理
        allowed-origins: '*'
        allowed-methods: '*'
        allow-credentials: true
      base-path: /manage     # 访问路径 为  http://ip:port/monitor/manage
      exposure:
        include: '*'
    enabled-by-default: false
  server:
    servlet:
      context-path: /monitor   # 访问路径 为  http://ip:port/monitor
    port: 1234                 # management 的端口 http://ip:1234    如果不想通过HTTP公开端点,则可以将管理端口设置为-1,如以下示例所示:
  endpoint:   #暴露出的endpoint
    shutdown:
      enabled: false  # shutdown 可以关闭制定的端点  除shutdown以外的所有端点均已启用
    info:
      enabled: true
    health:
      enabled: true
      show-details: always  #展示详情
    metrics:
      enabled: true
  health:
    db:
      enabled: false  #关闭默认配置的db检查
    redis:
      enabled: false
# /actuator/info 的信息的配置
info:
  name: @project.artifactId@
  encoding: @project.build.sourceEncoding@
  java:
    source: @java.version@
    target: @java.version@

3.配置完成项目

      访问路径 http://ip:port/context-path/base-path/**

4.扩展actuator的监控功能

   自定义endPoint

/**
 * @describe:  自定义端点暴漏此端点需要设置 management.endpoints.web.exposure.include=*
 */
@Endpoint(id = "person")
@Component
public class MyEndpoint {
    private final Map<String, Person> people = new ConcurrentHashMap<>();
    MyEndpoint() {
        this.people.put("name1", new Person("n1"));
        this.people.put("name2", new Person("n2"));
        this.people.put("name3", new Person("3"));
    }
    @ReadOperation
    public List<Person> getAll() {
        return new ArrayList<>(this.people.values());
    }
    @ReadOperation
    public Person getPerson(@Selector String name) {
        return this.people.get(name);
    }
    @WriteOperation
    public void addOrUpdatePerson(@Selector String name, @Selector String person) {
        this.people.put(name, new Person(person));
    }
    class Person {
        private String name;

        Person(String name) {
            this.name = name;
        }
        public String getName() {
            return this.name;
        }
    }
}

对health的扩展~实现接口方式

@Component("myHealth_interface")
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();
    }
    /**
     * 健康检查实现
     */
    public int check(){
        return 0;
    }
}

对health的扩展~实现接口方式~实现抽象类

@Component("myHealth_abstract")
public class MyHealthIndicator1 extends AbstractHealthIndicator {
    @Override
    protected void doHealthCheck(Health.Builder builder) throws Exception {
        builder.up().withDetail("xxx", "xxxyyy");
    }
}

扩展info信息

public class MyContributor implements InfoContributor {
    @Value("${spring.application.name}")
    private String applicationName;
    @Override
    public void contribute(Info.Builder builder) {
        builder.withDetail("Application-info",  Collections.singletonMap("name", applicationName));
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值