接上篇基于Alertmanager 配置釘釘告警

Alertmanager 是一個用于處理和管理 Prometheus 警報的開源工具。它負責接收來自 Prometheus 服務器的警報,進行去重、分組、靜默、抑制等操作,并通過電子郵件、PagerDuty、Slack 等多種渠道發送通知。

主要功能

  1. 去重:合并相同或相似的警報,避免重復通知。

  2. 分組:將相關警報合并為一個通知,減少信息過載。

  3. 靜默:臨時屏蔽特定警報,避免干擾。

  4. 抑制:在特定條件下阻止某些警報的發送。

  5. 路由:根據標簽將警報分發到不同的接收者或渠道。

  6. 通知:支持通過多種方式發送警報通知。

核心概念

  • Alert:由 Prometheus 生成的警報,包含標簽、注解和狀態。

  • Receiver:警報的接收者,如電子郵件或 Slack 頻道。

  • Route:定義警報如何路由到接收者。

  • Silence:臨時屏蔽特定警報的機制。

下載安裝包:
地址:https://prometheus.io/download/#alertmanager

將安裝包alertmanager-0.24.0.linux-amd64.tar.gz上傳服務器

tar zxf alertmanager-0.24.0.linux-amd64.tar.gz -C /usr/local/
mv /usr/local/alertmanager-0.24.0.linux-amd64/ /usr/local/alertmanager

接下來再安裝一個插件prometheus-webhook-dingtalk?

由于 Alertmanager 沒有內置釘釘的支持,因此需要通過?Webhook?的方式將告警信息發送到釘釘。prometheus-webhook-dingtalk?就是這樣一個工具,它充當了 Alertmanager 和釘釘之間的橋梁:

  1. Alertmanager?將告警信息通過 Webhook 發送到?prometheus-webhook-dingtalk

  2. prometheus-webhook-dingtalk?將告警信息格式化為釘釘支持的格式(如 Markdown),并通過釘釘的 Webhook API 推送到指定的群聊。

下載安裝包:
地址:https://github.com/timonwong/prometheus-webhook-dingtalk/releases/

上傳到服務器進行解壓安裝

tar zxvf prometheus-webhook-dingtalk-2.1.0.linux-amd64.tar.gz -C /usr/local/
mv /usr/local/prometheus-webhook-dingtalk-2.1.0.linux-amd64/ /usr/local/prometheus-webhook-dingtalk

創建釘釘機器人:

【電腦端釘釘 】-【群聊】-【群設置】-【智能群助手】-【添加更多】-【添加機器人】-【自定義】-【添加】,編輯機器人名稱和選擇添加的群組,勾選加簽,將生成的秘鑰復制出來。

修改prometheus-webhook-dingtalk配置,將以上信息填到文件中:

新建/usr/local/prometheus-webhook-dingtalk/config.yml,添加以下配置

targets:ding_webhook:# 釘釘webhook地址,根據自己的來填url: https://oapXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX# 創建機器人時獲取到的加簽秘鑰,根據自己的來填secret: SECXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

啟動prometheus-webhook-dingtalk服務

nohup /usr/local/prometheus-webhook-dingtalk/prometheus-webhook-dingtalk --config.file=/usr/local/prome                                                        theus-webhook-dingtalk/config.yml &

查看插件提供的webhook地址:這個記好待會有用

編輯alertmanager.yml配置文件,添加路由和接受者配置,注意url填寫釘釘插件提供的webhook地址,就是上圖圈起來那個,根據自己的情況來,而不是釘釘直接提供的那個webhook。

vim /usr/local/alertmanager/alertmanager.yml
route:#接收人receiver: 'webhook'#同組內告警等待時間。也就是告警產生后等待5s,如果有同組告警一起發出group_wait: 5s#兩個組告警的間隔時間group_interval: 10s#重復告警的間隔時間,減少相同釘釘告警的發送頻率repeat_interval: 30s#采用哪個標簽來作為分組依據group_by: [alertname]routes:- receiver: webhook#配置告警消息接受者信息,常用的有 郵箱、wechat、webhook 等消息通知方式
receivers:
- name: 'webhook'webhook_configs:#釘釘插件提供的webhook地址- url: http://localhost:8060/dingtalk/ding_webhook/send#警報被解決之后是否通知send_resolved: true

接下來編輯prometheus配置文件:

增加和修改prometheus.yml的alertmanager部分,讓alertmanger能與Prometheus通信。

# my global config
global:scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.# scrape_timeout is set to the global default (10s).# Alertmanager configuration
alerting:alertmanagers:- static_configs:- targets:##修改成alertmanager服務器的ip和端口- 192.168.158.183:9093# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
# 指定告警規則的配置路徑
rule_files:- "/usr/local/prometheus/rules/*.yml"# - "first_rules.yml"# - "second_rules.yml"# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.- job_name: "prometheus"# metrics_path defaults to '/metrics'# scheme defaults to 'http'.static_configs:- targets: ["192.168.158.183:9090"]- job_name: 'linux'file_sd_configs:- files:- /usr/local/prometheus/node_exporter_targets.json#接收alertmanager的數據- job_name: 'alertmanager'static_configs:- targets: ['192.168.158.183:9093']

在/usr/local/prometheus/路徑建立rules文件夾

在rules文件夾中創建node_rules.yml用來配置主機節點的告警

[root@prometheus prometheus]# cat  rules/node_rules.yml
groups:- name: node_alertsrules:# 規則 1: CPU 使用率過高- alert: HighCPUUsageexpr: 100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80for: 5mlabels:severity: criticalannotations:summary: "High CPU usage on {{ $labels.instance }}"description: "CPU usage is above 80% for more than 5 minutes on {{ $labels.instance }}."# 規則 2: 內存使用率過高- alert: HighMemoryUsageexpr: (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100 > 80for: 5mlabels:severity: criticalannotations:summary: "High memory usage on {{ $labels.instance }}"description: "Memory usage is above 80% for more than 5 minutes on {{ $labels.instance }}."# 規則 3: 磁盤使用率過高- alert: HighDiskUsageexpr: 100 - (node_filesystem_avail_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"} * 100) > 80for: 5mlabels:severity: warningannotations:summary: "High disk usage on {{ $labels.instance }}"description: "Disk usage is above 80% for more than 5 minutes on {{ $labels.instance }}."# 規則 4: 節點宕機- alert: InstanceDownexpr: up == 0for: 1mlabels:severity: criticalannotations:summary: "Instance {{ $labels.instance }} down"description: "{{ $labels.instance }} has been down for more than 1 minute."

在/usr/local/prometheus/node_exporter_targets.json文件中添加測試節點

重啟prometheus

ps -ef |grep prometheus |grep -v grep |awk '{print $2}' |xargs kill -9
nohup /usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml &

啟動Alertmanager

nohup /usr/local/alertmanager/alertmanager --config.file /usr/local/alertmanager/alertmanager.yml &

啟動釘釘插件prometheus-webhook-dingtalk

nohup /usr/local/prometheus-webhook-dingtalk/prometheus-webhook-dingtalk --config.file=/usr/local/prometheus-webhook-dingtalk/config.yml &

查看grafana、alertmanager、prometheus端口都已經啟動

接下來關閉剛才添加的測試機器

等了一會查看釘釘出現了告警

接下來優化告警消息:

1、使用中文發送告警信息

修改prometheus-webhook-dingtalk/config.yml文件添加以下字段

targets:ding_webhook:url: https://oapXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXsecret: SEC6c2bf6d8XXXXXXXXXXXXXXXXXXXXXXXmessage:title: 'Prometheus - {{ if eq .Status "resolved" }}恢復通知{{ else }}告警通知{{ end }}'text: |- **告警名稱**: {{ .CommonLabels.alertname }}- **當前狀態**: {{ .Status }}{{ if eq .Status "resolved" }}- **描述**: 實例 {{ .CommonLabels.instance }} 已恢復正常。- **可能影響的服務**: 沒有影響的服務{{ else }}- **描述**: {{ .CommonAnnotations.description }}- **可能影響的服務**: {{ .CommonAnnotations.impact }}{{ end }}

2、告知故障的影響范圍

修改/usr/local/prometheus/rules/node_rules.yml配置文件,添加以下信息

.............# 規則 4: 節點宕機- alert: InstanceDownexpr: up == 0for: 1mlabels:severity: criticalannotations:summary: "實例 {{ $labels.instance }} 已宕機"description: "實例 {{ $labels.instance }} 已宕機。"impact: |{{- if eq $labels.instance "192.168.158.182:9900" }}K8S中pod調度,導致服務無法正常使用。{{- else if eq $labels.instance "192.168.158.183:9900" }}無法訪問監控系統。{{- else }}可能影響的服務:未知。{{- end }}

重啟/prometheus-webhook-dingtalk服務:

ps -ef |grep prometheus-we |grep -v grep |awk -F " " '{print $2}' |xargs kill -9#為了區分nohup的啟動日志,建議進入各自的目錄執行
cd /usr/local/prometheus-webhook-dingtalk/
nohup /usr/local/prometheus-webhook-dingtalk/prometheus-webhook-dingtalk --config.file=/usr/local/prometheus-webhook-dingtalk/config.yml &

重啟prometheus服務:

ps -ef |grep prometheus |grep -v grep |awk '{print $2}' |xargs kill -9cd /usr/local/prometheusnohup /usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml &

查看端口都已經啟動

查看釘釘最新消息已經修改為中文提示和告知影響范圍

啟動故障機器再次查看消息

后續繼續更新監控其他服務

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

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

相關文章

網絡原理(三)—— 傳輸層 之 UDP 和 TCP協議

傳輸層 在傳輸層兩大關鍵的協議就是UDP和TCP協議了&#xff0c;除此之外&#xff0c;還有別的傳輸層協議&#xff0c;本文章將介紹UDP和TCP協議&#xff0c;重點介紹TCP協議。 首先回顧TCP和UDP 的特點&#xff1a; UDP&#xff1a;不可靠傳輸&#xff0c;面向數據包&#xf…

針對服務器磁盤爆滿,MySql數據庫始終無法啟動,怎么解決

&#xff08;點擊即可進入聊天助手&#xff09; 很多站長在運營網站的過程當中都會遇到一個問題,就是網站突然無法打開,數據一直無法啟動 無論是強制重啟還是,刪除網站內的所有應用,數據庫一直無法啟動 這個時候,就需要常見的運維手段了,需要對服務器后臺各個資源,進行逐一排查…

高性能現代PHP全棧框架 Spiral

概述 Spiral Framework 誕生于現實世界的軟件開發項目是一個現代 PHP 框架&#xff0c;旨在為更快、更清潔、更卓越的軟件開發提供動力。 特性 高性能 由于其設計以及復雜精密的應用服務器&#xff0c;Spiral Framework框架在不影響代碼質量以及與常用庫的兼容性的情況下&a…

【面試題】Spring/SpringBoot部分[2025/1/6 ~ 2025/1/12]

Spring/SpringBoot部分[2025/1/6 ~ 2025/1/12] 1. 說說 Spring 啟動過程&#xff1f;2. 說說 Springboot 的啟動流程&#xff1f;3. 你了解的 Spring 都用到哪些設計模式&#xff1f;4. Spring 有哪幾種事務傳播行為?5. SpringBoot 是如何實現自動配置的&#xff1f;6. Spring…

【機器學習:十八、更高級的神經網絡概念】

1. 梯度下降法的改進&#xff1a;Adam算法 1.1 Adam算法簡介 Adam&#xff08;Adaptive Moment Estimation&#xff09;是一種優化算法&#xff0c;結合了動量梯度下降和 RMSProp 的優點&#xff0c;在處理稀疏梯度和高維空間優化時表現尤為出色。其核心在于動態調整每個參數…

計算機網絡之---VPN與隧道協議

VPN與隧道協議 VPN&#xff08;虛擬專用網絡&#xff09;和隧道協議是現代網絡安全技術的重要組成部分&#xff0c;它們主要用于在不安全的公共網絡&#xff08;如互聯網&#xff09;上建立一個安全的私密網絡連接。VPN通過加密通信和認證機制&#xff0c;確保數據的隱私性和完…

【STM32-學習筆記-6-】DMA

文章目錄 DMAⅠ、DMA框圖Ⅱ、DMA基本結構Ⅲ、不同外設的DMA請求Ⅳ、DMA函數Ⅴ、DMA_InitTypeDef結構體參數①、DMA_PeripheralBaseAddr②、DMA_PeripheralDataSize③、DMA_PeripheralInc④、DMA_MemoryBaseAddr⑤、DMA_MemoryDataSize⑥、DMA_MemoryInc⑦、DMA_DIR⑧、DMA_Buff…

SQL Server中可以通過擴展事件來自動抓取阻塞

在SQL Server中可以通過擴展事件來自動抓取阻塞&#xff0c;以下是詳細流程&#xff1a; 開啟阻塞跟蹤配置&#xff1a; ? 執行以下SQL語句來啟用相關配置&#xff1a; EXEC sp_configureshow advanced options, 1; RECONFIGURE; EXEC sp_configure blocked process thresh…

DNS解析域名簡記

域名通常是由: 權威域名.頂級域名.根域名組成的。 從左往右&#xff0c;級別依次升高&#xff0c;這和外國人從小范圍到大范圍的說話習慣相關。&#xff08;我們自己是更習慣先說大范圍再說小范圍&#xff0c;如XX省XX市XX區XX路&#xff09; DNS解析域名時&#xff0c;會先查…

【爬蟲】單個網站鏈接爬取文獻數據:標題、摘要、作者等信息

源碼鏈接&#xff1a; https://github.com/Niceeggplant/Single—Site-Crawler.git 一、項目概述 從指定網頁中提取文章關鍵信息的工具。通過輸入文章的 URL&#xff0c;程序將自動抓取網頁內容 二、技術選型與原理 requests 庫&#xff1a;這是 Python 中用于發送 HTTP 請求…

關于掃描模型 拓撲 和 傳遞貼圖工作流筆記

關于MAYA拓撲和傳遞貼圖的操作筆記 一、拓撲低模: 1、拓撲工作區位置: 1、準備出 目標 高模。 (高模的狀態如上 ↑ )。 2、打開頂點吸附,和建模工具區,選擇四邊形繪制. 2、拓撲快捷鍵使…

解決無法遠程管理Windows Server服務器核心安裝

問題 有時&#xff0c;人們會為了節省運算資源&#xff0c;例如運行Hyper-V虛擬機&#xff0c;而選擇Windows Server核心安裝&#xff0c;即無圖形化界面。這時&#xff0c;我們就只能通過Powershell命令對其進行操控&#xff0c;或為了獲得圖形化界面而使用遠程服務器管理工具…

SQL HAVING 子句深入解析

SQL HAVING 子句深入解析 介紹 SQL&#xff08;Structured Query Language&#xff09;是一種用于管理關系數據庫管理系統的標準編程語言。在SQL中&#xff0c;HAVING子句是與GROUP BY子句一起使用的&#xff0c;用于篩選分組后的數據。它根據聚合函數的結果對組進行條件過濾…

【計算機網絡】lab7 TCP協議

&#x1f308; 個人主頁&#xff1a;十二月的貓-CSDN博客 &#x1f525; 系列專欄&#xff1a; &#x1f3c0;計算機網絡_十二月的貓的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻擋不了春天的腳步&#xff0c;十二點的黑夜遮蔽不住黎明的曙光 目錄 1. 實驗目的…

JavaRestClient 客戶端初始化+索引庫操作

1. 介紹 ES官方提供了各種不同語言的客戶端&#xff0c;用來操作ES。這些客戶端的本質就是組裝DSL語句&#xff0c;通過http請求發送給ES。 Elasticsearch目前最新版本是8.0&#xff0c;其java客戶端有很大變化。不過大多數企業使用的還是8以下版本 2. 客戶端初始化 在elastic…

【JVM-2.2】使用JConsole監控和管理Java應用程序:從入門到精通

在Java應用程序的開發和運維過程中&#xff0c;監控和管理應用程序的性能和資源使用情況是非常重要的。JConsole是Java Development Kit&#xff08;JDK&#xff09;自帶的一款圖形化監控工具&#xff0c;它可以幫助開發者實時監控Java應用程序的內存、線程、類加載以及垃圾回收…

基于html5實現音樂錄音播放動畫源碼

源碼介紹 基于html5實現音樂錄音播放動畫源碼是一款類似Shazam的UI&#xff0c;點擊按鈕后&#xff0c;會變成為一個監聽按鈕。旁邊會有音符飛入這個監聽按鈕&#xff0c;最后轉換成一個音樂播放器。 效果預覽 源碼獲取 基于html5實現音樂錄音播放動畫源碼

《自動駕駛與機器人中的SLAM技術》ch1:自動駕駛

目錄 1.1 自動駕駛技術 1.2 自動駕駛中的定位與地圖 1.1 自動駕駛技術 1.2 自動駕駛中的定位與地圖 L2 在技術實現上會更傾向于實時感知&#xff0c;乃至可以使用感知結果直接構建鳥瞰圖&#xff08;bird eye view, BEV&#xff09;&#xff0c;而 L4 則依賴離線地圖。 高精地…

抖音矩陣是什么

抖音矩陣是指在同一品牌或個人IP下&#xff0c;通過創建多個不同定位的抖音賬號&#xff08;如主號、副號、子號等&#xff09;&#xff0c;形成一個有機的整體&#xff0c;以實現多維度、多層次的內容覆蓋和用戶互動。以下是關于抖音矩陣的詳細介紹&#xff1a; 抖音矩陣的類…

【開發日記】Docker修改國內鏡像源

1、問題&#xff1a; docker pull鏡像時提示以下內容&#xff1a; Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)2、解決 ①…