springboot應用監控和管理


spring boot應用監控和管理

Spring Boot 監控核心是 spring-boot-starter-actuator 依賴,增加依賴后, Spring Boot 會默認配置一些通用的監控,比如 jvm 監控、類加載、健康監控等。

對應用進行監控和管理,我們只需在pom.xml上面增加依賴:

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-actuator</artifactId>

        </dependency>

如果是通過http方式,還需加上下面的依賴:

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

</dependency>

一、監控端點的作用:

根據端點的作用,可以將端點分為三大類:

應用配置類:獲取應用程序中加載的應用配置,環境變量,自動化配置報告等與應用相關的信息。

度量指標類:獲取應用程序運行過程中用於監控的度量指標,比如內存信息,線程信息,http請求等。

操作控制類:提供了對應用的關閉等操作類功能。

1.應用配置類:

(1)/autoconfig:獲取應用的自動化配置使用情況,包含所有自動化配置的候選項。同時列出了每個候選項是否匹配成功以及沒有匹配成功的原因。positiveMatches返回的是匹配成功的自動化配置,negativeMatches返回的是匹配不成功的自動化配置。

(2)/configprops:獲取應用配置所有的配置屬性。prefix代表屬性前綴,properties表示屬性名稱和id等。

(3)/beans:獲取應用程序中創建的所有Bean。每個Bean包含bean、scope、type、resource、dependencies。

(4)/env:獲取應用的環境信息。包含環境變量、JVM屬性、應用配置屬性、參數、端口等。

(5)/mappings:返回所有控制器映射關系報告,包括業務接口和監控接口。

(6)/info:獲取應用自定義信息,默認為空。可自己在application.properties里面配置。

2.度量指標類:

(7)/metrics:返回當前各類重要指標信息,比如內存概要信息、堆內存信息、非堆內存信息、線程使用情況、應用加載和卸載的類統計、垃圾收集器詳細信息、tomcat容器使用情況、http請求性能指標等。

(8)/health:獲取應用的各類指標信息。也可以自己自定義Health監控。

(9)/dump:用來生成當前線程活動的快照。

(10)/trace:用來返回基本的http跟蹤信息。保留最近的100條http請求記錄。

3.操作控制類:

(11)/shutdown:它是直接關閉應用程序的端點,它與前面的端點不一樣,前面的端點都是默認啟用的,而它需要通過屬性來配置開啟操作。可以在application.properties中配置開啟:

endpoints.shutdown.enabled=true

4.--------

(12)/heapdump:springmvc的端點,用來返回Gzip壓縮hprof堆轉儲文件(以hprof.gz結尾)

(13)/loggers:能夠查看所有包類的日志級別,並且能夠對其進行修改。

(14)/actuator:所有endpoints的列表,即應用監控的接口列表。

(15)/auditevents:公開當前應用程序的審核事件信息。

 

***:其中/shutdown是post請求,其他都是get請求。

***:如果對日志級別進行修改,需要post請求,並且需要傳送JSON(application/json)的數據格式。對其進行測試,發現如果是通過springboot主程序入口main啟動程序,能夠動態修改logback日志級別;如果是在linux下打包運行后,動態修改日志級別無效。

二、監控端點的管理

1.如果上面的監控端點都不能訪問,可能是你的管理端口經常被防火牆保護,不對外暴露也就不需要保護管理端點。這時候你需要在application.properties里加上:

management.security.enabled=false

也可以單個設置,比如endpoints.mappings.sensitive=false,關閉/mappings的安全限制。

2.自定義端點訪問路徑和訪問端口

默認情況下,監控的接口端口和業務的端口一致。比如

server.context-path=/student,server.port=20000

那么這時候我們訪問/info監控接口的url是:http://xxx.xxx.xxx.xxx:20000/student/info。如果剛好你在業務接口里面也有一個/info接口,訪問路徑剛好就是跟http://xxx.xxx.xxx.xxx:20000/student/info一樣,那么得到的信息是監控端點info的信息,這個業務接口無效。如果想讓它有效呢?那你可以禁用info監控端點,但是如果info這個端點需要返回一些信息不能禁用,而你的業務info接口別的程序已經調用了,你也不想更改,那怎么才能讓它有效呢?這時候我們可以通過在application.properties中進行以下設置:

management.context-path=/manage

management.port=20001

那么此時你的/info監控端點的訪問路徑變成了什么樣的呢?那它應該是這樣的:

http://xxx.xxx.xxx.xxx:20001/manage/info

這時候你的業務接口就有效了,它的訪問路徑還是上面所說的那個。改變端點的訪問的端口,也是出於安全性的考慮。

3.禁用單個端點

endpoints.info.enabled=false 禁用/info端點

4.開啟所需端點

endpoints.enabled=false      禁用所有端點

endpoints.info.enabled=true  開啟所需/info端點

5.修改端點id

endpoints.info.id=myinfo

原來訪問url是http://xxx.xxx.xxx.xxx:20000/student/info,那修改之后變成http://xxx.xxx.xxx.xxx:20000/student/myinfo

在上面第2點想要使業務接口/info有效,也可以采用這種方式,更改監控端口的id。

6.關閉http端點

management.port=-1


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM