【監控】Prometheus+Grafana 構建可視化監控

在云原生和微服務架構盛行的今天,監控系統已成為保障業務穩定性的核心基礎設施。作為監控領域的標桿工具,PrometheusGrafana憑借其高效的數據采集、靈活的可視化能力,成為運維和開發團隊的“標配”。


一、Prometheus

Prometheus誕生于2012年,由SoundCloud開發并捐贈給CNCF基金會,現已成為繼Kubernetes之后最受歡迎的云原生項目之一。

1. 核心特性
  • 多維數據模型:通過<metric name>{<label1>=<value1>, ...}的格式記錄數據,支持按標簽動態分類(如區分不同服務的HTTP請求延遲)。
  • PromQL查詢語言:提供強大的時間序列數據分析能力,例如計算CPU使用率的滑動平均值:
avg_over_time(node_cpu_seconds_total{mode="idle"}[5m])
  • Pull/Push混合模式:默認通過HTTP主動拉取目標數據,同時支持通過Pushgateway接收短期任務推送的指標。
  • 分布式高可用:支持聯邦集群架構,實現跨數據中心的數據聚合。
2. 架構組件
體系結構

下圖說明了Prometheus的體系結構及其某些生態系統組件:

Prometheus體系涉及的組件

  • Prometheus server - 收集和存儲時間序列數據
  • Client Library: 客戶端庫,為需要監控的服務生成相應的
  • metrics 并暴露給 - Prometheus server。當 Prometheus server 來 pull 時,直接返回實時狀態的 metrics。
  • pushgateway - 對于短暫運行的任務,負責接收和緩存時間序列數據,同時也是一個數據源
  • exporter - 各種專用exporter,面向硬件、存儲、數據庫、HTTP服務等
  • alertmanager - 處理報警
  • webUI等,其他各種支持的工具,本身的界面值適合用來語句查詢,數據可視化,需要第三方組件,比如Grafana。

3.如何收集度量值

度量指標由監控系統執行的過程通常可以分為兩種方法:推和拉。

Prometheus基于HTTP call,從配置文件中指定的網絡端點(endpoint)上周期性獲取指標數據。

Prometheus支持通過三種類型的途徑從目標上“抓取(Serape)”指標數據:

Exporters:被監控的目標不支持pro的數據格式,通過exporters抽取指標數據,進行格式化處理成pro兼容的數據格式,再響應給pro server。

Instrumentation:應用系統內建了pro兼容的指標數據格式,pro server可以直接采集。

Push gateway:pro采用 pull 模式,可能由于不在一個子網或者防火墻原因,導致 Prometheus 無法直接拉取各個 target 數據。在監控業務數據的時候,需要將不同數據匯總, 由 Prometheus 統一收集。暫存在pushgateway,等待Prometheus server拉取。

二、Grafana

Grafana作為開源可視化領域的“瑞士軍刀”,能夠將Prometheus的原始數據轉化為直觀的運維儀表盤。

1. 核心優勢
  • 多數據源支持:無縫集成Prometheus、Loki、InfluxDB、Elasticsearch等30+數據源。
  • 動態儀表盤:提供折線圖、熱力圖、統計面板等10+圖表類型,支持通過變量實現交互式過濾(如按環境/服務篩選)。
  • 告警可視化:可在圖表中直接標注閾值告警點,并結合Alertmanager實現分級通知。
  • 模板生態:官方市場提供1.5萬+預置模板,例如:
    • 主機監控模板(ID: 8919)
    • MySQL性能分析模板(ID: 11329)
    • Kubernetes集群監控模板(ID: 315)
2. 高級功能
  • 混合數據源:在同一面板中對比不同系統的數據(如同時展示Prometheus的CPU指標和Elasticsearch的日志量)。
  • 權限管控:支持基于角色的訪問控制(RBAC),細化到儀表盤級別的權限管理。

三、協同工作流

  1. 數據采集
    Node Exporter采集主機CPU/內存指標,cAdvisor收集容器資源使用情況,應用通過Client Library暴露自定義指標(如Spring Boot的HTTP請求數)。
  2. 存儲分析
    Prometheus每15秒拉取一次數據,存儲至TSDB,并通過PromQL實現實時分析。例如檢測內存泄漏:
increase(container_memory_usage_bytes{container="app"}[1h]) > 1GB
  1. 可視化展示
    在Grafana中創建儀表盤,組合多個圖表形成監控全景(圖2)。例如:
    • 實時顯示服務的QPS、錯誤率、響應時間百分位數
    • 通過GeoMap插件展示全球用戶的訪問延遲分布
  2. 智能告警
    當Prometheus檢測到指標異常(如錯誤率>5%持續5分鐘),Alertmanager會觸發Grafana通知,并自動生成事件時間線供事后分析。

四、典型應用場景
  1. 基礎設施監控
    通過Node Exporter+主機模板(圖3),實時跟蹤服務器CPU/磁盤/網絡狀態,預測硬件故障。
  2. 微服務觀測
    結合Istio等服務網格,監控服務間調用的黃金指標(吞吐量、錯誤率、飽和度)。
  3. CI/CD健康度
    分析流水線的構建時長、失敗原因,優化Jenkins任務調度策略。
  4. 業務指標可視化
    將訂單成交量、用戶活躍度等業務指標接入,實現技術與業務數據的聯動分析。

五、最佳實踐
  1. 指標設計規范
    • 遵循<service>_<metric>_<unit>命名規則(如http_requests_total
    • 避免高基數標簽(如用戶ID會導致時序爆炸)
  2. 性能優化
    • 設置合理的抓取間隔(生產環境建議30-60秒)
    • 使用Recording Rules預計算常用查詢
  3. 可視化策略
    • 關鍵指標采用紅/黃/綠狀態標識
    • 在儀表盤頂部放置全局過濾器(如環境/數據中心)

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

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

相關文章

替代 WPS 的新思路?快速將 Word 轉為圖片 PDF

在這個數字化辦公日益普及的時代&#xff0c;越來越多的人開始關注文檔處理工具的功能與體驗。當我們習慣了某些便捷操作時&#xff0c;卻發現一些常用功能正逐漸變為付費項目——比如 WPS 中的一項實用功能也開始收費了。 這款工具最特別的地方在于&#xff0c;可以直接把 W…

CodeTop之數組中的第K個最大的元素

題目鏈接 215. 數組中的第K個最大元素 - 力扣&#xff08;LeetCode&#xff09; 題目解析 算法原理 解法一: 直接理由java內部的排序函數,Arrays.sort()進行排序, 然后我們直接返回第k個最大的元素 nums[nums.length-k] 解法二: 使用堆 我們先把所有元素丟到大根堆里面…

AI任務相關解決方案1-基于NLP的3種模型實現實體識別,以及對比分析(包括基于規則的方法、CRF模型和BERT微調模型)

大家好,我是微學AI,今天給大家介紹一下AI任務相關解決方案1-基于NLP的3種模型實現實體識別,以及對比分析。本文將深入探討三種不同的命名實體識別(NER)方法,包括基于規則的方法、CRF模型和BERT微調模型,用于識別文本中的地名(LOC)、機構名稱(ORG)和人名(PER)實體。通過系統…

IP動態偽裝開關

IP動態偽裝開關 在OpenWrt系統中&#xff0c;IP動態偽裝&#xff08;IP Masquerading&#xff09;是一種網絡地址轉換&#xff08;NAT&#xff09;技術&#xff0c;用于在私有網絡和公共網絡之間轉換IP地址。它通常用于允許多個設備共享單個公共IP地址訪問互聯網。以下是關于O…

【MySQL】第10節|MySQL全局優化與Mysql 8.0新增特性詳解

全局優化 mysql server參數 1. max_connections&#xff08;最大連接數&#xff09; 含義&#xff1a;MySQL 服務允許的最大并發連接數&#xff08;包括正在使用和空閑的連接&#xff09;。超過此限制時&#xff0c;新連接會被拒絕&#xff08;報錯 Too many connections&am…

VS Code 插件 Git History Diff

插件名 進命令行&#xff0c;進Git自己那個分支 查看分支 提交到Git的后想再把另一個也提交到那個分支&#xff0c;用這個命令

Shell腳本中的常用命令

一.設置主機名稱 文件設置 文件開機時已讀取所以要重新進入 命令更改&#xff08;即使生效&#xff09; 二.網絡管理命令 1.查看網卡命令 設置網卡 1&#xff09;DHCP工作模式 2)靜態IP 3&#xff09;修改網卡信息 三.簡單處理字符 1.打印連續數字 連續打印3個數字 指定打…

C++ 中 std::wstring::c_str() 的潛在風險與安全使用指南

一、問題背景 在開發過程中&#xff0c;我們經常會遇到不同接口之間的數據傳遞問題。例如&#xff0c;當調用某個接口時&#xff0c;需要傳入一個字符串指針作為數據接收的緩沖區&#xff0c;但外圍接口使用的是 std::wstring 類型。此時&#xff0c;如果直接將 std::wstring:…

‘js@https://registry.npmmirror.com/JS/-/JS-0.1.0.tgz‘ is not in this registry

解決方法&#xff1a; 1. npm cache clean --force 2.臨時切換到官方源 npm config set registry https://registry.npmjs.org/ npm install js0.1.0 npm config set registry https://registry.npmmirror.com/ # 切換回鏡像源

ubuntu24 安裝MongoDB-6.0.24 數據庫操作步驟和配置參數說明

目錄 1 下載MongoDB軟件 2 操作系統信息 3 MongoDB 軟件安裝步驟 4 編寫mongodb的配置文件 5 生成keyfile 6 使用mongo用戶啟動mongodb服務 7 設置開機啟動(mongo用戶) 8 安裝MongoDB shell&#xff0c;因為MongoDB-6.0.24 已經移除mongo命令 1 下載MongoDB軟件 https:…

單片機——keil5

文章目錄 安裝教程使用介紹案例展示 接下來進行keil5軟件的相關學習使用 安裝教程 參考視頻鏈接bilibili 51單片機 大約在8分鐘位置處 使用介紹 首先新建project選擇對應的芯片型號&#xff08;例如&#xff1a;STC89C52 —— 由于STC系列是國產&#xff0c;keil5軟件不支持…

計算機網絡相關發展以及常見性能指標

目錄 一、因特網概述 1.1 基本概念 1.2 因特網發展的三個階段 1.3 英特網服務提供者ISP 1.4 英特網的標準化工作 1.5 因特網的組成 1.6 簡單總結 二、3種交換方式 2.1 電路交換&#xff08;Circuit Switching&#xff09; 2.2 分組交換&#xff08;Packet Switching&…

Java 面試實錄:從Spring到微服務的技術探討

在一個明亮的會議室里&#xff0c;嚴肅的面試官與搞笑的程序員謝飛機正進行一場關于Java技術棧的面試。場景設定在一家知名互聯網大廠&#xff0c;他們的對話充滿了技術性與娛樂性。 第一輪&#xff1a;Spring框架與數據庫 面試官&#xff1a;“謝飛機&#xff0c;能解釋一下…

OpenCV CUDA模塊圖像過濾------創建一個 Scharr 濾波器函數createScharrFilter()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 該函數用于創建一個 Scharr 濾波器&#xff08;基于 CUDA 加速&#xff09;&#xff0c;用于圖像的一階導數計算。它常用于邊緣檢測任務中&#…

yolov8分割任務的推理和后處理解析

文章目錄 一、前言二、分割模型的前向推理1. 檢測結果&#xff1a;來自Detect類的輸出2. 分割結果&#xff08;最終&#xff09;3. 與Detect的主要區別4. 工作流程 三、后處理1. 非極大值抑制&#xff08;NMS&#xff09;過濾檢測框2. 分割原型&#xff08;Mask Prototypes&…

4.1.1 Spark SQL概述

Spark SQL是Apache Spark的一個模塊&#xff0c;專門用于處理結構化數據。它引入了DataFrame這一編程抽象&#xff0c;DataFrame是帶有Schema信息的分布式數據集合&#xff0c;類似于關系型數據庫中的表。用戶可以通過SQL、DataFrames API和Datasets API三種方式操作結構化數據…

華為OD機試真題——書籍疊放(2025A卷:200分)Java/python/JavaScript/C/C++/GO最佳實現

2025 A卷 200分 題型 本專欄內全部題目均提供Java、python、JavaScript、C、C++、GO六種語言的最佳實現方式; 并且每種語言均涵蓋詳細的問題分析、解題思路、代碼實現、代碼詳解、3個測試用例以及綜合分析; 本文收錄于專欄:《2025華為OD真題目錄+全流程解析+備考攻略+經驗分…

尚硅谷redis7 63-69 redis哨兵監控之理論簡介

63 redis哨兵監控之理論簡介 什么是哨兵 master掛了如何辦?從機原地待命。此時數據只能讀取不能更新。因此需要&#xff1a; 吹哨人巡查監控后臺master主機是否故障,如果故障了根據投票數自動將某一個從庫轉換為新主庫, 哨兵的作用 1、監控redis運行狀態,包括master和slave…

word文檔格式規范(論文格式規范、word格式、論文格式、文章格式、格式prompt)

文章目錄 prompt prompt [格式要求] - 字體&#xff1a;中文宋體小四&#xff1b;英文Times New Roman 12pt&#xff1b;標題黑體 - 行距&#xff1a;1.5倍&#xff08;段前段后0行&#xff09; - 邊距&#xff1a;A4默認&#xff08;上下2.54cm&#xff0c;左右3.17cm&…

SpringBoot+tabula+pdfbox解析pdf中的段落和表格數據

一、前言 在日常業務需求中&#xff0c;往往會遇到解析pdf文件中的段落或者表格數據的需求。 常見的做法是使用 pdfbox 來做&#xff0c;但是它只能提取文本數據&#xff0c;沒有我們在文件頁面上面的那種結構化組織&#xff0c;文本通常是散亂的包含各種換行回車空格等格式&a…