中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringBoot如何實現項目健康檢查與監控

發布時間:2021-05-24 11:43:46 來源:億速云 閱讀:197 作者:小新 欄目:編程語言

這篇文章主要介紹SpringBoot如何實現項目健康檢查與監控,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

Spring Boot 最主要的特性就是AutoConfig(自動配置),而對于我們這些使用者來說也就是各種starter,

Spring Boot-Actuator 也提供了starter,為我們自動配置,在使用上我們只需要添加starter到我們的依賴中,然后啟動項目即可。

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

常用Endpoint

Spring Boot-actuator,提供了許多有用的EndPoint,對Spring Boot應用提供各種監控,下面說一下我常用的EndPoint:

/health 應用的健康狀態

/configprops 獲取應用的配置信息,因為Spring Boot 可能發布時是單獨的Jar包,配置文件可能包含其中, 當我們需要檢查配置文件時可以使用 ConfigpropsEndPoint 進行查看一些配置是否正確。

/trace 最近幾次的http請求信息

HealthEndPoint

當我們訪問 http://localhost:8088/health 時,可以看到 HealthEndPoint 給我們提供默認的監控結果,包含 磁盤檢測和數據庫檢測。

{
 "status": "UP",
 "diskSpace": {
  "status": "UP",
  "total": 398458875904,
  "free": 315106918400,
  "threshold": 10485760
 },
 "db": {
  "status": "UP",
  "database": "MySQL",
  "hello": 1
 }
}

其實看 Spring Boot-actuator 源碼,你會發現 HealthEndPoint 提供的信息不僅限于此,org.springframework.boot.actuate.health 包下 你會發現 ElasticsearchHealthIndicator、RedisHealthIndicator、RabbitHealthIndicator 等

也就是 HealthEndPoint 也提供 ES, Redis 等組件的健康信息。

自定義Indicator 擴展 HealthEndPoint

看源碼 其實 磁盤和數據庫健康信息就是 DiskSpaceHealthIndicator、DataSourceHealthIndicator 來實現的,當我們對一些我們自定義的組件進行監控時, 我們也可以實現個Indicator :

@Component
public class User implements HealthIndicator {
 /**
  * user監控 訪問: http://localhost:8088/health
  *
  * @return 自定義Health監控
  */
 @Override
 public Health health() {
  return new Health.Builder().withDetail("usercount", 10) //自定義監控內容
    .withDetail("userstatus", "up").up().build();
 }
}

這時我們再次訪問: http://localhost:8088/health 這時返回的結果如下,包含了我們自定義的 User 健康信息。

{
 "status": "UP",
 "user": {
  "status": "UP",
  "usercount": 10,
  "userstatus": "up"
 },
 "diskSpace": {
  "status": "UP",
  "total": 398458875904,
  "free": 315097989120,
  "threshold": 10485760
 },
 "db": {
  "status": "UP",
  "database": "MySQL",
  "hello": 1
 }
}

自定義EndPoint

其實除了擴展 HealthEndPoint 來添加一些健康檢查, 我們也可以自定定義一些EndPoint 來提供程序運行時一些信息的展示:

@Configuration
public class EndPointAutoConfig {
 @Bean
 public Endpoint<Map<String, Object>> customEndPoint() {
  return new SystemEndPoint();
 }
}
@ConfigurationProperties(prefix="endpoints.customsystem")
public class SystemEndPoint extends AbstractEndpoint<Map<String, Object>> {
 public SystemEndPoint(){
  super("customsystem");
 }
 @Override
 public Map<String, Object> invoke() {
  Map<String,Object> result= new HashMap<>();
  Map<String, String> map = System.getenv();
  result.put("username",map.get("USERNAME"));
  result.put("computername",map.get("COMPUTERNAME"));
  result.put("userdomain",map.get("USERDOMAIN"));
  return result;
 }
}

訪問 http://localhost:8088/customsystem 來查看我們自定義的EndPoint ,返回結果如下:

{
 "username": "xxx",
 "userdomain": "DESKTOP-6EAN1H4",
 "computername": "DESKTOP-6EAN1H4"
}

我們在為Spring Boot應用添加actuator后,期望的health接口返回結果應該是類似下面的結果:

{
 status: "UP",
 diskSpace: 
 {
 status: "UP",
 total: 250182889472,
 free: 31169568768,
 threshold: 10485760
 },
 db: 
 {
 status: "UP",
 database: "H2",
 hello: 1
 }
}

如果只是返回了status

{
 status: "UP"
}

則需要為應用新增配置,以yml配置文件為例,需要添加如下配置:

management:
 security:
 enabled: false
endpoints:
 health:
 sensitive: false
management.endpoint.health.show-details=always

以上是“SpringBoot如何實現項目健康檢查與監控”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

商洛市| 若羌县| 广宗县| 石城县| 登封市| 铜陵市| 五家渠市| 石渠县| 洛阳市| 高阳县| 云梦县| 井冈山市| 温泉县| 东丰县| 邵武市| 土默特右旗| 榕江县| 延长县| 开鲁县| 通化市| 金华市| 盐城市| 肥西县| 峡江县| 登封市| 泌阳县| 洪湖市| 绍兴县| 闻喜县| 普兰县| 济南市| 泰来县| 忻州市| 天峨县| 铜梁县| 青海省| 平罗县| 绵竹市| 大洼县| 泌阳县| 宝鸡市|