Actuator使用

278 阅读1分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 3 天,点击查看活动详情

一 Actuator基础知识

1.引入依赖

image.png

 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
<!--        引入actuator监控依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

2.配置application.yml文件

image.png

management:
  endpoint:
    shutdown:
      enabled: true
  endpoints:
    web :
      exposure :
          include : '*'

info:
  app:
    name : imooc-springboot-study
    groupId : imooc-spingboot-study
    version: 1.0-SNAPSHOT

代码说明:

  • shutdown:关闭应用监控
  • endpoints:web:exposure:include:"*":打开所有监控点
  • info:设置应用相关信息

3.重启应用

image.png

4.相关url配置

  • 获取健康状态:127.0.0.1:8000/imooc/actuator/health image.png
  • 获取应用信息:127.0.0.1:8000/imooc/actuator/info image.png
    url汇总: image.png

二 自定义监控器Actuactor

1.新增endpoint包

image.png

2.新增DateTimeEndPoint类文件

image.png

package com.imooc.springboot.study.endpoint;

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

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

@Endpoint(id = "datetime")
public class DateTimeEndPoint {
    private String format = "yyyy-mm-dd HH:mm:ss";
    @ReadOperation
    public Map<String,Object> info(){
        Map<String,Object> info = new HashMap<>();
        info.put("name","xiaoming");
        info.put("age",20);
        info.put("datetime",new SimpleDateFormat(format).format(new Date()));
        return  info;
    }

    @WriteOperation
    public void setFormat(String format){
        this.format = format;
    }


}

代码说明:

  • @Endpoint(id = "datetime"):定义endPoint的名字,也就是我们url访问的地址, 本例子url地址为http://127.0.0.1:8000/imooc/actuator/datetime
  • @ReadOperation:读取监控配置
  • public Map<String,Object> info:返回info对象方法
  • @WriteOperation:设置监控配置

3.新增自定义监控配置DateTimeEndpointConfig

image.png

package com.imooc.springboot.study.endpoint;

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;

@Configuration
public class DateTimeEndpointConfig {
    @Bean
    @ConditionalOnMissingBean
    @ConditionalOnEnabledEndpoint
    public DateTimeEndPoint dateTimeEndPoint(){
        return new DateTimeEndPoint();
    }
}

代码说明:

  • @Configuration:注解为配置类
  • @Bean:定义为Bean
  • @ConditionalOnMissingBean:Bean不存在,则注入
  • @ConditionalOnEnabledEndpoint:开启则注入

4.重启项目

访问url:http://127.0.0.1:8000/imooc/actuator/datetime image.png
修改时间格式:
方法:post
url地址:http://127.0.0.1:8000/imooc/actuator/datetime
请求数据:
{
"format":"yyyy-MM-dd"
} image.png

5.重新访问获取时间的url

image.png