prometheus告警發送組件部署

一、前言

要實現Prometheus的告警發送需要通過alertmanager組件,當prometheus觸發告警策略時,會將告警信息發送給alertmanager,然后alertmanager根據配置的策略發送到郵件或者釘釘中,發送到釘釘需要安裝額外的prometheus-webhook-dingtalk組件,用于發送告警信息到釘釘中,如果是用郵件的話直接在alertmanager配置即可,不用安裝額外組件

二、部署

這里就主要講解發送告警信息到釘釘中的配置

2.1部署alertmanager

下載altermanager安裝包,我這邊下載的是0.25.0版本

下載路徑:Releases · prometheus/alertmanager · GitHub

?mkdir /opt/alertmanager && cd?/opt/alertmanager

tar -zxvf?alertmanager-0.25.0.linux-amd64.tar.gz

mv?alertmanager-0.25.0.linux-amd64?alertmanager

cd?alertmanager && ls

配置系統管理啟動alertmanager服務

vi /usr/lib/systemd/system/alertmanager.serivce

[Unit]
Description=alertmanager
After=network.target[Service]
ExecStart=/opt/alertmanager/alertmanager/alertmanager --config.file=/opt/alertmanager/alertmanager/alertmanager.yml  #配置啟動服務命令,指定配置文件
User=root[Install]
WantedBy=multi-user.target

2.2部署prometheus-webhook-dingtalk

在部署前先配置好釘釘機器人,啟用加簽功能,復制webhook地址和加簽密鑰

下載prometheus-webhook-dingtalk安裝包,我這邊下載的是2.1.0版本

?下載路徑:Releases · timonwong/prometheus-webhook-dingtalk · GitHub

mkdir /opt/dingtalk && cd?/opt/dingtalk

tar -zxvf?prometheus-webhook-dingtalk-2.1.0.linux-amd64.tar.gz

mv?prometheus-webhook-dingtalk-2.1.0.linux-amd64?dingtalk

cd?dingtalk && ls

復制重命名配置文件

cp??config.example.yml?config.yml

編輯配置文件

vi config.yml

templates:- /opt/dingtalk/dingtalk/template.tmpl     #配置告警信息模板targets:webhook1:url: https://oapi.dingtalk.com/robot/send?access_token=cfe1e0d1cfb457a31b20d6005785f5c7367542d5bd82725eb1b2f6738d0be418   #配置上面記錄的釘釘機器人的webhook# secret for signaturesecret: SEC60b0e5076407b1d1d97c26afa2acb54edf7270b9e23826a65c3f085e48c5dcfd  #配置上面記錄的釘釘機器人加簽的密鑰,下面的內容按照默認配置即可webhook2:url: https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxwebhook_legacy:url: https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxx# Customize template contentmessage:# Use legacy templatetitle: '{{ template "legacy.title" . }}'text: '{{ template "legacy.content" . }}'webhook_mention_all:url: https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxmention:all: truewebhook_mention_users:url: https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxmention:mobiles: ['156xxxx8827', '189xxxx8325']

編輯告警模板

vi??/opt/dingtalk/dingtalk/template.tmpl

{{ define "__subject" }}
[{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ end }}]
{{ end }}{{ define "__alert_list" }}{{ range . }}
---
{{ if .Labels.owner }}@{{ .Labels.owner }}{{ end }}**告警主題**: {{ .Annotations.summary }}**告警類型**: {{ .Labels.alertname }}**告警級別**: {{ .Labels.severity }} **告警主機**: {{ .Labels.instance }} **告警信息**: {{ index .Annotations "description" }}**告警時間**: {{ dateInZone "2006.01.02 15:04:05" (.StartsAt) "Asia/Shanghai" }}
{{ end }}{{ end }}{{ define "__resolved_list" }}{{ range . }}
---
{{ if .Labels.owner }}@{{ .Labels.owner }}{{ end }}**告警主題**: {{ .Annotations.summary }}**告警類型**: {{ .Labels.alertname }} **告警級別**: {{ .Labels.severity }}**告警主機**: {{ .Labels.instance }}**告警信息**: {{ index .Annotations "description" }}**告警時間**: {{ dateInZone "2006.01.02 15:04:05" (.StartsAt) "Asia/Shanghai" }}**恢復時間**: {{ dateInZone "2006.01.02 15:04:05" (.EndsAt) "Asia/Shanghai" }}
{{ end }}{{ end }}{{ define "default.title" }}
{{ template "__subject" . }}
{{ end }}{{ define "default.content" }}
{{ if gt (len .Alerts.Firing) 0 }}
**====偵測到{{ .Alerts.Firing | len  }}個故障====**
{{ template "__alert_list" .Alerts.Firing }}
---
{{ end }}{{ if gt (len .Alerts.Resolved) 0 }}
**====恢復{{ .Alerts.Resolved | len  }}個故障====**
{{ template "__resolved_list" .Alerts.Resolved }}
{{ end }}
{{ end }}{{ define "ding.link.title" }}{{ template "default.title" . }}{{ end }}
{{ define "ding.link.content" }}{{ template "default.content" . }}{{ end }}
{{ template "default.title" . }}
{{ template "default.content" . }}

?配置系統管理啟動prometheus-webhook-dingtalk服務

vi /usr/lib/systemd/system/dingtalk.service

[Unit]
Description=prometheus-webhook-dingtalk
After=network.target[Service]
ExecStart=/opt/dingtalk/dingtalk/prometheus-webhook-dingtalk --config.file=/opt/dingtalk/dingtalk/config.yml
User=root[Install]
WantedBy=multi-user.target

配置開機啟動dingtalk服務

systemctl enable dingtalk &&?systemctl start dingtalk

查看釘釘服務端口

?netstat -tlpn

前面還沒有配置和啟動alertmanager服務,現在來編輯alertmanager配置文件

vi?/opt/alertmanager/alertmanager/alertmanager.yml

route:group_by: ['dingding']   #配置告警分組的標簽group_wait: 30s          #配置項定義分組等待時間,當一組告警被觸發后,在這個時間段內,其他屬于同一組的告警也會被等待。這可以用于在一定時間內收集同一組告警,以便一次性發送通知group_interval: 5m       #配置項定義分組間隔時間,一旦一個告警組的首個告警觸發了通知,等待指定的間隔時間后,即使組內有其他告警,也會重新觸發通知。這可以避免過于頻繁地發送通知repeat_interval: 1h       #配置項定義重復通知的間隔時間,在一組告警已經觸發過一次通知后,過了指定的間隔時間,如果該組內的告警仍然處于觸發狀態,會再次觸發通知。這可以用于周期性地提醒用戶receiver: 'web.hook'   #配置默認的接收者名稱,用于定義接收告警通知的目標routes:- receiver: 'web.hook'  #定義一個路由規則,將告警發送到名為 'web.hook' 的接收者match_re:              #使用正則表達式來匹配告警標簽,該配置是匹配所有告警alertname: ".*"
receivers:- name: 'web.hook'   #定義名為 'web.hook' 的接收者webhook_configs:    #指定接收者的配置- url: 'http://10.1.60.118:8060/dingtalk/webhook1/send'  #指定啟用的釘釘組件服務為接收者,webhook1也是剛剛dingtalk配置文件的指定項send_resolved: true     #表示也會發送已解決的告警通知
inhibit_rules:     #- source_match: 和 - target_match: 定義了一條抑制規則,這條規則表示當源告警的標簽中 severity 是 'critical' 時,會抑制目標告警中 severity 是 'warning' 的告警- source_match:severity: 'critical'target_match:severity: 'warning'equal: ['alertname', 'dev', 'instance']  #指定了需要相等的標簽列表,只有這些標簽相同的告警才會進行抑制

alertmanager服務開機啟動

systemctl enable?alertmanager &&?systemctl start alertmanager

查看altermanager服務

netstat -tlpn

9094是alertmanager集群服務的通信端口,9093是alertmanager的服務端口

?訪問alertmanager服務

http://10.1.60.118:9093

?在Prometheus的配置文件中配置alertmanager服務地址并配置告警規則就可以使用alertmanager服務實現釘釘告警了

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

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

相關文章

模擬實現消息隊列(以 RabbitMQ 為藍本)

目錄 1. 需求分析1.1 介紹一些核心概念核心概念1核心概念2 1.2 消息隊列服務器(Broker Server)要提供的核心 API1.3 交換機類型1.3.1 類型介紹1.3.2 轉發規則: 1.4 持久化1.5 關于網絡通信1.5.1 客戶端與服務器提供的對應方法1.5.2 客戶端額外…

一站式FlinkSpark平臺解決方案——StreamX

隨著Flink&Spark生態的不斷完善,越來越多的企業選擇這兩款組件,或者其中之一作為離線&實時的大數據開發工具,但是在使用他們進行大數據的開發中我們會遇到一些問題,比如: 任務運行監控怎么處理?使…

【LangChain概念】了解語言鏈?:第2部分

一、說明 在LangChain的幫助下創建LLM應用程序可以幫助我們輕松地鏈接所有內容。LangChain 是一個創新的框架,它正在徹底改變我們開發由語言模型驅動的應用程序的方式。通過結合先進的原則,LangChain正在重新定義通過傳統API可以實現的極限。 在上一篇博…

一文讀懂!一年耗能堪比2個三峽電站的大數據中心,背后竟隱藏著這些秘密......

全國大數據中心1年的能耗規模相當于2個三峽電站一整年的發電量,這是為什么? 大數據中心每耗費1度電,只有一半用在了“計算”上面,其他的都應用在散熱、照明等方面到底是怎么回事? 為什么說在算力上每投入1元&#xff0…

【二】數據庫系統

數據庫系統的分層抽象DBMS 數據的三個層次從 數據 到 數據的結構----模式數據庫系統的三級模式(三級視圖)數據庫系統的兩層映像數據庫系統的兩個獨立性數據庫系統的標準結構 數據模型從 模式 到 模式的結構----數據模型三大經典數據模型 數據庫的演變與發…

【系統軟件03】centos7安裝和使用node-v18.16.0(centos7升級glibc 2.28)

【系統軟件03】centos7安裝和使用node-v18.16.0(centos7升級glibc 2.28) 前言:本文是解決node 18.16.0的依賴問題,具體的node安裝流程,可以參考我的另外一篇文章。一、下載node v18.16.0二、下載glibc2.28(…

uniapp使用阿里矢量庫

然后解壓復制全部到你的項目文件 最后只要這幾個 然后引入 最后在你需要的頁面使用

LeetCode 2813. Maximum Elegance of a K-Length Subsequence【反悔貪心】2582

本文屬于「征服LeetCode」系列文章之一,這一系列正式開始于2021/08/12。由于LeetCode上部分題目有鎖,本系列將至少持續到刷完所有無鎖題之日為止;由于LeetCode還在不斷地創建新題,本系列的終止日期可能是永遠。在這一系列刷題文章…

JavaWeb中Json傳參的條件

JavaWeb中我們常用json進行參數傳遞 對應的注釋為RequestBody 但是json傳參是有條件的 最主要是你指定的實體類和對應的json參數能否匹配 1.屬性和對應的json參數名稱對應 2.對應實體類實現了Serializable接口,可以進行序列化和反序列化,這個才是實體類轉…

黑馬項目一階段面試58題 Web14題(二)

八、內連接和外連接查詢有什么區別 內連接 獲取兩表的交集部分 外連接 獲取某表的所有數據,以及兩表的交集數據 九、事務管理的作用,四大特性 作用 保證多個增刪改的操作,要么同時成功,要么同時失敗 四大特性 1.原子性 事…

Ajax同源策略及跨域問題

Ajax同源策略及跨域問題 同源策略ajax跨域問題什么是跨域?為什么不允許跨域?跨域解決方案1、CORS2、express自帶的中間件cors3、JSONP原生JSONPjQuery發送JSONP 4、使用vscode的Live Server插件 同源策略 同源策略(Same-Origin Policy&#…

Kotlin入門:程序的邏輯控制——03

一、程序的邏輯控制 程序的執行語句主要分為3種:順序語句、條件語句和循環語句。 二、if條件語句 if表達式在Kotlin中用于根據條件執行不同的代碼塊。它有兩種形式:普通if和帶返回值的if。 普通if語句: 普通的if語句由關鍵字if、一個布爾表達…

電腦合上蓋子無線網絡不會斷開

控制面板\硬件和聲音\電源選項\系統設置 最終選擇不會采取任何操作 選擇不會采取任何操作

前端性能優化之性能優化的指標和工具(chrome devtools、lighthouse、webpagetest)

文章目錄 引言一、為什么要進行web性能優化二、RAIL測量模型1. 什么是RAIL2. 性能測量工具 三、性能測量工具的使用和性能指標以及優化目標1. Chrome DevTools1. 打開調試工具方式和配置2. network下的幾個性能指標1. requests 請求總數2. transferred實際從服務器下載的數據量…

【數據結構與算法】十大經典排序算法-希爾排序

🌟個人博客:www.hellocode.top 🏰Java知識導航:Java-Navigate 🔥CSDN:HelloCode. 🌞知乎:HelloCode 🌴掘金:HelloCode ?如有問題,歡迎指正&#…

手撕數據結構之棧+例題

目錄 一、棧的概念及結構 二、棧的頭文件及基本框架 三、接口實現 1、對棧的初始化 2、棧的銷毀 3、入棧操作 4、出棧操作 5、判斷棧是否為空 6、返回棧頂元素 7、遍歷棧 四、有效的括號 - 力扣(LeetCode) 題目描述: 思路&#xff…

靜態網頁和動態網頁區別

1,靜態網頁和動態網頁有何區別 1) 更新和維護 靜態網頁內容一經發布到網站服務器上,無論是否有用戶訪問,這些網頁內容都是保存在網站服務器上的。如果要修改網頁的內容,就必須修改其源文件,然后重新上傳到服務器上。…

k8s-----集群調度

目錄 一:調度約束 二:Pod 啟動創建過程 三:k8s調度過程 1、Predicate 有一系列的常見的算法 2、常見優先級選項 3、指定調度節點 (1)nodeName指定 (2)nodeSelector指定 四:親和…

【SA8295P 源碼分析】68 - Android 側用戶層 輸入子系統獲取 /dev/input/event0 節點數據 代碼流程分析

【SA8295P 源碼分析】68 - Android 側用戶層 輸入子系統獲取 /dev/input/event0 節點數據 代碼流程分析 一、EventHub.cpp 監聽 /dev/input/event0 節點流程二、EventHub.cpp 讀取 /dev/input/event0 節點數據流程系列文章匯總見:《【SA8295P 源碼分析】00 - 系列文章鏈接匯總…

C++——繼承

文章目錄 🦜1. 什么是繼承🐊1.1 概念🐊1.2 格式🐊1.3 繼承方式 & 訪問限定符 🐦2. 派生類和基類的賦值問題🦩3. 派生類和基類同名成員問題🐓4.派生類默認成員函數🐉4.1 構造函數…