springboot Actuator

需要引入spring-boot-starter-actuator,默認(rèn)情況下通過/actuator可以看到所有端點,也可以修改

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

端點配置
1.設(shè)置關(guān)閉所有端點

management:
  endpoints:
    enabled-by-default: false

2.啟動指定端點

management:
  endpoint:
    info:
      enabled: true

3.數(shù)據(jù)緩存

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

http配置
1.通過http公開了除了env和beans端點之外所有內(nèi)容

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

cors跨域支持(默認(rèn)不支持)

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

修改magenserver服務(wù)器配置

management:
  server:
    port: 8081
    address: 127.0.0.1

可以配置web服務(wù)使用不同的端口,同時綁定指定ip(不同端口表示啟動不同tomcat)

端點解釋:healthy健康檢查
訪問/actuator/health 查看
spring默認(rèn)提供 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("細(xì)節(jié)","1").up();
        }else {
            builder.withDetail("細(xì)節(jié)","2").down();
        }

    }
}

詳細(xì)內(nèi)容(默認(rèn)never)

management:
  endpoint:
    health:
      show-details: always

端點日志配置:
logging.level.root=WARN
logging.level.org.springframework.web=DEBUG
logging.level.org.hibernate=ERROR
通過/acutator/loggers查看日志
運(yùn)行時也可修改配置

metrics配置:
metrics支持查看關(guān)鍵性能指標(biāo),
可以與監(jiān)控系統(tǒng)進(jìn)行集成
自定義監(jiān)控指標(biāo),代碼中注入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();
        }



    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容