Spring Boot Actuator 保姆級教程

1. 引言

Spring Boot Actuator 是一個功能強大的監控工具,能夠幫助開發者監控和管理應用的運行狀態。通過 Actuator,我們可以輕松獲取應用的健康狀況、配置信息、性能指標等。本文將一步步引導你如何配置和使用 Actuator,以及如何通過它來監控你的 Spring Boot 應用。

2. 安裝和配置 Actuator

2.1 添加依賴

首先,我們需要在項目的 pom.xml 文件中添加 Actuator 的依賴:

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

2.2 啟用 Actuator 端點

默認情況下,Actuator 的一些敏感端點是禁用的。我們需要在配置文件中啟用它們。在 application.propertiesapplication.yml 中添加以下配置:

management:endpoints:web:exposure:include: "*"

這樣,所有的 Actuator 端點都會被啟用。你也可以選擇性地啟用部分端點,例如:

management:endpoints:web:exposure:include: health, info, metrics

2.3 訪問 Actuator 端點

配置完成后,啟動你的 Spring Boot 應用。默認情況下,Actuator 端點的訪問路徑是 /actuator。你可以通過瀏覽器或工具(如 Postman)訪問以下路徑:

  • http://localhost:8080/actuator:列出所有可用的端點。
  • http://localhost:8080/actuator/health:檢查應用的健康狀態。
  • http://localhost:8080/actuator/info:查看應用的配置信息。

3. 探索常用 Actuator 端點

3.1 Health 端點

/actuator/health 端點用于檢查應用的健康狀態。默認情況下,它返回一個簡單的狀態,例如:

{"status": "UP"
}

為了查看更詳細的健康信息,可以在配置文件中添加:

management:endpoint:health:show-details: always

重啟應用后,再次訪問 /actuator/health,你將看到更詳細的健康指標,包括磁盤空間、數據庫連接等。

3.2 Info 端點

/actuator/info 端點顯示應用的配置信息。你可以在 application.yml 中添加自定義的信息:

info:app:name: MySpringBootApplicationversion: 1.0.0

訪問 /actuator/info 將返回這些配置信息:

{"app": {"name": "MySpringBootApplication","version": "1.0.0"}
}

3.3 Beans 端點

/actuator/beans 端點展示了應用中所有 Spring Bean 的信息,包括它們的類型、作用域和依賴關系。這對于調試和理解應用的依賴關系非常有幫助。

3.4 Metrics 端點

/actuator/metrics 端點提供了應用的性能指標,包括 JVM 內存使用情況、線程信息、HTTP 請求統計等。你可以通過這個端點監控應用的實時性能。

3.5 Threaddump 端點

/actuator/threaddump 端點生成當前線程的快照,幫助你分析線程的狀態和堆棧信息。這對于排查線程相關的問題非常有用。

3.6 Shutdown 端點

/actuator/shutdown 端點允許你通過發送一個 POST 請求來優雅地關閉應用。在配置文件中啟用它:

management:endpoint:shutdown:enabled: true

然后,使用工具發送 POST 請求到 http://localhost:8080/actuator/shutdown 即可關閉應用。

4. 自定義 Actuator 端點

4.1 創建自定義 Endpoint

有時候,你可能需要監控一些特定的業務邏輯。這時,可以創建自定義的 Actuator 端點。例如,創建一個名為 myEndpoint 的端點:

import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
import org.springframework.stereotype.Component;@Component
@Endpoint(id = "myEndpoint")
public class MyEndpoint {@ReadOperationpublic String getInfo() {return "Custom endpoint information";}
}

4.2 注冊 Endpoint

確保你的自定義 Endpoint 被 Spring 容器注冊。通常,使用 @Component 注解即可。

4.3 訪問自定義端點

啟動應用后,訪問 http://localhost:8080/actuator/myEndpoint,你將看到自定義的信息。

5. 保護 Actuator 端點

5.1 使用 Filter 保護端點

為了防止未經授權的訪問,可以為 Actuator 端點添加過濾器。例如,創建一個過濾器類:

import org.springframework.stereotype.Component;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;@WebFilter(urlPatterns = "/actuator/*")
@Component
public class ActuatorFilter implements Filter {@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {HttpServletRequest httpRequest = (HttpServletRequest) request;HttpServletResponse httpResponse = (HttpServletResponse) response;// 檢查用戶是否認證if (!isAuthenticated(httpRequest)) {httpResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED);httpResponse.getWriter().write("Unauthorized access");return;}chain.doFilter(request, response);}private boolean isAuthenticated(HttpServletRequest request) {// 實現認證邏輯,例如檢查是否有有效的令牌return request.getHeader("Authorization") != null;}
}

5.2 配置過濾器

確保過濾器類被 Spring 容器掃描到。通常,將其放在 src/main/java 目錄下的適當包中即可。

6. 使用 Spring Boot Monitor 可視化監控

6.1 引入依賴

pom.xml 中添加 Spring Boot Monitor 的依賴:

<dependency><groupId>cn.pomit</groupId><artifactId>spring-boot-monitor</artifactId><version>0.0.1</version>
</dependency>

6.2 訪問監控頁面

啟動應用后,訪問 http://localhost:8080/monitor,你將看到一個類似 Spring Boot Admin 的監控界面,展示應用的各項指標和健康狀態。

7. 總結

通過本文的教程,你已經掌握了如何配置和使用 Spring Boot Actuator 來監控和管理你的應用。從啟用默認端點到創建自定義端點,再到保護端點的安全性,Actuator 提供了豐富的功能來滿足不同的監控需求。希望這篇教程能幫助你更好地理解和應用 Actuator,提升應用的監控和管理能力。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/91465.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/91465.shtml
英文地址,請注明出處:http://en.pswp.cn/web/91465.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用 whisper, 音頻分割, 初步嘗試,切割為小塊,效果還不錯 1

對于一首歌而言,如何斷句?即,一個 mp4 或是 mp3 文件,或是一段錄音, 如何使用程序,或是 ai 來斷句。分割為一句一句的片段??如果人工來分割,一般是使用 capcut 之類的剪輯軟件。但是效率太慢了。所以我想能否設計一個簡潔的,自動的程序來處理。這種事情,專業的名稱…

AD2S1210的DOS LOT含義

一、??信號質量監控類寄存器????LOT閾值&#xff08;0x88&#xff09;????作用??&#xff1a;設定信號丟失&#xff08;Loss of Signal&#xff09;的判定門檻。??場景??&#xff1a;當正弦或余弦輸入信號幅值低于此值時&#xff0c;芯片認為信號丟失&#xff…

Au速成班-多軌編輯流程

基礎編輯工作流&#xff0c;包含文件導入&#xff0c;導出&#xff0c;音量調節&#xff0c;部分效果添加。 創建多軌會話 設置工程文件名稱、文件位置、采樣率、位深度、主控等。 界面管理 &#xff0c;界面說明詳細可看 Au速成班-基礎篇_au界面介紹-CSDN博客 音量調節點擊…

Rust實現GPU驅動的2D渲染引擎

當傳統CPU渲染遭遇性能瓶頸時&#xff0c;GPU驅動的架構正在革新2D圖形領域。本文將深入解析用Rust編寫的??完全GPU驅動的2D渲染引擎Vello??&#xff0c;揭秘其如何通過并行計算實現絲滑渲染。 一、GPU Driven革命&#xff1a;為何是Vello&#xff1f; 傳統渲染的瓶頸 傳…

【ELasticsearch】溫、冷數據節點能是同一個節點嗎

溫、冷數據節點能是同一個節點嗎1.節點角色與分層存儲原理2.一個節點能否同時是 “溫” 和 “冷” 節點 &#xff1f;3.為什么通常不是最佳實踐 &#xff1f;4.可能的適用場景&#xff08;非常有限&#xff09;5.結論在 Elasticsearch 中&#xff0c;理論上&#xff0c;一個物理…

報錯:selenium.common.exceptions.ElementNotInteractableException: Message

針對該錯誤&#xff0c;以下是分步解決方案&#xff1a; 1. 顯式等待確保元素可交互 from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC# 等待元素可點…

sqli-labs:Less-10關卡詳細解析

1. 思路&#x1f680; 本關的SQL語句為&#xff1a; $id ".$id."; $sql"SELECT * FROM users WHERE id$id LIMIT 0,1";注入類型&#xff1a;字符串型&#xff08;雙引號包裹&#xff09;提示&#xff1a;參數id需以"閉合 php回顯輸出語句的代碼如…

imx6ull-驅動開發篇5——新字符設備驅動實驗

目錄 前言 新字符設備驅動原理 申請設備號 注冊設備號 釋放設備號 注冊方法 字符設備結構cdev cdev_init 函數 cdev_add 函數 cdev_del 函數 自動創建設備節點 mdev 機制 類創建函數 類刪除函數 創建設備函數 刪除設備函數 設置文件私有數據 實驗程序編寫 l…

2025年最新SCI-灰熊增脂優化器(Grizzly Bear Fat Increase, GBF)-附完整Matlab免費代碼

1、簡介 本文介紹了一種新的受自然啟發的優化算法&#xff0c;稱為灰熊增脂優化器&#xff08;GBFIO&#xff09;。GBFIO算法模仿灰熊積累體脂為過冬做準備的自然行為&#xff0c;利用它們的狩獵、捕魚和吃草、蜂蜜等策略。因此&#xff0c;GBFIO算法建模并考慮了三個數學步驟來…

Python爬蟲02_Requests實戰網頁采集器

一、Request請求偽裝解析 #UA&#xff1a;User-Agent&#xff08;請求載體身份標識&#xff09; #UA檢測&#xff1a;門戶網站的服務器會檢測對應請求的載體身份標識&#xff0c;如果檢測到請求的載體身份呢標識為某一款瀏覽器&#xff0c;說明該請求是一個正常的請求&#xff…

vue+elementui實現問卷調查配置可單選、多選、解答

效果&#xff1a;<template> <div><el-form :inline"true" :model"form" :rules"rules" ref"ruleForm"> <el-tabs type"border-card" v-model"cardType"><el-tab-pane name"1&qu…

Docker初學者需要了解的幾個知識點(三):Docker引擎與Docker Desktop

Docker引擎與Docker Desktop簡單說&#xff1a;Docker 引擎是干活的 “核心工具”&#xff0c;負責實際創建、運行容器&#xff0c;就像汽車的發動機&#xff0c;沒它跑不起來。Docker Desktop是個 “套裝軟件”&#xff0c;它把 Docker 引擎打包進去了&#xff0c;還加了圖形化…

Python將Word轉換為Excel

現有大量的Word文檔&#xff0c;每個文檔中有大量的表格&#xff0c;需要將其轉換為Excel。 Python處理源碼 # 需要安裝pip install xlsxwriter import pandas as pd from docx import Document from pathlib import Path from datetime import datetimedef process_docx(filep…

攀爬誤報率↓82%!陌訊多模態算法在周界防護的實戰解析

?摘要?? 原創聲明 本文解析邊緣計算優化下陌訊視覺算法在攀爬識別場景的魯棒性提升&#xff0c;實測數據來自陌訊技術白皮書&#xff08;2025&#xff09;。針對傳統安防系統在復雜光影、姿態變化中的誤檢問題&#xff0c;重點闡述動態決策機制與輕量化部署方案&#xff0c;…

Redis 存在哪些問題

內存相關問題 1. 內存消耗大 無壓縮機制&#xff1a;數據以明文形式存儲&#xff0c;占用內存較大元數據開銷&#xff1a;每個key-value對都有額外的元數據開銷內存碎片&#xff1a;頻繁的更新操作可能產生內存碎片 2. 內存容量限制 單機容量受限&#xff1a;受限于單臺服務器的…

ECMAScript2025(ES16)新特性

概述 ECMAScript2025于2025年6月26日正式發布&#xff0c; 本文會介紹ECMAScript2025(ES16)&#xff0c;即ECMAScript的第16個版本的新特性。 以下摘自官網&#xff1a;ecma-262 ECMAScript 2025, the 16th edition, added a new Iterator global with associated static and…

Vim 編輯器工作模式及操作指南

Vim 編輯器工作模式及操作指南 一、工作模式概述 Vim編輯器主要包含四種工作模式&#xff0c;分別是&#xff1a; 命令模式&#xff08;默認進入模式&#xff09;輸入模式&#xff08;編輯模式&#xff09;末行模式&#xff08;指令模式&#xff09;可視模式 二、模式切換及操作…

Rabbitmq中常見7種模式介紹

p&#xff1a;生成者&#xff0c;生成消息的程序c&#xff1a;消費者&#xff0c;消費消息的程序Queue&#xff1a;消息隊列&#xff0c;用于緩存消息&#xff0c;生產者向里面投遞消息&#xff0c;消費者從里面拿取消息消費X&#xff1a;交換機&#xff0c;在rabbitMQ中&#…

SpringAI 1.0.0發布:打造企業級智能聊天應用

官方文檔 gitee的demo 1、前言 2025年5月&#xff0c;SpringAI 1.0.0終于正式發布。這不僅是另一個普通的庫&#xff0c;更是將Java和Spring推向AI革命前沿的戰略性舉措。給Java生態帶來了強大且全面的AI工程解決方案。眾多企業級應用在SpringBoot上運行關鍵業務&#xff0c…

全球各界關注與討論鴿姆智庫的多維視角分析?

【摘要】全球各界對鴿姆智庫的關注與討論主要集中在以下多維視角&#xff1a; 一、技術創新維度 ?通用思維框架&#xff08;GTF&#xff09;與中文智慧編程系統&#xff08;CWPS&#xff09;? GTF通過模擬人類格式塔認知&#xff0c;實現模式補全與圖形-背景分離功能&#xf…