經(jīng)典名言--無監(jiān)控不調(diào)優(yōu)
- 要想進(jìn)行SpringBoot項(xiàng)目調(diào)優(yōu),首選需要監(jiān)控項(xiàng)目運(yùn)行時(shí)情況。
當(dāng)下SpringBoot項(xiàng)目逐漸替代早期的Spring項(xiàng)目,隨著用戶量的增加,Spring Boot框架也提供了actuator模塊。該模塊很方便的對你的Spring Boot程序做監(jiān)控。在SpringBoot中加入監(jiān)控的方法只需要把相應(yīng)的監(jiān)控依賴actuator引入即可。 - pom文件中引入actuator依賴
首先需要在pom.xml文件中引入以下依賴:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
- 為了保證actuator接口的敏感性,需要在配置文件中開放安全屬性配置
配置參數(shù)如下:
management.security.enabled=false
配置后就可以允許你查看Spring Boot進(jìn)程的actuator信息了
-
啟動日志查看
-
啟動SpringBoot程序,控制臺日志里可以看到actuator接口信息
通過上圖打印信息,我們可以實(shí)時(shí)的獲取應(yīng)用的各項(xiàng)監(jiān)控指標(biāo),用于后期的問題排查和調(diào)優(yōu)。
-
actuator的接口分為原生接口和用戶自定義接口
原生接口主要有如下幾個:
| 路徑 | 說明 |
|---|---|
| health | 展示了進(jìn)程的健康狀態(tài) |
| beans | 程序創(chuàng)建的Bean |
| configprops | 配置信息,屬性值 |
| env | 環(huán)境屬性 |
| info | info開頭的程序?qū)傩孕畔?/td> |
| metrics | 度量指標(biāo),比如JVM和HTTP請求等 |
| trace | HTTP的詳細(xì)請求信息 |
| mappings | 所有的URL路徑映射關(guān)系 |
| dump | 線程快照信息 |
| heapdump | 內(nèi)存快照信息 |
如果你想關(guān)閉某個接口,比如關(guān)閉health接口,可以通過設(shè)置來實(shí)現(xiàn):
endpoints.health.enabled=false
-
監(jiān)控展示器-JConsole
JConsole說明:是一個內(nèi)置Java性能分析器,如果你本機(jī)已經(jīng)配置了jdk的話,可直接命令行輸入jconsole,打開后的頁面如下圖所示:
選擇你要監(jiān)控的進(jìn)程,點(diǎn)擊連接即可進(jìn)入該Java進(jìn)程的監(jiān)控首頁,如下圖所示(類似jdk自帶的jvisualvm):
jvisualvm監(jiān)控圖對比
Spring Boot Admin是一款開源軟件
Spring Boot Admin是一款監(jiān)控和管理Spring Boot應(yīng)用程序的開源軟件。Spring Boot Admin讀取actuator的接口數(shù)據(jù),并通過Spring Boot Admin UI將實(shí)時(shí)數(shù)據(jù)展示在前端。實(shí)現(xiàn)步驟
首先創(chuàng)建一個Spring Boot Admin Server,首先需要創(chuàng)建一個基本的Spring Boot應(yīng)用程序,這個就不做贅述了,并加入以下依賴:
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-server</artifactId>
<version>1.5.7</version>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-server-ui</artifactId>
<version>1.5.7</version>
</dependency>
隨后把server.port端口設(shè)置為8090,并注冊到你的eureka服務(wù)上
- 啟動類中使用注解開啟服務(wù)
@SpringBootApplication
@EnableDiscoveryClient
@EnableAdminServer
@EnableTurbine
public class HtsApplication {
public static void main(String[] args) {
SpringApplication.run(HtsApplication.class, args);
}
}
在瀏覽器輸入url:http://localhost:8090
就可以看到Spring Boot Admin Server的頁面信息

- 在任意需要被監(jiān)控的Spring Boot應(yīng)用程序上添加依賴
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>1.5.7</version>
</dependency>
- 最后啟動客戶端,其中Spring Boot Admin Server從Eureka上拿到注冊信息后完成認(rèn)證
在瀏覽器中輸入url:http://localhost:8090 就可以看到應(yīng)用程序的監(jiān)控信息了。




