Java|使用Spring Boot Actuator監(jiān)控應(yīng)用(健康檢查)

微服務(wù)的特點決定了功能模塊的部署是分布式的,大部分功能模塊都是運行在不同的機器上,彼此通過服務(wù)調(diào)用進行交互,前后臺的業(yè)務(wù)流會經(jīng)過很多個微服務(wù)的處理和傳遞,出現(xiàn)了異常如何快速定位是哪個環(huán)節(jié)出現(xiàn)了問題?

在這種框架下,微服務(wù)的監(jiān)控顯得尤為重要。本文主要結(jié)合Spring Boot Actuator,跟大家一起分享微服務(wù)Spring Boot Actuator的常見用法,方便我們在日常中對我們的微服務(wù)進行監(jiān)控治理。

Actuator監(jiān)控

Spring Boot使用“習(xí)慣優(yōu)于配置的理念”,采用包掃描和自動化配置的機制來加載依賴jar中的Spring bean,不需要任何Xml配置,就可以實現(xiàn)Spring的所有配置。雖然這樣做能讓我們的代碼變得非常簡潔,但是整個應(yīng)用的實例創(chuàng)建和依賴關(guān)系等信息都被離散到了各個配置類的注解上,這使得我們分析整個應(yīng)用中資源和實例的各種關(guān)系變得非常的困難。

Actuator是Spring Boot提供的對應(yīng)用系統(tǒng)的自省和監(jiān)控的集成功能,可以查看應(yīng)用配置的詳細信息,例如自動化配置信息、創(chuàng)建的Spring beans以及一些環(huán)境屬性等。

Actuator監(jiān)控只需要添加以下依賴就可以完成

<dependencies>
    <!-- 如果使用http調(diào)用的方式,還需要這個依賴 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- 必須的 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <!-- 安全 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
</dependencies>

為了保證actuator暴露的監(jiān)控接口的安全性,需要添加安全控制的依賴spring-boot-start-security依賴,訪問應(yīng)用監(jiān)控端點時,都需要輸入驗證信息。Security依賴,可以選擇不加,不進行安全管理,但不建議這么做。

Actuator 的 REST 接口

Actuator監(jiān)控分成兩類:原生端點和用戶自定義端點;自定義端點主要是指擴展性,用戶可以根據(jù)自己的實際應(yīng)用,定義一些比較關(guān)心的指標(biāo),在運行期進行監(jiān)控。

原生端點是在應(yīng)用程序里提供眾多 Web 接口,通過它們了解應(yīng)用程序運行時的內(nèi)部狀況。原生端點又可以分成三類:

  • 應(yīng)用配置類:可以查看應(yīng)用在運行期的靜態(tài)信息:例如自動配置信息、加載的springbean信息、yml文件配置信息、環(huán)境信息、請求映射信息;
  • 度量指標(biāo)類:主要是運行期的動態(tài)信息,例如堆棧、請求連、一些健康指標(biāo)、metrics信息等;
  • 操作控制類:主要是指shutdown,用戶可以發(fā)送一個請求將應(yīng)用的監(jiān)控功能關(guān)閉。

Actuator 提供了眾多接口,具體如下表所示。

方法 路徑 描述
GET /conditions 提供了一份自動配置報告,記錄哪些自動配置條件通過了,哪些沒通過
GET /configprops 描述配置屬性(包含默認值)如何注入Bean
GET /beans 描述應(yīng)用程序上下文里全部的Bean,以及它們的關(guān)系
GET /heapdump 獲取堆的快照
GET /threaddump 獲取線程活動的快照
GET /env 獲取全部環(huán)境屬性
GET /env/{name} 根據(jù)名稱獲取特定的環(huán)境屬性值
GET /health 報告應(yīng)用程序的健康指標(biāo),這些值由HealthIndicator的實現(xiàn)類提供
GET /info 獲取應(yīng)用程序的定制信息,這些信息由info打頭的屬性提供
GET /mappings 描述全部的URI路徑,以及它們和控制器(包含Actuator端點)的映射關(guān)系
GET /metrics 報告各種應(yīng)用程序度量信息,比如內(nèi)存用量和HTTP請求計數(shù)
GET /metrics/{name} 報告指定名稱的應(yīng)用程序度量值
POST /shutdown 關(guān)閉應(yīng)用程序,要求endpoints.shutdown.enabled設(shè)置為true
GET /trace 提供基本的HTTP請求跟蹤信息(時間戳、HTTP頭等)

實際上,你項目跑起來之后就會把這些接口都打印出來:

image.png

相關(guān)配置

項目依賴

<dependencies>
    <!-- 如果使用http調(diào)用的方式,還需要這個依賴 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <!-- Spring Boot使用Micrometer,一個應(yīng)用metrics組件,將actuator metrics整合到外部監(jiān)控系統(tǒng)中。-->
    <dependency>
        <groupId>io.micrometer</groupId>
        <artifactId>micrometer-registry-prometheus</artifactId>
    </dependency>
</dependencies>

配置文件
定義訪問的端口:1001

management:
  server:
    port: 1001

定義訪問的路徑及權(quán)限:

management:
  # 默認Actuator只暴露了health和info端點,在SpringBoot的application.yml配置文件中加入這句話暴露所有端點
  endpoints:
    web:
      exposure:
        include: "*"
  # 代表啟用單獨的url地址來監(jiān)控Spring Boot應(yīng)用,為了安全一般都啟用獨立的端口來訪問后端的監(jiān)控信息
  server:
    servlet:
      context-path: /monitor

訪問路徑

最后就是訪問測試下,這個時候很多人會遇到404,有些是路徑不對,有些是接口不對。
如何一次性寫對請求的URL?看下面的圖。

image.png

最后得出的請求URL:

http://localhost:1001/monitor/actuator/archaius

參考文章及更多內(nèi)容見:http://www.ityouknow.com/springboot/2018/02/06/spring-boot-actuator.html

最后編輯于
?著作權(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)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,688評論 19 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,285評論 6 342
  • 第 III 部分Spring Boot 系統(tǒng)監(jiān)控、測試與運維 Spring Boot 應(yīng)用監(jiān)控:Actuator與...
    光劍書架上的書閱讀 10,444評論 2 17
  • 在Spring Boot的眾多Starter POMs中有一個特殊的模塊,它不同于其他模塊那樣大多用于開發(fā)業(yè)務(wù)功能...
    程序猿DD閱讀 5,005評論 3 22
  • 感恩日記第十天 感恩妹夫拉我們?nèi)ダ霞疑蠅?感恩公公準(zhǔn)備的好多上墳的東西和花兒 感恩今天的天氣特別好,方便我們出行。...
    張蓉萍閱讀 216評論 0 0

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