1. 程式人生 > >每天學點SpringCloud(十):SpringCloud監控

每天學點SpringCloud(十):SpringCloud監控

今天我們來學習一下actuator這個元件,它不是SpringCloud之後才有的,而是SpringBoot的一個starter,Spring Boot Actuator。我們使用SpringCloud的時候需要使用這個元件對應用程式進行監控與管理

在SpringBoot2.0版本中,actuator可以為我們提供以下端點:

訪問路徑 描述
/actuator/auditevents 顯示當前應用程式的審計事件資訊
/actuator/beans 顯示一個應用中所有Spring Beans的完整列表
/actuator/conditions 顯示配置類和自動配置類的狀態及它們被應用或未被應用的原因
/actuator/configprops 顯示一個所有@ConfigurationProperties的集合列表
/actuator/env 顯示來自Spring的 ConfigurableEnvironment的屬性
/actuator/features 顯示系統啟動的一些features
/actuator/health 顯示應用的健康資訊
/actuator/httptrace 最後100個HTTP請求
/actuator/info 顯示任意的應用資訊
/actuator/metrics 展示當前應用的metrics資訊
/actuator/mappings 顯示一個所有@RequestMapping路徑的集合列表
/actuator/refresh 更新配置
/actuator/scheduledtasks 顯示應用程式中的定時任務
/actuator/service-registry 當前應用在註冊中心的狀態
/actuator/shutdown 允許應用以優雅的方式關閉
/actuator/threaddump 執行一個執行緒dump
/actuator/heapdump 返回一個GZip壓縮的hprof堆dump檔案
/actuator/loggers 返回系統的一些日誌

雖然actuator預設給我們提供了這麼多的端點供我們使用,但是為了安全起見,在SpringBoot2.0中它僅僅開放了health和info兩個埠,如果想要使用其他的埠就需要我們增加一些配置了,一起來看一下如何使用actuator吧。

1. 引入依賴

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

2. 修改配置檔案

1
2
3
4
5
6
management:
endpoints:
web:
exposure:
#exclude: shutdown,threaddump #此處控制的是不開放哪些端點
include: "*" #此處控制的是開放哪些端點,如果需要開啟少數端點可以這樣配置:health,info。如果開啟多個則使用*號開啟除了exclude的端點

這個時候我們使用postman等介面呼叫工具訪問 ip:埠/actuator 這個路徑時就會得到下圖所示的這麼一個json串,這個json串中就是對應的各個端點的地址資訊。
1

3. 健康檢查

預設我們訪問/actuator/health得到的只是一個狀態值,其實它的詳細資訊裡包含了很多有用的東西,比如說檢查磁碟空間、DataSource的連線、Elasticsearch、Mongo、Rabbit、Redis等資訊,我們可以通過如下配置來開啟詳細的健康檢查:

1
2
3
4
management:
endpoint:
health:
show-details: always

不僅如此,健康檢查的指標我們還可以自定義,建立如下的一個bean提供健康檢查的功能。

1
2
3
4
5
6
7
8
9
10
11
12
@Component
public class ConnectTimeHealthIndicator implements HealthIndicator {
@Override
public Health health() {
long connectTime=(long)Math.random()*10;//模擬一個連線操作
if(connectTime>3){
//如果連線時間大於3則認為連線失敗,返回狀態為down
return Health.down().withDetail("code", "504").withDetail("msg","xx應用連線超時").build();
}
return Health.up().build();
}
}

此時我們訪問 ip:埠/actuator/health 訪問時可能就會根據連線時間呈現下方的兩種狀態
2
3

GitHub地址:https://github.com/2388386839/spring-cloud-demo。程式碼所在模組:cloud-demo-consumer-feign

如果對您有所幫助,請記得幫忙點一個star哦

本文出自http://zhixiang.org.cn,轉載請保留。