【監控】Prometheus中的告警機制介紹

prometheus實戰之三:告警規則_驗證prometheus告警規則-CSDN博客

Prometheus是一款開源的系統監控和告警工具,其告警功能是保障系統穩定運行的重要部分。以下將從告警的整體架構、核心概念、規則配置以及具體的通知流程等方面對Prometheus中的告警進行介紹。

告警架構

Prometheus的告警管理分為兩部分。首先,在Prometheus服務端設置告警規則,Prometheus服務器端會基于這些規則對采集到的監控數據進行評估,當滿足告警條件時,就會向Alertmanager發送告警。然后,由Alertmanager負責管理這些告警,包括靜默、抑制、聚合以及通過電子郵件、PagerDuty和HipChat等方法發送通知。

核心概念

  • 分組(Grouping):分組是將類似性質的告警分類為單個通知的機制。在大型中斷期間,例如網絡分區導致許多服務實例無法訪問數據庫,Prometheus中針對每個服務實例的告警規則會被觸發,數百個告警發送到Alertmanager。此時,可將Alertmanager配置為按群集和alertname對警報進行分組,這樣用戶就能收到單個緊湊通知,同時確切了解哪些服務實例受到影響。通知的接收器通過配置文件中的路由樹來配置告警分組,并定時進行分組通知。
  • 抑制(Inhibition):如果某些特定的告警已經觸發,那么可以配置Alertmanager抑制其他相關告警。例如,當某個告警觸發表示無法訪問整個集群時,可讓Alertmanager在該特定告警觸發時,將與該集群有關的所有其他告警靜音,防止收到數百或數千個與實際問題無關的告警通知。
  • 靜默(Silences):靜默是在給定時間內簡單地靜音告警的方法。基于匹配器配置靜默,就像路由樹一樣。檢查告警是否匹配或者正則表達式匹配靜默,如果匹配,則不會發送該告警的通知。可以在Alertmanager的Web界面中配置靜默。
global:resolve_timeout: 5m  # 告警解決后等待5分鐘標記為已解決route:receiver: 'default-receiver'group_by: ['alertname']group_wait: 30sgroup_interval: 5mrepeat_interval: 12hreceivers:
- name: 'default-receiver'email_configs:- to: 'ops@example.com'inhibit_rules:
- source_match:alertname: 'ClusterCritical'target_match:cluster: '{{ .labels.cluster }}'equal: ['cluster']# 預定義靜默(可選,通常通過Web界面動態管理)
silences:
- matchers:- name: 'env'value: 'staging'startsAt: '2023-10-05T09:00:00Z'endsAt: '2023-10-05T18:00:00Z'comment: 'Staging environment maintenance'
關鍵說明
  1. 分組(Grouping):通過 group_by 標簽組合告警,減少通知數量;group_waitgroup_interval 控制合并策略。
  2. 抑制(Inhibition):通過父子告警關系屏蔽次要信息,需確保 source_matchtarget_match 的標簽關聯。
  3. 靜默(Silences):臨時屏蔽告警,支持動態配置(Web 界面)和靜態配置(文件),適合計劃內維護或臨時故障屏蔽。

告警規則配置

一條告警規則主要由以下幾部分組成:

  • alert:告警規則的名稱,用于唯一標識該告警規則。
  • expr:用于進行報警規則的PromQL查詢語句,通過該語句定義告警觸發的條件。例如,設定CPU利用率、內存使用量等性能指標的閾值,當指標在某個時間段內多次觸發該閾值時,視為滿足告警條件。
  • for:評估等待時間(Pending Duration),表示只有當觸發條件持續一段時間后才發送告警,在等待期間新產生的告警狀態為pending。
  • labels:自定義標簽,允許用戶指定額外的標簽列表,把它們附加在告警上,用于對告警進行分類和標識。
  • annotations:指定了另一組標簽,它們不被當做告警實例的身份標識,通常用于存儲一些額外的信息,如告警的描述、解決方法等,用于報警信息的展示。

告警通知流程

Prometheus以scrape_interval(默認為1m)的規則周期從監控目標上收集信息,并將監控信息持久存儲在其本地存儲上。然后以evaluation_interval(默認為1m)的規則周期對告警規則做定期計算。當表達式為真時,告警狀態切換到pending,若在下個計算周期表達式仍為真,且符合for持續時間,告警狀態變更為active,并將告警從Prometheus發送給Alertmanager。Alertmanager接收告警后,根據配置的路由規則、抑制規則和靜默規則等對告警進行處理,最終將告警通過配置好的通知方式發送給相關人員。

例子

以下是一些Prometheus告警規則的例子:

  • 實例宕機告警
- alert: InstanceDownexpr: up == 0for: 1mlabels:serverity: pageannotations:summary: "Instance {{ $labels.instance }} down"description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 1 minute."
- **規則內容**:
- **解釋**:用于檢測job的狀態,當持續1分鐘獲取不到指標數據(即 `up == 0`)時,觸發告警,將告警發送給Alertmanager。
  • CPU使用率過高告警
- name: docker_alertsrules:- alert: HighCPUUsageexpr: sum(rate(container_cpu_usage_seconds_total{image!=""}[1m])) / sum(machine_cpu_cores) > 0.9labels:severity: criticalannotations:description: "The container {{ $labels.container_name }} is using more than 90% of CPU for over 1 minute."
- **規則內容**:
- **解釋**:通過計算容器的CPU使用率,當容器的CPU使用率超過90%并持續1分鐘時,觸發 `HighCPUUsage` 告警。
  • 內存使用率過高告警
- alert: MemoryUsageHighexpr: ((node_memory_MemTotal_bytes - (node_memory_MemFree_bytes + node_memory_Buffers_bytes + node_memory_Cached_bytes)) / node_memory_MemTotal_bytes) * 100 > 80labels:severity: warningannotations:summary: "Memory usage is high"description: "Memory usage on {{ $labels.instance }} is above 80%."
- **規則內容**:
- **解釋**:計算主機的內存使用率,當內存使用率超過80%時觸發告警。
  • 接口請求異常告警
- alert: InterfaceRequestExceptionexpr: http_server_requests_seconds_count{exception!="", job="<app_name>", method="<method>", uri="<uri>"} > 0for: 5mlabels:severity: errorannotations:summary: "Interface request exception"description: "There is an exception in the interface request of job {{ $labels.job }}, method {{ $labels.method }}, uri {{ $labels.uri }}."
- **規則內容**:
- **解釋**:當指定應用(`<app_name>`)、指定方法(`<method>`)和指定接口地址(`<uri>`)的請求出現異常,且異常持續5分鐘時觸發告警。

總結

Prometheus中的告警機制通過靈活的規則配置和強大的Alertmanager組件,能夠幫助用戶及時發現系統中的問題,并有效地管理和處理告警信息,從而保障系統的穩定運行。

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

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

相關文章

53、用例(Use Case)詳解

1. 定義與核心概念 用例&#xff08;Use Case&#xff09; 是軟件工程中用于描述系統功能需求的核心工具&#xff0c;它通過結構化的方式定義系統與外部參與者&#xff08;用戶、其他系統&#xff09;之間的交互行為&#xff0c;以實現具體的業務目標。用例強調從用戶視角出發…

對比Redis與向量數據庫(如Milvus)在AI中的應用

對比Redis與向量數據庫&#xff08;如Milvus&#xff09;在AI中的應用 在AI架構中&#xff0c;緩存系統的設計直接影響響應速度、資源成本以及推理路徑是否高效。而面對不同的AI業務訴求&#xff0c;選用什么類型的緩存系統、如何搭配&#xff0c;往往是系統架構設計中必須深入…

Oracle 的 MOVE 操作是否重建表?

Oracle 的 MOVE 操作是否重建表&#xff1f; Oracle 的 ALTER TABLE ... MOVE 操作實質上是重建表的物理存儲結構&#xff0c;但保留表的邏輯定義不變。 MOVE 操作的本質 物理重建&#xff1a; 創建新的數據段&#xff08;物理存儲結構&#xff09;將原表數據按順序重新插入到…

數據庫中表的設計規范

表的結構 列&#xff1a;由多個字段構成&#xff0c;每個字段存儲單一數據項&#xff0c;列的先后順序對表沒有影響 行&#xff1a;記錄&#xff0c;一個表中不能存在完全相同的兩行&#xff0c;行的順序對表沒有影響 主鍵&#xff1a;primary key 表中的一列或多列組合起來…

[學習]C語言指針函數與函數指針詳解(代碼示例)

C語言指針函數與函數指針詳解 文章目錄 C語言指針函數與函數指針詳解一、引言二、指針函數&#xff08;函數返回指針&#xff09;定義與語法典型應用場景注意事項 三、函數指針&#xff08;指向函數的指針&#xff09;定義與聲明初始化與調用賦值方式調用語法 高級應用回調函數…

Python 實現桶排序詳解

1. 核心原理 桶排序是一種非比較型排序算法&#xff0c;通過將數據分配到多個“桶”中&#xff0c;每個桶單獨排序后再合并。其核心步驟包括&#xff1a; 分桶&#xff1a;根據元素的范圍或分布&#xff0c;將數據分配到有限數量的桶中。桶內排序&#xff1a;對每個非空桶內的…

brep2seq 論文筆記

Brep2Seq: a dataset and hierarchical deep learning network for reconstruction and generation of computer-aided design models | Journal of Computational Design and Engineering | Oxford Academic 這段文本描述了一個多頭自注意力機制&#xff08;MultiHead Attenti…

在 LangGraph 中集成 Mem0 記憶系統教程

簡介 LangGraph 是一個強大的對話流程編排框架&#xff0c;而 Mem0 則是一個高效的記憶系統。本教程將介紹如何將兩者結合&#xff0c;創建一個具有記憶能力的客服助手系統。 環境準備 首先安裝必要的依賴&#xff1a; pip install langgraph mem0 langchain openai基礎配置…

ceph 報錯 full ratio(s) out of order

full ratio(s) out of order你遇到的錯誤信息: full ratio(s) out of order說明你設置的 OSD 空間使用閾值之間的數值順序不正確,即: nearfull_ratio ≤ backfillfull_ratio ≤ full_ratio ≤ osd_failsafe_full_ratio如果它們的關系不滿足這個順序,Ceph 就會報這個錯誤。…

NB-IoT NPUSCH(三)-資源映射

資源映射單獨做一章節&#xff0c;是因為NPUSCH的資源映射比較復雜。與LTE不同&#xff0c;為了提高數據傳輸的質量&#xff0c;NB-IoT的數據會有重復傳輸。NPUSCH一開始生成的TBS只與子載波個數、RU個數有關&#xff0c;與重復次數沒有關系。初始產生的數據為 個時隙&#xff…

華為OD機試真題——荒島求生(2025B卷:200分)Java/python/JavaScript/C/C++/GO最佳實現

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

centos7安裝MySQL(保姆級教學)

在 Linux 系統的軟件管理中&#xff0c;YUM&#xff08;Yellowdog Updater, Modified&#xff09;包管理器是不可或缺的工具&#xff0c;而 YUM 源的選擇與配置直接影響著軟件安裝與更新的效率。本文將深入解析網絡 YUM 源的分類&#xff0c;詳細介紹如何使用知名平臺提供的 YU…

DeepSeek 賦能教育游戲化:AI 重構學習體驗的技術密碼

目錄 一、引言&#xff1a;教育游戲化與 DeepSeek 的相遇二、DeepSeek 技術剖析2.1 核心架構2.2 關鍵技術 三、教育游戲化設計的奧秘3.1 概念與意義3.2 常見方法與元素3.3 成功案例借鑒 四、DeepSeek 在教育游戲化設計中的多面應用4.1 個性化學習路徑打造4.2 智能教學輔助工具4…

WPF命令與MVVM模式:打造優雅的應用程序架構

?? 打造優雅的應用程序架構 1. ?? 命令系統基礎1.1 ?? 為什么需要命令?1.2 ??? ICommand接口1.3 ??? 實現基本命令2. ??? MVVM模式詳解2.1 ?? MVVM三大組件2.2 ??? 創建ViewModel基類2.3 ?? 典型ViewModel示例3. ?? 命令綁定實戰3.1 ?? View中的命令…

真實案例拆解:智能AI客服系統中的兩類緩存協同

真實案例拆解:智能客服系統中的兩類緩存協同 在AI客服系統中,“響應速度”與“語義準確性”是一對天然的矛盾體。為了實現秒級應答與智能理解的雙重目標,系統需要在技術架構中融合精確命中的緩存系統(如Redis)與模糊語義識別的向量數據庫(如Milvus)。這兩種能力的結合,…

FastAPI與MongoDB分片集群:異步數據路由與聚合優化

title: FastAPI與MongoDB分片集群:異步數據路由與聚合優化 date: 2025/05/26 16:04:31 updated: 2025/05/26 16:04:31 author: cmdragon excerpt: FastAPI與MongoDB分片集群集成實戰探討了分片集群的核心概念、Motor驅動配置技巧、分片數據路由策略、聚合管道高級應用、分片…

一起學數據結構和算法(三)| 字符串(線性結構)

字符串&#xff08;String&#xff09; 字符串是由字符組成的有限序列&#xff0c;在計算機中通常以字符數組形式存儲&#xff0c;支持拼接、查找、替換等操作。 簡介 字符串是計算機科學中最常用的數據類型之一&#xff0c;由一系列字符組成的有限序列。在大多數編程語言中&…

2025電工杯數學建模競賽A題 光伏電站發電功率日前預測問題 保姆級教程講解|模型講解

完整內容請看文章最下面的推廣群 2025電工杯數學建模競賽 A題保姆級分析完整思路代碼數據教學 2025電工杯 A題保姆級教程思路分析 DS數模-全國大學生電工數學建模&#xff08;電工杯&#xff09; A題保姆級教程思路分析 A題&#xff1a;光伏電站發電功率日前預測問題 下面我…

React Native 拼音及拼音首字母搜索組件開發

寫在前面 “用戶說找不到聯系人&#xff1f;拼音搜索功能必須安排上&#xff01;” —— 當產品經理第N次提出這個需求時&#xff0c;我意識到需要開發一個強大的拼音搜索組件。本文將詳細介紹如何開發一個支持拼音匹配、首字母搜索的React Native搜索組件&#xff0c;讓你的應…

springboot--實戰--大事件--用戶接口開發

開發模式&環境搭建 開發模式&#xff1a; 前后端分離開發 前端程序員寫前端頁面&#xff0c;后端程序員寫后端的接口&#xff0c;前端工程發送請求來訪問后臺&#xff0c;后臺處理完請求后要給前端相應對應的數據。 還需要一套標準來約束即接口文檔&#xff0c;在接口文…