Prometheus Operator創建告警規則并接入釘釘報警

prometheus之釘釘報警

  • 前言
  • 1. 添加prometheus報警規則
    • 1.2 添加自定義報警規則文件
  • 2. 配置釘釘報警
    • 2.2 部署dingding插件
  • 3. 編寫alertmanager配置文件

前言

在kubenetes上安裝了kube-promethues(包含Prometheus Operator),程序正常跑起來了,主要是不知道如何配置規則文件和配置接收消息的對象。

1. 添加prometheus報警規則

kubectl get Prometheus -n 指定的命名空間(即Prometheus Operator安裝的命名空間)

root@master2:~/dingtalk# kubectl get prometheus -n monitoring
NAME   VERSION   DESIRED   READY   RECONCILED   AVAILABLE   AGE
k8s    2.52.0    2         2       True         True        23h

查看詳細內容

root@master2:~/dingtalk# kubectl get prometheus -n monitoring k8s -oyaml 
...ruleNamespaceSelector: {}ruleSelector:matchLabels:prometheus: k8srole: alert-rulesscrapeConfigNamespaceSelector: {}scrapeConfigSelector: {}...

里面有個重要的內容,即matchLables,所有規則文件都需要有"prometheus:k8s"和"role:alert-rules",這樣operator才會發現并自動創建。 非常重要

1.2 添加自定義報警規則文件

vim bm-custom-rules.yaml

內容如下,需要注意label:

apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:labels:Prometheus: k8sRole: alert-rulesname: prometheus-k8s-rules-wzqnamespace: monitoring
spec:groups: - name: 主機狀態-監控告警rules:- alert: 節點內存expr: (1 - (node_memory_MemAvailable_bytes / (node_memory_MemTotal_bytes)))* 100 > 85for: 1mlabels:severity: warningannotations:summary: "內存使用率過高!"description: "節點{{$labels.instance}} 內存使用大于85%(目前使用:{{$value}}%)"- alert: 節點TCP會話expr: node_netstat_Tcp_CurrEstab > 1000for: 1mlabels:severity: warningannotations:summary: "TCP_ESTABLISHED過高!"description: "{{$labels.instance }} TCP_ESTABLISHED大于1000%(目前使用:{{$value}}%)"- alert: 節點磁盤容量expr: max((node_filesystem_size_bytes{fstype=~"ext.?|xfs"}-node_filesystem_free_bytes{fstype=~"ext.?|xfs"}) *100/(node_filesystem_avail_bytes {fstype=~"ext.?|xfs"}+(node_filesystem_size_bytes{fstype=~"ext.?|xfs"}-node_filesystem_free_bytes{fstype=~"ext.?|xfs"})))by(instance) > 80for: 1mlabels:severity: warningannotations:summary: "節點磁盤分區使用率過高!"description: "{{$labels.instance }} 磁盤分區使用大于80%(目前使用:{{$value}}%)"- alert: 節點CPUexpr: (100 - (avg by (instance) (irate(node_cpu_seconds_total{job=~".*",mode="idle"}[5m])) * 100)) > 85for: 1mlabels:severity: warningannotations:summary: "節點CPU使用率過高!"description: "{{$labels.instance }} CPU使用率大于80%(目前使用:{{$value}}%)"- alert: 節點存活expr: up{job='node-exporter'} != 1for: 1mlabels:severity: warningannotations:summary: "該節點已宕機"description: "{{$labels.instance }} 機器以宕機(目前使用:{{$value}}%)"

保存,并使用命令創建:

kubectl create -f bm-custom-rules.yaml

創建成功后,使用命令查詢是否創建成功:

kubectl get PrometheusRule -n monitoring

在這里插入圖片描述
已經創建成功,進入容器查看

kubectl exec -it prometheus-k8s-0 /bin/sh -n 命名空間
cd /etc/prometheus/rules/prometheus-k8s-rulefiles-0/
ls

在這里插入圖片描述
到這里 prometheus 的自定義規則部署完成,接下來準備接入釘釘并完成報警

2. 配置釘釘報警

首先在釘釘群里配置釘釘機器人 獲取到token及secret

alertmanager 的 receive 并不直接支持釘釘的 url,要部署插件容器 prometheus-webhook-dingtalk

并且有個需要注意的地方是,當 receives 為釘釘時 (webhook_configs),它的告警模板不是在 alertmanager 的配置文件中指定的,而是在釘釘插件 prometheus-webhook-dingtalk 中指定的。

編寫 prometheus-webhook-dingtalk 配置文件和模板

vim dingtalk-configmap.yaml,這里記的替換你的釘釘 url token。

apiVersion: v1
kind: ConfigMap
metadata:name: prometheus-webhook-dingtalk-confignamespace: monitoring
data:config.yml: |-templates:- /etc/prometheus-webhook-dingtalk/default.tmpltargets:webhook1:url: https://oapi.dingtalk.com/robot/send?access_token=1f315a3d3b68ae9a5df0f6cde411902c493a10bc3d6ed6bbba8cd8b4bcd1c848secret: SEC4d160d1d987b58a19e9a825b83715b253d0b6d0c255b5abb28c265798c535b7emessage:text: '{{ template "default.tmpl" . }}'default.tmpl: |{{ define "default.tmpl" }}{{- if gt (len .Alerts.Firing) 0 -}}{{- range $index, $alert := .Alerts -}}============ = **<font color='#FF0000'>告警</font>** = =============  **告警名稱:**    {{ $alert.Labels.alertname }}   **告警級別:**    {{ $alert.Labels.severity }} 級   **告警狀態:**    {{ .Status }}   **告警實例:**    {{ $alert.Labels.instance }} {{ $alert.Labels.device }}   **告警概要:**    {{ .Annotations.summary }}   **告警詳情:**    {{ $alert.Annotations.message }}{{ $alert.Annotations.description}}   **故障時間:**    {{ ($alert.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}  ============ = end = =============  {{- end }}{{- end }}{{- if gt (len .Alerts.Resolved) 0 -}}{{- range $index, $alert := .Alerts -}}============ = <font color='#00FF00'>恢復</font> = =============   **告警實例:**    {{ .Labels.instance }}   **告警名稱:**    {{ .Labels.alertname }}  **告警級別:**    {{ $alert.Labels.severity }} 級   **告警狀態:**    {{   .Status }} **告警概要:**    {{ $alert.Annotations.summary }}  **告警詳情:**    {{ $alert.Annotations.message }}{{ $alert.Annotations.description}}  **故障時間:**    {{ ($alert.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}  **恢復時間:**    {{ ($alert.EndsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}  ============ = **end** = ============={{- end }}{{- end }}{{- end }}

然后創建 configmap

kubectl apply -f dingtalk-configmap.yaml

2.2 部署dingding插件

不同版本的插件指定配置文件的參數也不一樣,這里部署的是 v2.1.0

vim dingtalk-webhook-deploy.yaml,這個文件不需要修改

apiVersion: v1
kind: Service
metadata:name: dingtalknamespace: monitoringlabels:app: dingtalk
spec:selector:app: dingtalkports:- name: dingtalkport: 8060protocol: TCPtargetPort: 8060---
apiVersion: apps/v1
kind: Deployment
metadata:name: dingtalknamespace: monitoring
spec:replicas: 2selector:matchLabels:app: dingtalktemplate:metadata:name: dingtalklabels:app: dingtalkspec:containers:- name: dingtalkimage: timonwong/prometheus-webhook-dingtalk:v2.1.0imagePullPolicy: IfNotPresentargs:- --web.listen-address=:8060- --config.file=/etc/prometheus-webhook-dingtalk/config.ymlports:- containerPort: 8060volumeMounts:- name: configmountPath: /etc/prometheus-webhook-dingtalkvolumes:- name: configconfigMap:name: prometheus-webhook-dingtalk-config
kubectl apply -f dingtalk-webhook-deploy.yaml

3. 編寫alertmanager配置文件

此文件需要自己添加一條路由或用默認路由,和相應的接收者。

這里的接收者 webhook,其實是上面部署的釘釘插件 service 的地址

global:resolve_timeout: 1msmtp_smarthost: 'smtp.qq.com:25'smtp_from: '888888@qq.com'smtp_auth_username: '88888888@qq.com'smtp_auth_password: 'xxxxZXXX'smtp_require_tls: falseroute:group_by: ['alertname','job']group_wait: 30sgroup_interval: 10srepeat_interval: 30mreceiver: 'webhook'routes:- match:app: 'dingtalk'receiver: 'webhook'receivers:
- name: 'webhook'webhook_configs:# 和插件不同 namespace 請填寫 http://webhook-dingtalk.monitoring.svc.cluster.local:8060/dingtalk/webhook1/send- url: 'http://dingtalk:8060/dingtalk/webhook1/send'send_resolved: true

先將之前的 secret 對象刪除

kubectl delete secret alertmanager-main -n monitoring
secret "alertmanager-main" deleted
kubectl create secret generic alertmanager-main --from-file=alertmanager.yaml -n monitoring
secret "alertmanager-main" created

刪除alertmanager 的pod
等待一段時間 然后查看alermanager容器的日志有無報錯

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

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

相關文章

IC開發——verdi基本用法

1. 基礎知識 1.1. verdi VCS和Verdi這兩個工具&#xff0c;這兩個工具目前都屬于synopsys公司。VCS主要負責編譯運行Testbench和RTL&#xff0c;并負責生成相應的波形文件。而verdi主要負責加載波形文件&#xff0c;查看信號的波形及其對應的代碼來進行調試驗證。Verdi最開始…

dimp導入提示 [警告]該工具不能解析此文件,請使用更高版本的工具

問題描述&#xff1a;dimp導入報錯 [dmdbalocalhost ~]$ dimp SYSDBA/Topnet_123\192.168.3.27:5241 FILEimp_exp.dmp LOGreport_ty_imp_20240528.log DIRECTORY/opt/dmdba LOG_WRITEY REMAP_SCHEMAreport:report_ty dimp V8[警告]文件"/opt/dmdba/report_ty_imp_2024052…

Linux 查找命令的操作,學完效率瞬間翻倍?

可以很肯定地說&#xff0c;find 命令是 Linux 運維必須熟知的操作之一。 讓我們看一道題&#xff1a; 如果你的 Linux 服務器上有一個名為 .logs 的目錄&#xff0c;如何刪除該目錄下最后一次訪問時間超過一年的日志文件呢&#xff1f; 這種情況很常見&#xff0c;但令人驚訝…

簡述nextTick 的作用是什么?他的實現原理是什么 ?

nextTick 的作用 在 Vue.js 中&#xff0c;nextTick 是一個非常有用的函數&#xff0c;它用于延遲執行一段代碼&#xff0c;直到下一次 DOM 更新循環結束之后。換句話說&#xff0c;當你修改了數據之后&#xff0c;視圖不會立即更新&#xff0c;而是等到下一次“DOM 更新循環”…

【Linux系統】進程間通信

本篇博客整理了進程間通信的方式管道、 system V IPC的原理&#xff0c;結合大量的系統調用接口&#xff0c;和代碼示例&#xff0c;旨在讓讀者透過進程間通信去體會操作系統的設計思想和管理手段。 目錄 一、進程間通信 二、管道 1.匿名管道 1.1-通信原理 1.2-系統調用 …

簡談SUID提權

SUID提權 0x01什么是SUID ? SUID (Set UID)是Linux中的一種特殊權限,其功能為用戶運行某個程序時&#xff0c;如果該程序有SUID權限&#xff0c;那么程序運行為進程時&#xff0c;進程的屬主不是發起者&#xff0c;而是程序文件所屬的屬主。但是SUID權限的設置只針對二進制可…

強化學習4:DQN 算法

看這篇文章之前&#xff0c;建議先了解一下&#xff1a;Q-Learning 算法。 1. 算法介紹 DQN 算法全稱為 Deep Q-Network&#xff0c;即深度Q網絡。它將 Q-Learning 與 Deep Learning 結合在了一起。 1.1 Q-Network Q-Learning 是使用 Q-table 才存儲決策信息的&#xff0c;…

AI推文神器,繪唐ai,文刻創作出品,sdmj二合一虹貓

AI推文神器,繪唐ai,文刻創作出品,sdmj二合一虹貓 https://qvfbz6lhqnd.feishu.cn/wiki/CcaewIWnSiAFgokOwLycwi0Encfhttps://qvfbz6lhqnd.feishu.cn/wiki/CcaewIWnSiAFgokOwLycwi0Encf AI推文神器是一種基于人工智能技術的工具,旨在幫助用戶快速生成優質的推文。它通過分…

iPhone“已刪除”照片被恢復,蘋果到底有沒有后門?

繼微軟本周推出的Windows“回憶”功能引發隱私焦慮&#xff0c;遭馬斯克和安全大咖們猛烈抨擊后&#xff0c;蘋果iPhone手機近日也曝出了類似的“記憶門”。 刪除十幾年的iPhone照片被恢復 近日&#xff0c;有蘋果手機用戶更新了蘋果上周發布的iOS 17.5系統后&#xff0c;意外…

妙解設計模式之策略模式

目錄 策略模式的概念生活中的例子編程中的例子 軟件工程中的實際應用數據排序文件壓縮支付方式圖形繪制 策略模式的概念 策略模式&#xff08;Strategy Pattern&#xff09;是一種行為型設計模式&#xff0c;它定義了一系列算法&#xff0c;把它們一個個封裝起來&#xff0c;并…

Android Graphics模塊中的各種State和重要類普法

Android Graphics模塊中的各種State和重要類普法 引言 尼瑪&#xff0c;這Android Graphics圖形棧蛋疼啊&#xff0c;更新太快了。機會是每年一個版本&#xff0c;前進的膠布不能停啊&#xff0c;繼續干。這邊博客&#xff0c;我們的核心是理一理Android Graphics中各種State狀…

2024最新版本激活Typora,1.8.10.0版本可用

?實測可用日期為&#xff1a;2024-05-28 目前最新版本 1.8.10.0 也是可以實現激活的 注&#xff1a;免修改注冊表、不用修改時間&#xff0c;更不需要破解補丁 01、下載&安裝 Typora 文件 從官網下載最新版本的 Typora&#xff0c;并安裝 或者阿里云盤&#xff1a; htt…

Pytorch深度學習實踐筆記12(b站劉二大人)

&#x1f3ac;個人簡介&#xff1a;一個全棧工程師的升級之路&#xff01; &#x1f4cb;個人專欄&#xff1a;pytorch深度學習 &#x1f380;CSDN主頁 發狂的小花 &#x1f304;人生秘訣&#xff1a;學習的本質就是極致重復! 《PyTorch深度學習實踐》完結合集_嗶哩嗶哩_bilibi…

數據集008:吸煙、抽煙檢測數據集(含數據集下載鏈接)

數據集簡介 兩個數據集 一個是783張圖片對應的xml文件 一個是2482張圖片對應的xml文件 如下圖所示&#xff1a; 部分代碼&#xff1a; # 測試數據讀取 def test_data_loader(datadir, batch_size 10, test_image_size608, modetest):"""加載測試用的圖片…

大學生選擇算法向還是嵌入式向?

在開始前剛好我有一些資料&#xff0c;是我根據網友給的問題精心整理了一份「嵌入式的資料從專業入門到高級教程」&#xff0c; 點個關注在評論區回復“888”之后私信回復“888”&#xff0c;全部無償共享給大家&#xff01;&#xff01;&#xff01; 由于嵌入式的薪資待遇和…

品牌建設不迷路:系統化方法讓品牌成長更高效

很多創始人才創業過程中都會發現&#xff1a; 企業越大&#xff0c;遇到的系統性的底層品牌問題就會越多&#xff0c;品牌的系統化建設底層根基如果不穩&#xff0c;后續的增長也會搖搖欲墜。 所以在當今競爭激烈的市場環境中&#xff0c;品牌的成功不僅僅依靠一個響亮的名字…

Spring Boot注解(Annotation)

在Spring Boot中&#xff0c;注解&#xff08;Annotation&#xff09;是一種元數據形式&#xff0c;它可以在代碼中提供信息&#xff0c;這些信息可以在運行時或編譯時被處理。Spring Boot使用注解來實現依賴注入、事務管理、配置等功能。 以下是Spring Boot中注解的執行機制的…

【Linux】Linux的權限_1

文章目錄 三、權限1. shell外殼2. Linux的用戶3. Linux權限管理文件訪問者的分類文件類型和訪問權限 未完待續 三、權限 1. shell外殼 為什么要使用shell外殼 由于用戶不擅長直接與操作系統直接接觸和操作系統的易用程度、安全性考慮&#xff0c;用戶不能直接訪問操作系統。 什…

文件IO(一)

文件IO&#xff08;一&#xff09; 文件IO文件的分類在文件IO下&#xff0c;文件分類按存儲的內容分按照操作分 標準IO和文件IO的區別系統調用和庫函數的區別 文件IO 把程序暫存在內存的數據&#xff0c;存儲到本地外存上 文件的分類 在Linux系統下&#xff0c;文件共分為7類…

AI答題項目,無門檻答題一小時收益30+

朋友們&#xff0c;今天我想和大家探討一個令人興奮的副業機遇。你是否曾感覺到日常工作的枯燥乏味&#xff0c;而又渴望找到一種輕松的賺錢方式來增加你的收入&#xff1f;今天我將和你分享的這個項目正是你所期待的。 項目的核心是利用AI技術來回答網上付費用戶的問題&…