13.Spring boot中使用Actuator 監控

13.Spring boot中使用Actuator 監控

Spring Boot Actuator 是 Spring Boot 提供的一個強大的監控和管理工具,它通過暴露各種端點(Endpoints)來提供應用程序的運行時信息。這些端點可以幫助開發者和管理員監控應用程序的健康狀況、性能指標、環境信息等。

在生產環境中,建議僅啟用必要的端點,并啟用安全限制以防止未經授權的訪問。
敏感端點:某些端點(如 /actuator/env、/actuator/loggers)可能包含敏感信息,應謹慎處理。
建議結合 Spring Security 對 Actuator 端點進行訪問控制。

  1. 快速集成 Spring Boot Actuator。
  2. 自定義健康檢查和端點。

一、項目初始化

1. 項目結構
spring-boot-actuator-demo/
├── src/
│   ├── main/
│   │   ├── java/com/example/demo/
│   │   │   ├── DemoApplication.java          # 固定名稱:主啟動類
│   │   │   ├── actuator/                     # 自定義端點目錄(非固定,可選)
│   │   │   │   └── CustomEndpoint.java       # 自定義端點類(非固定)
│   │   │   ├── health/                       # 自定義健康檢查目錄(非固定,可選)
│   │   │   │   └── CustomHealthIndicator.java # 自定義健康檢查類(非固定)
│   │   │   └── config/                       # 配置類目錄(非固定,可選)
│   │   │       └── SecurityConfig.java       # Spring Security 配置類(非固定)
│   │   └── resources/
│   │       ├── application.yml               # 固定名稱:主配置文件
│   │       └── application-prod.yml          # 非固定名稱:生產環境配置(可選)
└── pom.xml                                   # 固定名稱:Maven 依賴管理

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>spring-boot-actuator-demo</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target></properties><!-- Spring Boot 父級依賴(固定名稱,必須) --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.1.5</version> <!-- 使用最新穩定版本 --><relativePath/> <!-- 從倉庫查找,不繼承本地路徑 --></parent><dependencies><!-- Spring Boot Web 依賴(非固定名稱,按需添加) --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Spring Boot Actuator 依賴(非固定名稱,按需添加) --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency></dependencies><!-- 構建配置(固定名稱,通常無需修改) --><build><plugins><!-- Spring Boot Maven 插件(固定名稱,必須) --><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

創建主啟動類 DemoApplication.java

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}
}

在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述

二、分步實現

第一步:基礎 Actuator 集成(無需代碼)

目標:僅通過配置文件啟用 Actuator,并驗證默認端點。

  1. 修改 pom.xml(固定名稱)
    確保已添加 spring-boot-starter-actuator 依賴:

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    
  2. 配置 application.yml(固定名稱)
    啟用默認端點(如 healthinfo):

    server:port: 8080management:endpoints:web:exposure:include: "health,info"  # 僅暴露 health 和 info 端點
    
  3. 驗證

    • 啟動應用,訪問:
      • http://localhost:8080/actuator/health(返回 {"status":"UP"}
      • http://localhost:8080/actuator/info(默認返回空對象 {}

在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述
暴露所有端點
在這里插入圖片描述
在這里插入圖片描述

第二步:自定義健康檢查(需代碼)

目標:添加一個自定義健康檢查邏輯(例如檢查外部服務狀態)。

  1. 更新 application.yml(固定名稱)
    配置健康檢查顯示詳細信息:

    management:endpoint:health:show-details: always  # 顯示健康檢查的詳細信息
    

    在這里插入圖片描述
    在這里插入圖片描述

  2. 創建 CustomHealthIndicator.java(非固定名稱,但需遵循包路徑)
    com.example.demo.health 包下創建類(包路徑可自定義,但需與代碼邏輯一致):

    import org.springframework.boot.actuate.health.Health;
    import org.springframework.boot.actuate.health.HealthIndicator;
    import org.springframework.stereotype.Component;@Component
    public class CustomHealthIndicator implements HealthIndicator {@Overridepublic Health health() {boolean isHealthy = checkExternalService(); // 模擬檢查邏輯if (isHealthy) {return Health.up().withDetail("status", "External service is healthy,健康的").build();} else {return Health.down().withDetail("error", "External service is unavailable").build();}}private boolean checkExternalService() {// 實際場景中替換為真實檢查邏輯(如 HTTP 請求、數據庫連接等)return true; // 示例中始終返回 true}
    }
    

在這里插入圖片描述

  1. 驗證
    • 訪問 http://localhost:8080/actuator/health,返回結果將包含自定義健康檢查的詳細信息。

在這里插入圖片描述

第三步:自定義端點(需代碼)

目標:添加一個自定義 Actuator 端點,支持 GET、POST 和 DELETE 操作。

  1. 創建 CustomEndpoint.java(非固定名稱,但需遵循包路徑)
    com.example.demo.actuator 包下創建類(包路徑可自定義):

    import org.springframework.boot.actuate.endpoint.annotation.*;
    import org.springframework.stereotype.Component;
    import java.util.Collections;
    import java.util.Map;@Component
    @Endpoint(id = "custom")  // 端點 ID,訪問路徑為 /actuator/custom
    public class CustomEndpoint {// 只讀端點(GET 請求)@ReadOperationpublic Map<String, String> customData() {return Collections.singletonMap("message", "Hello from Custom Actuator Endpoint!");}
    }
    

    在這里插入圖片描述
    在這里插入圖片描述

  2. 更新 application.yml(固定名稱)
    暴露自定義端點:

    management:endpoints:web:exposure:include: "health,info,custom"  # 添加 custom 端點
    

在這里插入圖片描述

  1. 驗證
    • GET 請求:http://localhost:8080/actuator/custom
      返回 {"message":"Hello from Custom Actuator Endpoint!"}

在這里插入圖片描述

三、核心配置文件說明

文件路徑名稱是否固定作用說明
pom.xml固定Maven 依賴管理文件,定義項目依賴。
application.yml固定主配置文件,定義 Actuator 端點暴露、安全配置等。
application-prod.yml非固定生產環境配置(可選),通過 spring.profiles.active=prod 激活。
CustomHealthIndicator.java非固定自定義健康檢查邏輯,覆蓋默認健康檢查行為。
CustomEndpoint.java非固定自定義 Actuator 端點,支持 RESTful 操作(GET/POST/DELETE)。

四、生產環境建議

  1. 限制端點暴露
    僅暴露必要端點(如 health, info, metrics):
    management:endpoints:web:exposure:include: "health,info,metrics"
    

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

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

相關文章

Python+Scrapy跨境電商爬蟲實戰:從亞馬遜/沃爾瑪數據采集到反爬攻克(附Pangolin API高效方案)

從零實戰到反爬攻克&#xff0c;揭秘跨境數據抓取全流程與Pangolin Scrape API終極方案 在當今數據驅動的跨境電商時代&#xff0c;誰掌握了優質的市場數據&#xff0c;誰就掌握了成功的關鍵。隨著全球電商市場規模持續擴大&#xff08;據Statista最新報告顯示&#xff0c;2025…

0基礎學習鴻蒙開發-HarmonyOS4

一、初識 1. 開發工具 官網 開發-HarmonyOS NEXT鴻蒙應用開發平臺-華為開發者聯盟 2. ArkTS 二、TypeScript 基本語法 1.變量聲明 2. 條件控制 注意 在TypeScrips中 空字符串數字0、null、undefined 都坡認為是false 其它值則為true if (num) {// num 非空執行 } 3. 循環迭…

深度學習中常用的符號表達式

在論文寫作過程中&#xff0c;常常涉及到一些關鍵的符號的表達&#xff0c;為了更加規范常用的一些符號表達&#xff0c;現將其總結如下&#xff08;該文件會持續性更新&#xff09;&#xff1a; 數字 x x x : 標量 x \mathbf{x} x : 向量 X \mathbf{X} X : 矩陣 X \mathsf{X}…

react naive 網絡框架源碼解析

本文取 react native 兩個區別很大的版本做分析&#xff08;0.76.5、0.53.3&#xff09; 一、0.76.5 版fetch 全流程排查 1、JS 端的實現 隨手寫一個fetch&#xff0c;點開。 我們這里常用的還是手機端&#xff0c;因此選擇 react-native&#xff0c;react-native-windows …

OpenCV 圖形API(81)圖像與通道拼接函數-----透視變換函數warpPerspective()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 對圖像應用透視變換。 函數 warpPerspective 使用指定的矩陣對源圖像進行變換&#xff1a; dst ( x , y ) src ( M 11 x M 12 y M 13 M 31 x…

深度學習在油氣地震資料反卷積中的應用

深度學習在油氣地震資料反卷積中的應用 基本原理 在油氣地震勘探中&#xff0c;反卷積(Deconvolution)是一種重要的信號處理技術&#xff0c;用于提高地震資料的分辨率。傳統方法(如維納濾波、預測反卷積等)存在對噪聲敏感、假設條件嚴格等局限。深度學習方法通過數據驅動的方…

Java開發者面試實錄:微服務架構與Spring Cloud的應用

面試場景 面試官: 請介紹一下你的基本情況。 程序員: 大家好&#xff0c;我叫張小明&#xff0c;今年27歲&#xff0c;碩士學歷&#xff0c;擁有5年的Java后端開發經驗。主要負責基于Spring Boot開發企業級應用&#xff0c;以及微服務架構的設計和實現。 面試官: 好的&#…

?Spring + Shiro 整合的核心要點及詳細實現說明

在 Spring 項目中集成 Apache Shiro 可以實現輕量級的安全控制&#xff08;認證、授權、會話管理等&#xff09;。以下是 ?Spring Shiro 整合的核心要點及詳細實現說明&#xff1a; 一、Spring 與 Shiro 整合的核心組件 ?組件??作用?ShiroFilterFactoryBean創建 Shiro 過…

網絡編程核心技術解析:從Socket基礎到實戰開發

網絡編程核心技術解析&#xff1a;從Socket基礎到實戰開發 一、Socket編程核心基礎 1. 主機字節序與網絡字節序&#xff1a;數據傳輸的統一語言 在計算機系統中&#xff0c;不同架構對多字節數據的存儲順序存在差異&#xff0c;而網絡通信需要統一的字節序標準&#xff0c;這…

SQLark可以支持PostgreSQL了,有哪些新功能?

SQLark&#xff08;百靈連接&#xff09;是一款國產的數據庫開發和管理工具&#xff0c;用于快速查詢、創建和管理不同類型的數據庫系統&#xff0c;支持達夢、Oracle 和 MySQL 數據庫。 最新發布的 SQLark V3.4 版本新增了對 PostgreSQL 數據庫的支持。我試用了一下&#xff…

【全面解析】Poco C++ Libraries 模塊詳解與使用指南

Poco&#xff08;The Portable Components&#xff09; 是一套現代 C 的跨平臺開發庫&#xff0c;廣泛應用于嵌入式系統、服務端程序、工業控制和 AI 后端服務等領域。其設計理念類似于 Java 的標準庫&#xff0c;為 C 提供“標準的非標準功能”。 本篇文章將帶你全面了解 Poco…

Vue+tdesign t-input-number 設置長度和顯示X號

一、需求 Vuetdesign t-input-number 想要設置input的maxlen和顯示X號 二、實現 t-input&#xff0c;可以直接使用maxlength和clearable屬性 <t-input v-model"value" clearable maxlength10 placeholder"請輸入" clear"onClear" blur&q…

(Go Gin)Gin學習筆記(二):路由配置、基本路由、表單參數、上傳單個文件、上傳多個文件、淺扒路由原理

1. 路由 gin 框架中采用的路優酷是基于httprouter做的 HttpRouter 是一個高性能的 HTTP 請求路由器&#xff0c;適用于 Go 語言。它的設計目標是提供高效的路由匹配和低內存占用&#xff0c;特別適合需要高性能和簡單路由的應用場景。 主要特點 顯式匹配&#xff1a;與其他路由…

Linux下的好玩的命令

在 CentOS 下&#xff0c;有許多有趣且實用的 Linux 命令&#xff0c;可以幫助你更好地了解系統、提升效率或進行娛樂。以下是一些好玩的 Linux 命令及其說明&#xff1a; 1. cowsay 和 cowthink 功能&#xff1a;讓一只牛&#xff08;或其他動物&#xff09;說出你想說的話。…

OpenharmonyOS+RK3568,【編譯燒錄】

文章目錄 1. 摘要 ?2. 代碼下載 &#x1f4e9;3. 編譯 &#x1f5a5;?4. 修改&適配 ??4.1 編譯框架基本概念4.2 vendor & device 目錄4.3 內核編譯4.3.1 如何修改、適配自己的開發板&#xff1f; 4.4 修改外設驅動 5. 燒錄&驗證 &#x1f4cb;參考 1. 摘要 ? …

深度學習模型優化:如何讓數據科學更智能?

深度學習模型優化:如何讓數據科學更智能? 一、引言:為什么優化深度學習模型如此重要? 深度學習的應用已經滲透到數據科學的各個領域,從圖像識別到自然語言處理,從推薦系統到金融風控,每一個智能模型都依賴于數據驅動的訓練。然而,一個模型的性能不僅僅取決于其架構,…

學習Python的第二天之網絡爬蟲

30歲程序員學習Python的第二天之網絡爬蟲的信息提取 BeautifulSoup庫 地址&#xff1a;https://beautifulsoup.readthedocs.io/zh-cn/v4.4.0/ 1、BeautifulSoup4安裝 在windows系統下通過管理員權限運行cmd窗口 運行pip install beautifulsoup4 測試實例 import requests…

n8n 鍵盤快捷鍵和控制鍵

n8n 鍵盤快捷鍵和控制鍵 工作流控制鍵畫布操作移動畫布畫布縮放畫布上的節點操作選中一個或多個節點時的快捷鍵 節點面板操作節點面板分類操作 節點內部操作 n8n 為部分操作提供了鍵盤快捷鍵。 工作流控制鍵 Ctrl Alt n&#xff1a;創建新工作流Ctrl o&#xff1a;打開工作…

keil+vscode+騰訊ai助手

嵌入式軟件開發 這個是之前一直想寫的開發方式&#xff0c;不過上份工作一直在忙&#xff0c;沒有抽出時間花在上面&#xff0c;現在空下來好好寫一寫吧&#xff01;標題軟件安裝 關于VSCode以及Keil的安裝可以在以下鏈接中點擊瀏覽 VSCode安裝 Keil5安裝 CubeMx安裝 插件下…

Unity教程(二十三)技能系統 投劍技能(上)基礎實現

Unity開發2D類銀河惡魔城游戲學習筆記 Unity教程&#xff08;零&#xff09;Unity和VS的使用相關內容 Unity教程&#xff08;一&#xff09;開始學習狀態機 Unity教程&#xff08;二&#xff09;角色移動的實現 Unity教程&#xff08;三&#xff09;角色跳躍的實現 Unity教程&…