【監控】Spring Boot 應用監控

這段配置是 Spring Boot 應用中對 Actuator 和 Micrometer 監控系統的配置,用于將應用的指標暴露給 Prometheus 進行收集。下面我將詳細介紹這種配置方式及其提供的指標。

配置說明

這個配置主要涉及 Spring Boot Actuator 和 Micrometer 兩個核心組件:

  1. Actuator 配置
management:endpoint:env:enabled: false  # 禁用 env 端點,防止暴露敏感環境變量security:enabled: false  # 禁用端點安全驗證(生產環境建議啟用)endpoints:web:exposure:include:- prometheus  # 只暴露 prometheus 端點

這部分配置了 Actuator 端點的訪問權限和暴露范圍,特別啟用了 Prometheus 指標端點。

  1. Micrometer 配置
management:metrics:tags:application: XXXX  # 為所有指標添加 application=XXXX 標簽enable:all: true  # 啟用所有默認指標收集distribution:percentiles:http.server.requests: 0.25,0.5,0.75,0.9,0.95  # 為 HTTP 請求指標計算指定百分位數

這部分配置了 Micrometer 的指標收集策略,包括標簽、啟用的指標類型和分布統計參數。

  1. 依賴配置
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency><groupId>io.micrometer</groupId><artifactId>micrometer-registry-prometheus</artifactId>
</dependency>

這兩個依賴分別引入了 Actuator 和 Prometheus 指標收集器。

提供的核心指標

Spring Boot Actuator 與 Micrometer 結合 Prometheus 會提供以下幾類核心指標:

1. JVM 相關指標
jvm_memory_used_bytes                # JVM 各區域(堆、非堆)已使用內存
jvm_memory_max_bytes                 # JVM 各區域最大可用內存
jvm_memory_committed_bytes           # JVM 各區域已提交的內存
jvm_gc_pause_seconds_total           # GC 暫停總時間
jvm_threads_live_threads             # 當前活躍線程數
jvm_classes_loaded_classes           # 已加載的類數量
2. HTTP 請求指標
http_server_requests_seconds_count   # HTTP 請求總數
http_server_requests_seconds_sum     # HTTP 請求總耗時
http_server_requests_seconds_max     # HTTP 請求最大耗時
http_server_requests_seconds         # HTTP 請求耗時分布(通過 percentiles 配置)

可通過 methoduristatus 等標簽過濾不同請求路徑和狀態碼的性能。

3. 系統資源指標
system_cpu_usage                     # 系統 CPU 使用率
process_cpu_usage                    # 進程 CPU 使用率
system_load_average_1m               # 系統 1 分鐘負載平均值
process_start_time_seconds           # 進程啟動時間
4. 數據庫連接池指標(如 HikariCP)
hikaricp_connections_active          # 活躍連接數
hikaricp_connections_idle            # 空閑連接數
hikaricp_connections_pending         # 等待獲取連接的線程數
hikaricp_connections_creation_seconds # 連接創建耗時
5. 緩存指標(如 Caffeine、Redis)
cache_gets_total                     # 緩存獲取次數
cache_hits_total                     # 緩存命中次數
cache_misses_total                   # 緩存未命中次數
cache_puts_total                     # 緩存放入次數
6. 自定義業務指標

通過 MeterRegistry 接口可以在代碼中添加自定義指標,例如:

@Autowired
private MeterRegistry meterRegistry;// 計數器
Counter requestCounter = meterRegistry.counter("http_requests", "endpoint", "/api/users");
requestCounter.increment();// 計時器
Timer apiTimer = meterRegistry.timer("api_response_time", "service", "user-service");
apiTimer.record(() -> {// 執行耗時操作
});

如何使用這些指標

  1. 訪問指標端點
    應用啟動后,可以通過 http://<host>:<port>/actuator/prometheus 查看 Prometheus 格式的指標數據。
  2. Prometheus 配置
    在 Prometheus 的配置文件中添加抓取任務:
scrape_configs:- job_name: 'spring-boot-app'static_configs:- targets: ['localhost:8080']metrics_path: '/actuator/prometheus'
  1. Grafana 可視化
    導入 Spring Boot 官方提供的 Grafana 儀表盤模板(如 ID 12968),快速展示應用性能圖表。

性能優化建議

  1. 調整百分位計算
    配置中的 percentiles 會增加計算開銷,生產環境建議只保留關鍵百分位(如 0.95、0.99)。
  2. 禁用不必要的指標
    如果某些指標對監控無幫助,可以通過 management.metrics.enable.<metric-name>=false 禁用。
  3. 添加自定義標簽
    為指標添加有業務意義的標簽(如 serviceoperation),便于聚合和分析。
  4. 監控告警
    基于關鍵指標設置告警規則,例如:
    • HTTP 請求 95% 響應時間超過 1 秒
    • JVM 堆內存使用率超過 80%
    • 數據庫連接池等待線程數持續大于 5

這種配置方式使 Spring Boot 應用能夠無縫集成 Prometheus 監控系統,提供全面的應用性能指標,幫助開發者及時發現和解決問題。

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

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

相關文章

學習筆記(23): 機器學習之數據預處理Pandas和轉換成張量格式[1]

學習筆記(23): 機器學習之數據預處理Pandas和轉換成張量格式[1] 學習機器學習&#xff0c;需要學習如何預處理原始數據&#xff0c;這里用到pandas&#xff0c;將原始數據轉換為張量格式的數據。 1、安裝pandas pip install pandas 2、寫入和讀取數據 >>創建一個人工…

一臺電腦聯網如何共享另一臺電腦?網線方式

前言 公司內網一個人只能申請一個賬號和一個主機設備&#xff1b;會檢測MAC地址&#xff1b;如果有兩臺設備&#xff0c;另一臺就沒有網&#xff1b;因為是聯想老電腦&#xff0c;共享熱點用不了&#xff0c;但是有一根網線&#xff0c;現在解決網線方式共享網絡&#xff1b; …

Spring Boot 基礎知識全面解析:快速構建企業級應用的核心指南

一、Spring Boot 概述&#xff1a;重新定義 Java 開發 1.1 什么是 Spring Boot&#xff1f; Spring Boot 是基于 Spring 框架的快速開發框架&#xff0c;旨在簡化 Spring 應用的初始搭建及開發過程。它通過 「約定優于配置」&#xff08;Convention Over Configuration&#…

CentOS-stream-9 Zabbix的安裝與配置

一、Web環境搭建部署Zabbix時&#xff0c;選擇合適的MariaDB、PHP和Nginx版本非常重要&#xff0c;以確保兼容性和最佳性能。以下是建議版本&#xff1a;Zabbix 6.4 MariaDB&#xff1a;官方文檔推薦使用MariaDB 10.3或更高版本。對于CentOS Stream 9&#xff0c;建議使用Maria…

CppCon 2014 學習:Adventures in Updating a Legacy Vintage Codebase

“VINTAGE” 部分是對現實中飛行模擬系統中遺留系統復雜性的描述。以下是對關鍵點的理解與拆解&#xff1a; 飛行模擬系統的背景 多環境、多語言、多硬件&#xff1a; 編程語言&#xff1a; 混用的“遺留語言”&#xff1a;Ada, C, C, Fortran, Jovial, PL/M, Pascal不同語言…

【計算機】計算機存儲器的分類與特性

文章目錄 一、按作用層次分類1. 主存儲器&#xff08;內存&#xff09;2. 輔助存儲器&#xff08;外存&#xff09;3. 高速緩沖存儲器&#xff08;Cache&#xff09; 二、按存儲介質分類1. 半導體存儲器2. 磁存儲技術3. 光存儲發展 三、按存取方式分類1. 隨機存儲器技術細節2. …

Redisson - 實現延遲隊列

Redisson 延遲隊列 Redisson 是基于 Redis 的一款功能強大的 Java 客戶端。它提供了諸如分布式鎖、限流器、阻塞隊列、延遲隊列等高可用、高并發組件。 其中&#xff0c;RDelayedQueue 是對 Redis 數據結構的高階封裝&#xff0c;能讓你將消息延遲一定時間后再進入消費隊列。…

上門服務小程序訂單系統框架設計

一、邏輯分析 上門服務小程序訂單系統主要涉及服務展示、用戶下單、訂單處理、服務人員接單與服務完成反饋等核心流程。 服務展示&#xff1a;不同類型的上門服務&#xff08;如家政、維修等&#xff09;需要在小程序中展示詳細信息&#xff0c;包括服務名稱、價格、服務內容介…

Android apk裝機編譯類型: verify、speed-profile, speed與啟動耗時

Android apk裝機編譯類型: verify、speed-profile, speed與啟動耗時 Dex2oat (dalvik excutable file to optimized art file) &#xff0c;對 dex 文件進行編譯優化&#xff0c;Android 虛擬機可識別的是dex文件&#xff0c;應用運行過程如果每次都將dex文件加載內存&#xff…

winrm登錄失敗,指定的憑據被服務器拒絕

winrm登錄失敗&#xff0c;指定的憑據被服務器拒絕。 異常提示&#xff1a;the specified credentials were rejected by the server 在windows power shell執行 set-executionpolicy remotesigned winrm quickconfig winrm set winrm/config/service/auth {Basic"true…

Unity3D ET框架游戲腳本系統解析

前言 ET框架在Unity3D中實現的GamePlay腳本系統是一種革命性的、基于ECS&#xff08;實體-組件-系統&#xff09;架構的設計&#xff0c;它徹底改變了傳統的基于MonoBehaviour的游戲邏輯編寫方式。其核心思想是追求高性能、高解耦、易熱更新&#xff0c;特別適合大型復雜的網絡…

android與Qt類比

一、概念對應關系 Android RecyclerView 組件類比描述Qt 模型 - 視圖組件Qt 類比描述RecyclerView畫板&#xff08;容器&#xff09;QAbstractItemView視圖&#xff08;展示數據的容器&#xff0c;如列表、表格&#xff09;RecyclerView.Adapter畫布&#xff08;數據橋梁&…

Jenkins 2.479.1安裝和郵箱配置教程

1.安裝 在JDK安裝并設置環境變量完成后&#xff0c;下載官網對應的war版本&#xff0c;在對應目錄下打開命令行窗口并輸入 java -jar jenkins.war其余參數感興趣可以自行查閱&#xff0c;這里啟動的 jenkins 服務默認占用8080端口&#xff0c;在瀏覽器輸入 localhost:8080進入…

多分辨率 LCD 的 GUI 架構設計與實現

1.1多分辨率顯示系統的挑戰與解決方案 1.1.1 分辨率適配的核心問題 在嵌入式系統中,同時支持不同分辨率的 LCD(如 240160、320480 等)面臨以下挑戰: 布局適配:同一界面元素在不同分辨率下需要調整大小和位置 字體顯示:小分辨率屏幕需要更小的字體,而大分辨率需要更清…

11. MySQL事務管理(上)

1. CURD不加控制&#xff0c;會有什么問題&#xff1f; 火車票售票系統tickets表 id name nums 10 西安<->蘭州 1 客戶端A 客戶端B if (nums > 0) { if (nums > 0) { 賣票 賣票 // update numsnums - 1 update numsnums - 1 } } 當客戶端A檢查還有一張票時&#xf…

Beta分布Dirichlet分布

目錄 Beta分布Dirichlet分布Beta分布&Dirichlet分布從Dirichlet分布生成Beta樣本Beta分布&Dirichlet分布應用 Beta分布 Beta分布是定義在區間 [ 0 , 1 ] [0, 1] [0,1]上的連續概率分布&#xff0c;通常用于模擬概率或比例的隨機變量。Beta分布的概率密度函數&#xff…

嵌入式系統中常用的開源協議

目錄 1、GNU通用公共許可證&#xff08;GPL&#xff09; 2、GNU寬松通用公共許可證&#xff08;LGPL&#xff09; 3、MIT許可證 4、Apache許可證2.0 5、BSD許可證 6、如何選擇合適的協議 在嵌入式系統開發中&#xff0c;開源軟件的使用已成為主流趨勢。從物聯網設備到汽車…

告別延遲,擁抱速度:存儲加速仿真應用的解決方案【1】

需求分析 現代仿真&#xff08;如CFD流體動力學、FEA結構分析、電磁仿真、氣候模擬、自動駕駛場景仿真、芯片設計等&#xff09;會產生PB級甚至EB級的數據。海量數據的生成、處理和存儲&#xff0c;主要體現在以下幾個關鍵方面&#xff1a; 數據量爆炸式增長&#xff1a;高分…

vue封裝gsap自定義動畫指令

1、指令文件封裝 import { gsap } from gsap;// 動畫類型配置 const ANIMATION_TYPES {// 縮放scale: {from: { scale: 0.5, opacity: 0 },to: { scale: 1, opacity: 1 },hide: { scale: 0.5, opacity: 0 },},// 透明度fade: {from: { opacity: 0 },to: { opacity: 1, ease: …

HTTP 如何升級成 HTTPS

有一個自己的項目需要上線&#xff0c;域名解析完成后&#xff0c;發現只能使用 http 協議&#xff0c;這在瀏覽器上會限制&#xff0c;提示用戶不安全&#xff0c;所以需要把 HTTP 升級成 HTTPS 協議&#xff0c;但又不想花錢。 前提條件&#xff1a; 已經配置好 Nginx 服務器…