springboot Actuator

需要引入spring-boot-starter-actuator,默认情况下通过/actuator可以看到所有端点,也可以修改

 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
management:
  endpoints:
    web:
      base-path: /manage

端点配置
1.设置关闭所有端点

management:
  endpoints:
    enabled-by-default: false

2.启动指定端点

management:
  endpoint:
    info:
      enabled: true

3.数据缓存

management:
  endpoint:
    info:
      cache:
        time-to-live: 10s

http配置
1.通过http公开了除了env和beans端点之外所有内容

management:
  endpoints:
    web:
      exposure:
        include: *
        exclude: env,bean

cors跨域支持(默认不支持)

management:
  endpoints:
    web:
      cors:
        allowed-origins: http://example.com
        allowed-methods: GET,POST

修改magenserver服务器配置

management:
  server:
    port: 8081
    address: 127.0.0.1

可以配置web服务使用不同的端口,同时绑定指定ip(不同端口表示启动不同tomcat)

端点解释:healthy健康检查
访问/actuator/health 查看
spring默认提供 redis rabbitmq datasource mongoDB

自定义健康检查

@Component
public class MyHealthCheck extends AbstractHealthIndicator {


    @Override
    protected void doHealthCheck(Health.Builder builder) throws Exception {
        int i =new Random().nextInt();
        if(1%2==0){
            builder.withDetail("细节","1").up();
        }else {
            builder.withDetail("细节","2").down();
        }

    }
}

详细内容(默认never)

management:
  endpoint:
    health:
      show-details: always

端点日志配置:
logging.level.root=WARN
logging.level.org.springframework.web=DEBUG
logging.level.org.hibernate=ERROR
通过/acutator/loggers查看日志
运行时也可修改配置

metrics配置:
metrics支持查看关键性能指标,
可以与监控系统进行集成
自定义监控指标,代码中注入MeterRegistry对象

@Component
public class MyMetrics {

   private final List<String> words = new CopyOnWriteArrayList<>();

   public MyMetrics(MeterRegistry meterRegistry){
       meterRegistry.gaugeCollectionSize("dictionary.size", Tags.empty(),this.words);
   }
}

自定义端点:

@Endpoint(id = "myEndpoint")
@Component
public class MyEndPoint {

    String name = "default";

    @ReadOperation
    public String getName(){

        return "{\"name\":\""+name+"\"}";
    }

    @DeleteOperation
    public void delName(){

        name = "";
    }

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

jmx配置:

public class TestJmxListener implements ApplicationListener<ContextRefreshedEvent> {

    @Autowired
    JmxTest jmxTest;

    @Override
    public void onApplicationEvent(ContextRefreshedEvent event) {
        try {
            MBeanServer server = ManagementFactory.getPlatformMBeanServer();
            ObjectName objectName = null;
            objectName = new ObjectName("JmxBean:name=testJMIX");
            server.registerMBean(jmxTest,objectName);
            Registry registry = LocateRegistry.createRegistry(1099);
            JMXServiceURL jmxServiceURL = new JMXServiceURL("server:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi");
            JMXConnectorServer cs = JMXConnectorServerFactory.newJMXConnectorServer(jmxServiceURL,null,server);
            cs.start();

        } catch (Exception e){
            e.printStackTrace();
        }



    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容