javascript
Spring Boot 使用Actuator监控应用
今天是突然喵到這個知識點(Actuator)的,我以前確實不知道這個玩意可以這么玩,像是發現新大陸一樣,整了會它,還學會了如何優雅的關閉SpringBoot應用😂。
很喜歡一句話:”八小時內謀生活,八小時外謀發展“
我們:"待別日相見時,都已有所成”
看看小風景再繼續哈
Spring Boot 使用Actuator監控應用
- 一、前言
- 1)概述:
- 2)分類:
- 3)主要接口:
- 二、快速開始
- 步驟:
- 導入依賴:
- 書寫配置:
- 啟動測試、命令解釋:
- 1、actuator
- 2、health
- 3、info
- 4、beans
- 5、conditions
- 6、heapdump
- 7、shutdown
- 8、threaddump
- 9、metrics
- 10、endpoint
- 三、自言自語
一、前言
相信很多小伙伴都見過Actuator,但是我想如果不是學SpringCloud的話,單純用SpringBoot的話,應該沒多少人來整它吧~~(盲猜 狗頭保命)~~,不過確實在微服務中用的特別多,但是我們可以先了解嗎😁
注:我的SpringBoot的版本是2.5.2。
1)概述:
當我們的開發工作進入尾聲,部署上線之后,對于一個程序而言,可能才剛剛開始,對程序的運行情況的監控要伴隨著整個生命周期。
Actuator 是 Spring Boot 提供的對應用系統的自省和監控的集成功能,可以查看應用配置的詳細信息,例如自動化配置信息、創建的 Spring beans 以及一些環境屬性等。
2)分類:
Actuator 監控分成兩類:原生端點和用戶自定義端點;自定義端點主要是指擴展性,用戶可以根據自己的實際應用,定義一些比較關心的指標,在運行期進行監控。
原生端點是在應用程序里提供眾多 Web 接口,通過它們了解應用程序運行時的內部狀況。原生端點又可以分成三類:
1、應用配置類:
- 可以查看應用在運行期的靜態信息:例如自動配置信息、加載的 springbean 信息、yml 文件配置信息、環境信息、請求映射信息;
2、度量指標類:
- 主要是運行期的動態信息,例如堆棧、請求連接、一些健康指標、metrics 信息等;比如內存信息、線程池信息、HTTP請求統計等。
3、操作控制類:
- 主要是指 shutdown,用戶可以發送一個請求將應用的監控功能關閉。(戲稱:優雅的關閉一個SpringBoot應用)
3)主要接口:
| GET | /auditevents | 顯示應用暴露的審計事件 (比如認證進入、訂單失敗) |
| GET | /beans | 描述應用程序上下文里全部的 Bean,以及它們的關系 |
| GET | /conditions | 就是 1.0 的 /autoconfig ,提供一份自動配置生效的條件情況,記錄哪些自動配置條件通過了,哪些沒通過 |
| GET | /configprops | 描述配置屬性(包含默認值)如何注入Bean |
| GET | /env | 獲取全部環境屬性 |
| GET | /env/{name} | 根據名稱獲取特定的環境屬性值 |
| GET | /flyway | 提供一份 Flyway 數據庫遷移信息 |
| GET | /liquidbase | 顯示Liquibase 數據庫遷移的纖細信息 |
| GET | /health | 報告應用程序的健康指標,這些值由 HealthIndicator 的實現類提供 |
| GET | /heapdump | dump 一份應用的 JVM 堆信息 |
| GET | /httptrace | 顯示HTTP足跡,最近100個HTTP request/repsponse |
| GET | /info | 獲取應用程序的定制信息,這些信息由info打頭的屬性提供 |
| GET | /logfile | 返回log file中的內容(如果 logging.file 或者 logging.path 被設置) |
| GET | /loggers | 顯示和修改配置的loggers |
| GET | /metrics | 報告各種應用程序度量信息,比如內存用量和HTTP請求計數 |
| GET | /metrics/{name} | 報告指定名稱的應用程序度量值 |
| GET | /scheduledtasks | 展示應用中的定時任務信息 |
| GET | /sessions | 如果我們使用了 Spring Session 展示應用中的 HTTP sessions 信息 |
| POST | /shutdown | 關閉應用程序,要求endpoints.shutdown.enabled設置為true |
| GET | /mappings | 描述全部的 URI路徑,以及它們和控制器(包含Actuator端點)的映射關系 |
| GET | /threaddump | 獲取線程活動的快照 |
二、快速開始
步驟:
開始啦開始啦👇
導入依賴:
就簡單導入兩個就完事啦哦。
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.2</version><relativePath/> <!-- lookup parent from repository --> </parent> <dependencies><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> </dependencies>書寫配置:
info.app.name=spring-boot-actuator info.app.version= 1.0.0 info.app.test=testmanagement.endpoints.web.exposure.include=* management.endpoint.health.show-details=always #management.endpoints.web.base-path=/monitor #代表啟用單獨的url地址來監控 Spring Boot 應用,為了安全一般都啟用獨立的端口來訪問后端的監控信息management.endpoint.shutdown.enabled=true #management.endpoint.shutdown.enabled=true 啟用接口關閉 Spring Bootmanagement.endpoints.web.exposure.include=*:可以打開所有的監控點
management.endpoints.web.exposure.exclude=beans,trace :也可以選擇打開部分監控點
Actuator 默認所有的監控點路徑都在/actuator/*,當然如果有需要這個路徑也支持定制。
management.endpoints.web.base-path=/manage設置完重啟后,再次訪問地址就會變成/manage/*
啟動測試、命令解釋:
啟動時就能看到這個/actuator就表示成功啦哦。
1、actuator
/actuator:接口展示,顯示actuator提供的訪問接口,我們配置了是打開所有的監控點,所以是看到全部的。
2、health
health 主要用來檢查應用的運行狀態,這是我們使用最高頻的一個監控點。
status值為UP說明應用是健康的,如果應用不健康,將會顯示DOWN。
3、info
info 就是我們自己配置在配置文件中以 info 開頭的配置信息,
info.app.name=spring-boot-actuator info.app.version= 1.0.0 info.app.test=test4、beans
查看 bean 的別名、類型、是否單例、類的地址、依賴等信息。
5、conditions
Spring Boot 的自動配置功能非常便利,但有時候也意味著出問題比較難找出具體的原因。使用 conditions 可以在應用運行時查看代碼了某個配置在什么條件下生效,或者某個自動配置為什么沒有生效。
6、heapdump
訪問http://localhost:8080/actuator/heapdump會自動生成一個 Jvm 的堆文件 heapdump,我們可以使用 JDK 自帶的 Jvm 監控工具 VisualVM 打開此文件查看內存快照。
heapdump這方面就牽扯到JVM知識點啦。
7、shutdown
就是我前文提到的如何優雅的關閉一個SpringBoot應用。
不過要在配置中打開這個management.endpoint.shutdown.enabled=true。
需要使用POST方式訪問,如果是用cmd命令行訪問就為:curl -X POST "http://localhost:8080/actuator/shutdown"
8、threaddump
/threaddump 接口會生成當前線程活動的快照。這個功能非常好,方便我們在日常定位問題的時候查看線程的情況。
主要展示了線程名、線程ID、線程的狀態、是否等待鎖資源等信息。
9、metrics
訪問localhost:8080/actuator/metrics會展示可以追蹤的度量,例如jvm內存、cpu使用、jvm線程等
如果我們要查看某個具體的度量:
http://localhost:8080/actuator/metrics/{MetricName}就是如此便可。
如查看 http.server.requests
http://localhost:8080/actuator/metrics/http.server.requests可以查看到我們請求過的request、請求方法等。
10、endpoint
默認情況,上述所有的endpints都是打開的,除了shutdown endpoint。如果我們想要控制單個endpoint 開關,可以進行如下配置:
management.endpoint.<id>.enabled=true/false日志也是一樣的,就沒有寫出來啦。
…😁還有很多的就沒有測試啦,大家可以手動測試 (狗頭保命哦)😀
三、自言自語
帶著好奇和求知欲來學習,只想讓自己能夠變得更加優秀。
希望我們:待別日相見時,都已有所成。
加油!!😁
總結
以上是生活随笔為你收集整理的Spring Boot 使用Actuator监控应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringBoot 整合 Redis
- 下一篇: SpringBoot整合Swagger