初識prometheus

Prometheus:云原生時代的監控利器

在當今快速發展的云原生和微服務架構時代,傳統的監控系統面臨著巨大的挑戰:如何高效地收集海量、動態變化的指標?如何實時告警并快速定位問題?如何實現靈活的可視化和強大的數據查詢能力?Prometheus,作為 CNCF(云原生計算基金會)的畢業項目,憑借其強大的功能和云原生友好的設計,已成為監控領域的事實標準。

本文將帶你深入了解 Prometheus 的核心概念、架構、優勢以及如何快速上手。

一、什么是 Prometheus?

Prometheus 是一個開源的系統監控和告警工具包,最初由 SoundCloud 開發,并于 2016 年加入 CNCF。它特別適用于記錄任意純數字時間序列數據,即按時間順序記錄的數值。

核心特點:

  • 多維數據模型: 數據由指標名稱(metric name)和鍵值對(標簽/labels)唯一標識。例如:http_requests_total{method="POST", endpoint="/api/users", status="200"}。這種模型使得查詢和聚合極其靈活。
  • 靈活的查詢語言(PromQL): Prometheus Query Language (PromQL) 允許用戶以強大的方式選擇和聚合時間序列數據。
  • 不依賴分布式存儲: 單個 Prometheus 服務器是自治的,本地存儲其抓取的所有數據,無需依賴外部存儲(如 HDFS)。
  • 通過 HTTP 拉取(Pull)模式收集數據: Prometheus 周期性地從配置的目標(targets)的 HTTP 接口拉取(scrape)指標數據。這與傳統的推送(Push)模式(如 StatsD)不同。
  • 服務發現: 支持動態發現監控目標,與 Kubernetes、Consul、etcd 等集成,自動管理目標列表。
  • 強大的告警功能: 通過 Alertmanager 組件,支持基于 PromQL 的復雜告警規則,并能對告警進行分組、抑制、靜默和路由到多種通知渠道(郵件、Slack、PagerDuty 等)。
  • 圖形化和儀表板: 雖然自帶簡單的圖形界面,但通常與 Grafana 等專業可視化工具集成,創建豐富的儀表板。

二、Prometheus 核心組件與架構

在這里插入圖片描述

一個典型的 Prometheus 監控系統包含以下核心組件:

  1. Prometheus Server: 核心組件,負責:

    • 抓取(Scraping): 從配置的 HTTP endpoints 拉取指標數據。
    • 存儲(Storage): 將收集到的時間序列數據存儲在本地磁盤。
    • 查詢(Querying): 通過 PromQL 提供數據查詢接口。
    • 規則處理(Rule Processing): 計算預定義的記錄規則(Recording Rules)和告警規則(Alerting Rules)。
  2. Exporters: 這是 Prometheus 生態的關鍵。由于 Prometheus 本身不直接監控應用程序,需要由 Exporter 將第三方系統的指標暴露為 Prometheus 可讀的格式(通常是 /metrics 的 HTTP 端點)。

    • 官方/社區 Exporter:node_exporter (監控主機)、mysqld_exporter (MySQL)、redis_exporter (Redis)、blackbox_exporter (黑盒探測) 等。
    • 應用內嵌 Exporter: 許多現代應用(如 Kubernetes 組件、etcd)直接內置了 Prometheus metrics 端點。
  3. Pushgateway: 用于處理來自短生命周期作業(如批處理任務、Cron Jobs)的指標。這些作業在 Prometheus 完成抓取前可能已經結束,因此需要先將指標推送到 Pushgateway,再由 Prometheus 從 Pushgateway 拉取。

  4. Alertmanager: 專門處理由 Prometheus Server 發送的告警。它負責:

    • 去重(Deduplication)
    • 分組(Grouping)
    • 路由(Routing)到正確的接收者
    • 抑制(Inhibition)
    • 靜默(Silences)
    • 發送通知(通過郵件、Webhook、Slack 等)
  5. 客戶端庫(Client Libraries): 用于在應用程序代碼中直接暴露自定義指標(如計數器 Counter、儀表 Gauge、直方圖 Histogram、摘要 Summary)。支持多種語言(Go, Java, Python, Ruby, .NET 等)。

  6. 可視化工具(如 Grafana): 雖然不是 Prometheus 的一部分,但 Grafana 是最流行的與 Prometheus 集成的可視化平臺,用于創建交互式儀表板。

[應用程序/服務] --> (通過客戶端庫暴露指標 或 Exporter)|v[Prometheus Server]/       \/         \(抓取數據) /           \ (發送告警)/             \v               v[本地時間序列數據庫]    [Alertmanager]|               ||               v|       [通知渠道 (郵件, Slack...)]|v[Grafana (可視化)]

三、快速上手:部署一個簡單的 Prometheus

1. 下載并運行 Prometheus

# 下載 Prometheus (以 Linux 為例)
wget https://github.com/prometheus/prometheus/releases/download/v2.50.0/prometheus-2.50.0.linux-amd64.tar.gz
tar xvfz prometheus-2.50.0.linux-amd64.tar.gz
cd prometheus-2.50.0.linux-amd64/# 查看配置文件 (prometheus.yml)
# 默認配置會監控自己
cat prometheus.yml# 啟動 Prometheus
./prometheus --config.file=prometheus.yml

Prometheus 默認在 http://localhost:9090 提供 Web UI。

2. 配置監控目標

編輯 prometheus.yml,添加一個 node_exporter 目標:

global:scrape_interval: 15s # 默認抓取間隔scrape_configs:- job_name: 'prometheus'static_configs:- targets: ['localhost:9090'] # 監控 Prometheus 自身- job_name: 'node' # 監控主機static_configs:- targets: ['your-server-ip:9100'] # 假設 node_exporter 運行在 9100 端口

重啟 Prometheus 服務,訪問 Web UI 的 Status -> Targets 頁面,應該能看到新的目標處于 UP 狀態。

3. 使用 PromQL 查詢

在 Prometheus Web UI 的 Graph 標簽頁,嘗試一些簡單的 PromQL 查詢:

  • up{job="node"}:查看 node 任務的監控目標是否在線(1=在線,0=離線)。
  • node_memory_MemAvailable_bytes{job="node"}:查看主機可用內存。
  • rate(node_cpu_seconds_total{job="node",mode="idle"}[5m]):計算過去 5 分鐘 CPU 空閑時間的平均使用率(注意:idle 時間減少代表 CPU 使用增加)。
  • node_filesystem_avail_bytes{job="node",mountpoint="/"} / node_filesystem_size_bytes{job="node",mountpoint="/"}:計算根分區的可用空間百分比。

4. 集成 Grafana

  1. 安裝并啟動 Grafana。
  2. 在 Grafana 中添加 Prometheus 作為數據源(URL: http://<your-prometheus-host>:9090)。
  3. 導入或創建儀表板。例如,導入 Node Exporter Full 儀表板 (ID: 1860) 可以全面監控主機狀態。

prometheus doc

prometheus與k8s的結合

真實的生產環境往往很復雜,并不能通過單一的prometheus解決整個系統的監控,因此這里推薦一個工業級別的項目
kube-prometheus
接下來對于prometheus的學習也是基于kube-prometheus開源庫進行的,可以這樣說,只要你把這個庫掌握了你就可以直接去找與prometheus相關的工作了

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

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

相關文章

從源碼角度分析導致 JVM 內存泄露的 ThreadLocal

文章目錄1. 為什么需要ThreadLocal2. ThreadLocal的實現解析1.1 實現分析1.2 具體實現1.3 ThreadLocalMap中Hash沖突的解決1.3.1 Hash沖突解決的幾種方法1.3.1.1 開放定值法1.3.1.2 鏈地址法1.3.1.3再哈希法&#xff1a;1.3.1.4 建立公共溢出區1.3.2 ThreadLocal解決Hash沖突的…

React組件化的封裝

1. 組件化封裝的結構 1.1. 定義一個類(組件名必須是大寫&#xff0c;小寫會被認為是html元素), 繼續自React.Component1.2. 實現當前組件的render函數 render當中返回的jsx內容&#xff0c;就是之后React會幫助我們渲染的內容 1.3. 結構圖如下&#xff1a; data 方法render()…

嵌入式仿真教學的革新力量:深圳航天科技創新研究院引領高效學習新時代

嵌入式系統作為現代信息技術的核心基石&#xff0c;已深度融入工業控制、物聯網、智能終端等關鍵領域。高校肩負著培養嵌入式技術人才的重任&#xff0c;但傳統教學方式正面臨嚴峻挑戰&#xff1a;硬件實驗設備投入巨大、更新滯后、維護繁瑣、時空限制嚴格&#xff0c;難以滿足…

六、Linux核心服務與包管理

作者&#xff1a;IvanCodes 日期&#xff1a;2025年8月3日 專欄&#xff1a;Linux教程 要保證一個Linux系統穩定、安全、功能完備&#xff0c;有效管理其后臺服務和軟件包是至關重要的。本文將深入介紹現代Linux系統中四個核心的管理工具&#xff1a;systemctl (服務管理)&…

【數據結構】哈希表實現

目錄 1. 哈希概念 2 哈希沖突和哈希函數 3. 負載因子 4. 將關鍵字轉為整數 5. 哈希函數 5.1直接定址法 5.2 除法散列法/除留余數法 5.3 乘法散列法&#xff08;了解&#xff09; 5.4 全域散列法&#xff08;了解&#xff09; 5.5 其他方法&#xff08;了解&#xff09…

PostgreSQL面試題及詳細答案120道(21-40)

《前后端面試題》專欄集合了前后端各個知識模塊的面試題&#xff0c;包括html&#xff0c;javascript&#xff0c;css&#xff0c;vue&#xff0c;react&#xff0c;java&#xff0c;Openlayers&#xff0c;leaflet&#xff0c;cesium&#xff0c;mapboxGL&#xff0c;threejs&…

數據建模及基本數據分析

目錄 &#xff08;一&#xff09;數據建模 1.以數據預測為核心的建模 2.以數據聚類為核心的建模 &#xff08;二&#xff09;基本數據分析 1.Numpy 2. Pandas 3.實例 4.Matplotlib 資料自取&#xff1a; 鏈接: https://pan.baidu.com/s/1PROmz-2hR3VCTd6Eei6lFQ?pwdy8…

電動汽車DCDC轉換器的用途及工作原理

在電動汽車的電氣架構中&#xff0c;DCDC轉換器&#xff08;直流-直流轉換器&#xff09;是一個至關重要的部件&#xff0c;負責協調高壓動力電池&#xff08;通常300V~800V&#xff09;與低壓電氣系統&#xff08;12V/24V&#xff09;之間的能量流動。它的性能直接影響整車的能…

PyTorch 應用于3D 點云數據處理匯總和點云配準示例演示

PyTorch 已廣泛應用于 3D 點云數據處理&#xff0c;特別是在深度學習驅動的任務中如&#xff1a; 分類、分割、配準、重建、姿態估計、SLAM、目標檢測 等。 傳統 3D 點云處理以 PCL、Open3D 為主&#xff0c;深度學習方法中&#xff0c;PyTorch 是構建神經網絡處理點云的核心框…

ABP VNext + Quartz.NET vs Hangfire:靈活調度與任務管理

ABP VNext Quartz.NET vs Hangfire&#xff1a;靈活調度與任務管理 &#x1f680; &#x1f4da; 目錄ABP VNext Quartz.NET vs Hangfire&#xff1a;靈活調度與任務管理 &#x1f680;? TL;DR&#x1f6e0; 環境與依賴&#x1f527; Quartz.NET 在 ABP 中接入1. 安裝與模塊…

[硬件電路-148]:數字電路 - 什么是CMOS電平、TTL電平?還有哪些其他電平標準?發展歷史?

1. CMOS電平定義&#xff1a; CMOS&#xff08;Complementary Metal-Oxide-Semiconductor&#xff09;電平基于互補金屬氧化物半導體工藝&#xff0c;由PMOS和NMOS晶體管組成。其核心特點是低功耗、高抗干擾性和寬電源電壓范圍&#xff08;通常為3V~18V&#xff09;。關鍵參數&…

0基礎網站開發技術教學(二) --(前端篇 2)--

書接上回說到的前端3種主語言以及其用法&#xff0c;這期我們再來探討一下javascript的一些編碼技術。 一) 自定義函數 假如你要使用一個功能&#xff0c;正常來說直接敲出來便可。可如果這個功能你要用不止一次呢?難道你每次都敲出來嗎?這個時侯&#xff0c;就要用到我們的自…

前端 拼多多4399筆試題目

拼多多 3 選擇題 opacity|visibity|display區別 在CSS中&#xff0c;opacity: 0 和 visibility: hidden 都可以讓元素不可見&#xff0c;但它們的行為不同&#xff1a; ? opacity: 0&#xff08;透明度為0&#xff09; 元素仍然占據空間&#xff08;不移除文檔流&#xff0…

數琨創享:全球汽車高端制造企業 QMS質量管理平臺案例

01.行業領軍者的質量升級使命在全球汽車產業鏈加速升級的浪潮中&#xff0c;質量管控能力已成為企業核心競爭力的關鍵。作為工信部認證的制造業單項冠軍示范企業&#xff0c;萬向集團始終以“全球制造、全球市場、做行業領跑者”為戰略愿景。面對奔馳、寶馬、大眾等“9N”高端客…

GaussDB 約束的使用舉例

1 not null 約束not null 約束強制列不接受 null 值。not null 約束強制字段始終包含值。這意味著&#xff0c;如果不向字段添加值&#xff0c;就無法插入新記錄或者更新記錄。GaussDB使用pg_get_tabledef()函數獲取customers表結構&#xff0c;如&#xff1a;csdn> set sea…

自動駕駛中的傳感器技術13——Camera(4)

1、自駕Camera開發的方案是否歸一化對于OEM&#xff0c;或者自駕方案商如Mobileye如果進行Camera的開發&#xff0c;一般建議采用Tesla的系統化最優方案&#xff0c;所有Camera統一某個或者某兩個MP設計&#xff08;增加CIS議價權&#xff0c;減少Camera PCBA的設計維護數量&am…

開源利器:glTF Compressor——高效優化3D模型的終極工具

在3D圖形開發領域,glTF(GL Transmission Format)已成為Web和移動端3D內容的通用標準。然而,3D模型的文件體積和紋理質量往往面臨權衡難題。Shopify最新開源的glTF Compressor工具,為開發者提供了一套精細化、自動化的解決方案,讓3D模型優化既高效又精準。本文將深入解析這…

LeetCode Hot 100,快速學習,不斷更

工作做多了有時候需要回歸本心&#xff0c;認真刷題記憶一下算法。那就用我這練習時長兩年半的代碼農民工來嘗試著快速解析LeetCode 100吧 快速解析 哈希 1. 兩數之和 - 力扣&#xff08;LeetCode&#xff09; 這題很簡單啊&#xff0c;思路也很多 1. 暴力搜索&#xff0c;…

MySQL的子查詢:

目錄 子查詢的相關概念&#xff1a; 子查詢的分類&#xff1a; 角度1&#xff1a; 單行子查詢&#xff1a; 單行比較操作符&#xff1a; 子查詢的空值情況&#xff1a; 多行子查詢&#xff1a; 多行比較操作符&#xff1a; ANY和ALL的區別&#xff1a; 子查詢為空值的…

Python批處理深度解析:構建高效大規模數據處理系統

引言&#xff1a;批處理的現代價值在大數據時代&#xff0c;批處理&#xff08;Batch Processing&#xff09; 作為數據處理的核心范式&#xff0c;正經歷著復興。盡管實時流處理備受關注&#xff0c;但批處理在數據倉庫構建、歷史數據分析、報表生成等場景中仍不可替代。Pytho…