Spring Boot微服務架構(八):開發之初就引入APM工具監控

使用 APM(Application Performance Management)工具監控 Spring Boot 應用,可以幫助開發者實時追蹤性能瓶頸、分析調用鏈路、監控資源使用情況,并快速定位故障。以下是詳細的步驟和常用工具的選擇指南:


??一、常用 APM 工具及特點??

工具名稱類型特點
??SkyWalking??分布式追蹤 + 指標監控開源、支持 Java Agent、自動鏈路追蹤、可視化儀表盤
??Zipkin??分布式追蹤輕量級、需手動埋點、適合簡單場景
??Prometheus??指標監控多維數據模型、靈活告警、結合 Grafana 可視化
??Elastic APM??全鏈路監控基于 OpenTelemetry,集成日志、指標、鏈路追蹤,適合 Elastic 生態
??New Relic??商業全棧監控功能全面、支持多語言、商業版功能強大
??Datadog??云原生監控支持 APM、基礎設施監控、日志,適合混合云環境

??二、監控 Spring Boot 的核心步驟??

??1. 指標監控(Metrics)??

??目標??:監控 JVM、HTTP 請求、數據庫連接池等指標。
??工具??:Spring Boot Actuator + Prometheus + Grafana
??步驟??:

  1. ??添加依賴??(pom.xml):

    <!-- Actuator 暴露指標 -->
    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <!-- Micrometer Prometheus 導出器 -->
    <dependency><groupId>io.micrometer</groupId><artifactId>micrometer-registry-prometheus</artifactId>
    </dependency>
  2. ??配置 application.yml??:

    management:endpoints:web:exposure:include: prometheus, health  # 暴露 Prometheus 和健康檢查端點metrics:export:prometheus:enabled: true
  3. ??啟動應用??,訪問 http://localhost:8080/actuator/prometheus,可以看到暴露的指標數據。

  4. ??部署 Prometheus??:配置抓取目標(指向 Spring Boot 的 /actuator/prometheus 端點)。

  5. ??使用 Grafana 可視化??:導入 Spring Boot 的儀表盤模板(如 Grafana Spring Boot Dashboard)。


??2. 分布式鏈路追蹤(Tracing)??

??目標??:追蹤微服務間的調用鏈路,分析請求耗時。
??工具??:SkyWalking、Zipkin、Elastic APM
??以 SkyWalking 為例??:

  1. ??下載 SkyWalking Agent??:從 官網 獲取 JAR 包。
  2. ??啟動 Spring Boot 應用時附加 Agent??:
    java -javaagent:/path/to/skywalking-agent.jar \-Dskywalking.agent.service_name=my-spring-boot-app \-Dskywalking.collector.backend_service=127.0.0.1:11800 \-jar your-application.jar
  3. ??訪問 SkyWalking UI??(默認 http://localhost:8080),查看鏈路追蹤和性能分析。

??3. 日志與錯誤監控??

??目標??:關聯日志與鏈路追蹤,捕獲異常和錯誤。
??工具??:ELK Stack(Elasticsearch + Logstash + Kibana)、Loki + Grafana
??步驟??:

  1. ??在 Spring Boot 中集成 Logback 或 Log4j2??,添加 Trace ID 到日志中(通過 SkyWalking 或 Sleuth 自動注入)。
  2. ??配置日志輸出到 Elasticsearch/Loki??:使用 Filebeat 或 Fluentd 收集日志。
  3. ??通過 Kibana/Loki Dashboard 分析日志??,結合鏈路追蹤快速定位問題。

??4. 商業工具集成(可選)??

??New Relic??:

  1. ??添加 Java Agent??:下載 New Relic Java Agent。
  2. ??配置 newrelic.yml??:設置 License Key 和應用名稱。
  3. ??啟動應用??:通過 -javaagent 參數加載 Agent。
  4. ??在 New Relic 控制臺??查看應用性能數據。

??三、關鍵監控指標??

  1. ??JVM 指標??:堆內存、GC 時間、線程狀態。
  2. ??HTTP 請求??:響應時間、錯誤率、QPS。
  3. ??數據庫??:慢查詢、連接池使用率。
  4. ??外部服務調用??:Feign/RestTemplate 的耗時和成功率。
  5. ??系統資源??:CPU、內存、磁盤 I/O。

??四、最佳實踐??

  1. ??合理配置采樣率??:避免鏈路追蹤數據量過大(如 Zipkin 可設置 spring.sleuth.sampler.probability=0.1)。
  2. ??設置告警規則??:在 Prometheus 或 Grafana 中配置閾值告警(如 HTTP 5xx 錯誤率 > 1%)。
  3. ??結合日志與鏈路??:通過 Trace ID 關聯日志和調用鏈,快速定位問題根源。
  4. ??定期優化??:根據監控數據優化慢查詢、調整 JVM 參數、擴容資源。

??五、工具選擇建議??

  • ??簡單場景??:Spring Boot Actuator + Prometheus + Grafana(免費、輕量)。
  • ??分布式追蹤??:SkyWalking(國產開源,社區活躍)或 Zipkin(輕量級)。
  • ??全棧監控??:Elastic APM(集成日志、指標、鏈路)或 New Relic(商業級功能)。
  • ??云原生環境??:Datadog 或 Prometheus + Grafana(支持 Kubernetes 監控)。

通過以上步驟,可以實現對 Spring Boot 應用的全方位監控,快速發現性能瓶頸并提升系統穩定性。

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

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

相關文章

Python 如何讓自動駕駛的“眼睛”和“大腦”真正融合?——傳感器數據融合的關鍵技術解析

Python 如何讓自動駕駛的“眼睛”和“大腦”真正融合?——傳感器數據融合的關鍵技術解析 自動駕駛技術從來都不是“單兵作戰”。如果你細看一輛自動駕駛汽車,它其實是一個傳感器的集合體:攝像頭、激光雷達(LiDAR)、毫米波雷達、超聲波傳感器、GPS……這些傳感器各自發揮作…

《軟件工程》第 12 章 - 軟件測試

軟件測試是確保軟件質量的關鍵環節&#xff0c;它通過執行程序來發現錯誤&#xff0c;驗證軟件是否滿足需求。本章將依據目錄&#xff0c;結合 Java 代碼示例、可視化圖表&#xff0c;深入講解軟件測試的概念、過程、方法及實踐。 12.1 軟件測試的概念 12.1.1 軟件測試的任務 …

面試題 08.08. 有重復字符串的排列組合【 力扣(LeetCode) 】

文章目錄 零、原題鏈接一、題目描述二、測試用例三、解題思路四、參考代碼 零、原題鏈接 面試題 08.08. 有重復字符串的排列組合 一、題目描述 有重復字符串的排列組合。編寫一種方法&#xff0c;計算某字符串的所有排列組合。 二、測試用例 示例 1&#xff1a; 輸入&#…

【Linux】關于權限的理解

目錄 一、Linux用戶的分類 1.Linux下的兩種用戶 2.兩種用戶提示符的區別 3.用戶的切換方法 二、Linux的權限管理 1.文件訪問者分類 2.常見文件類型 3.文件訪問權限 4.權限檢查邏輯 5.文件權限的表示方式 三、與文件訪問權限相關的設置方法 1.前提&#xff1a; 2.如…

前端antd,后端fastapi,解決文件上傳

一、技術架構概述 前端框架&#xff1a;React Ant Design 5.x 使用antd的Upload組件&#xff08;支持拖拽/多文件/分片&#xff09; 后端框架&#xff1a;Python FastAPI 利用UploadFile類處理文件流 傳輸協議&#xff1a;HTTP FormData&#xff08;兼容性強&#xff09; 二…

?????? 模擬題及答案 ?????? 大模型Clouder認證:RAG應用構建及優化

考試注意事項: 一、單選題(21題) 檢索增強生成(RAG)的核心技術結合了什么? A. 圖像識別與自然語言處理 B. 信息檢索與文本生成 C. 語音識別與知識圖譜 D. 數據挖掘與機器學習 RAG技術中,“建立索引”步驟不包括以下哪項操作? A. 將文檔解析為純文本 B. 文本片段分割(…

為什么建立 TCP 連接時,初始序列號不固定?

主要原因有兩個方面&#xff1a; 很大程度上避免歷史報文被下一個相同四元組的 TCP 連接接收問題&#xff08;主要方面&#xff09;防止黑客偽造相同序列號的 TCP 報文被接收 接下來&#xff0c;詳細說說第一點 假設每次建立 TCP 連接時&#xff0c;客戶端和服務端的初始序列…

VScode-使用技巧-持續更新

一、Visual Studio Code - MACOS版本 復制當前行 shiftoption方向鍵?? 同時復制多行 shiftoption 批量替換換行 在查找和替換面板中&#xff0c;你會看到一個 .? 圖標&#xff08;表示啟用正則表達式&#xff09;。確保這個選項被選中&#xff0c;因為我們需要使用正則…

【瑤池數據庫訓練營及解決方案本周精選(探索PolarDB,參與RDS遷移、連接訓練營)】

一、訓練營 數據庫遷移訓練營 自建數據庫運維難&#xff1f;本次訓練營教您遷移至云數據庫 RDS&#xff0c;高可用架構跨區容災&#xff0c;降本增效&#xff01;模擬教程 實戰演練&#xff0c;零基礎也能上手。 &#xff08;一&#xff09;開營時間 2025年4月8日-6月2日16…

Xamarin勸退之踩坑筆記

初級代碼游戲的專欄介紹與文章目錄-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代碼都將會位于ctfc庫中。已經放入庫中我會指出在庫中的位置。 這些代碼大部分以Linux為目標但部分代碼是純C的&#xff0c;可以在任何平臺上使用。 源碼指引&#xff1a;github源…

使用ray擴展python應用之流式處理應用

流式處理就是數據一來&#xff0c;咱們就得趕緊處理&#xff0c;不能攢批再算。這里的實時不是指瞬間完成&#xff0c;而是要在數據產生的那一刻&#xff0c;或者非常接近那個時間點&#xff0c;就做出響應。這種處理方式&#xff0c;我們稱之為流式處理。 流式處理的應用場景…

火狐安裝自動錄制表單教程——仙盟自動化運營大衍靈機——仙盟創夢IDE

打開火狐插件頁面 安裝完成 使用 功能 錄制瀏覽器操作 錄入地址 開始操作 錄制完成 在當今快速發展的軟件開發生態中&#xff0c;自動化測試已從一種新興技術手段&#xff0c;轉變為保障軟件質量與開發效率不可或缺的關鍵環節。其重要性體現在多個維度&#xff0c;同時&#x…

小程序 - 視圖與邏輯

個人簡介 ??????個人主頁: 魔術師 ??學習方向: 主攻前端方向,正逐漸往全棧發展 ??個人狀態: 研發工程師,現效力于政務服務網事業 ????人生格言: “心有多大,舞臺就有多大。” ??推薦學習: ??Vue2 ??Vue3 ??Vue2/3項目實戰 ??Node.js實戰 ??T…

【LLM應用開發】上下文記憶的解決方案(主流全面)

一、前言 上下文記憶&#xff08;Contextual Memory&#xff09;解決方案的作用&#xff1a; 提升 AI&#xff08;尤其是大語言模型&#xff0c;LLM&#xff09;的對話連貫性和個性化。 本文將介紹幾個主流的實現方式。 二、&#x1f9e0; 什么是上下文記憶&#xff1f; 在對…

C/C++ 面試復習筆記(2)

C語言如何實現快速排序算法&#xff1f; 答案&#xff1a;快排是一種分治算法&#xff0c;選擇一個基準元素&#xff0c;將數據劃分成兩部分&#xff0c;然后遞歸排序 補充&#xff1a; void quick_sort(int arr[], int start, int end) {//判斷是否需要排序if (start > …

2025吉林CCPC 題解(前六題)

// Problem: J - Odd-Even Game // Contest: Virtual Judge - sdccpc20250527 // URL: https://vjudge.net/contest/719585#problem/J // Memory Limit: 1024 MB // Time Limit: 1000 ms // 簽到題 // Powered by CP Editor (https://cpeditor.org)#include <bits/std…

Q: dify知識庫模塊主要庫表和字段

【回到目錄】~~~~【回到問題集】 Q: dify知識庫模塊主要庫表和字段 A: 表1&#xff1a;datasets 知識庫表 name 知識庫名稱 index_struct 向量索引node 表2&#xff1a;document 文檔表 name 文檔名稱 word_count 字數 doc_form 分段類型(hierarchical_model、qa_model、te…

NodeMediaEdge快速上手

NodeMediaEdge快速上手 簡介 NodeMediaEdge是一款部署在監控攝像機網絡前端中&#xff0c;拉取Onvif或者rtsp/rtmp/http視頻流并使用rtmp/kmp推送到公網流媒體服務器的工具。 通過云平臺協議注冊到NodeMediaServer后&#xff0c;可以同NodeMediaServer結合使用。使用圖形化的…

通用前端框架項目靜態部署到Hugging Face Space的實踐指南

背景介紹 在輕量級展示前端項目的場景中,Hugging Face Space 提供了一個便捷的靜態托管平臺。需求是將無后端服務的Vite的 Vue項目部署到Hugging Face Space 上。其實無論是基于Vite的Vue/React項目,還是使用Webpack構建的工程化方案,都可以通過兩種方式將其部署到Space:自…

Android studio 查看aar源碼出現/* compiled code */

如圖查看aar源碼時看不到具體實現&#xff0c;在排除是sdk版本導致的問題后&#xff0c;下面說解決方法 打開設置&#xff0c;找到插件 輸入decompiler 搜索 這個是自帶的反編譯工具&#xff0c;啟用就好了