如何部署Alertmanager發(fā)送告警
1、Alertmanager簡(jiǎn)介
Prometheus 對(duì)指標(biāo)的收集、存儲(chǔ)與告警能力分屬于 Prometheus Server 和 AlertManager 兩個(gè)獨(dú)立的組件,前者僅負(fù)責(zé)定義告警規(guī)則生成告警通知, 具體的告警操作則由后者完成。
Alertmanager 負(fù)責(zé)處理由 Prometheus Server 發(fā)來(lái)的告警通知,Alertmanager對(duì)告警通知進(jìn)行分組、去重后,根據(jù)路由規(guī)則將其路由到不同的receiver,如Email、釘釘或企業(yè)微信等。
除了基本的告警通知能力外,Altermanager還支持對(duì)告警進(jìn)行去重、分組、抑制、靜默和路由等功能:
- 分組(Grouping):將相似告警合并為單個(gè)告警通知的機(jī)制,在系統(tǒng)因大面積故障而觸發(fā)告警潮時(shí),分組機(jī)制能避免用戶(hù)被大量的告警噪聲淹沒(méi),進(jìn)而導(dǎo)致關(guān)鍵信息的隱沒(méi)
- 抑制(Inhibition):系統(tǒng)中某個(gè)組件或服務(wù)故障而觸發(fā)告警通知后,那些依賴(lài)于該組件或服務(wù)的其它組件或服務(wù)可能也會(huì)因此而觸發(fā)告警,抑制便是避免類(lèi)似的級(jí)聯(lián)告警的一種特性,從而讓用戶(hù)能將精力集中于真正的故障所在
- 靜默(Silent):是指在一個(gè)特定的時(shí)間窗口內(nèi),即便接收到告警通知,Alertmanager也不會(huì)真正向用戶(hù)發(fā)送告警信息的行為;通常,在系統(tǒng)例行維護(hù)期間,需要激活告警系統(tǒng)的靜默特性
- 路由(route):用于配置Alertmanager如何處理傳入的特定類(lèi)型的告警通知,其基本邏輯是根據(jù)路由匹配規(guī)則的匹配結(jié)果來(lái)確定處理當(dāng)前告警通知的路徑和行為
2、部署使用Alertmanage
cd /opt 上傳alertmanager-0.24.0.linux-amd64.tar.gz tar xf alertmanager-0.24.0.linux-amd64.tar.gz mv alertmanager-0.24.0.linux-amd64 /usr/local/alertmanager cd /usr/local/alertmanager cp alertmanager.yml alertmanager.yml.bak vim alertmanager.yml
配置啟動(dòng)文件 cd /usr/lib/systemd/system [Unit] Description=alertmanager Documentation=https://prometheus.io/ After=network.target [Service] Type=simple ExecStart=/usr/local/alertmanager/alertmanager \ --config.file=/usr/local/alertmanager/alertmanager.yml \ --log.level=debug ExecReload=/bin/kill -HUP $MAINPID Restart=on-failure [Install] WantedBy=multi-user.target systemctl start alertmanager.service systemctl enable alertmanager.service netstat -lntp | grep alert
cd /usr/local/prometheus/ mkdir alert_rules cd alert_rules/ vim node_alert.yaml groups: - name: k8s_instances rules: - alert: instance_down expr: up{job="node_exporter"} == 0 for: 1m labels: severity: "critical" annotations: summary: "instance is down" description: "instance had been down for more than one minute"
cd /usr/local/prometheus/ vim prometheus.yml 13行#- 192.168.9.113:9093 17行#- "alert_rules/*.yaml" systemctl restart prometheus.service
systemctl stop node_exporter.service #暫停服務(wù)驗(yàn)證
郵箱查看是否收到告警郵件
vim node_alert.yaml #設(shè)置cpu使用報(bào)警 - alert: "cpu_usage too high" expr: (1 -avg(rate(node_cpu_seconds_total{mode="idle"}[1m])) by(instance)) * 100 > 80 for: 20s labels: severity: "warning" annotations: summary: "cpu usage is too high" description: "instance: {{ $labels.instance }}, cpu usage is too high! now value is {{ $value }}" cd .. systemctl restart prometheus.service #重啟服務(wù)
rpm -ivh stress-1.0.4-16.el7.x86_64.rpm stress -c 2 #對(duì)cpu進(jìn)行壓測(cè)
瀏覽器查看、郵件查看是否有報(bào)警提示
3、設(shè)置釘釘關(guān)聯(lián)報(bào)報(bào)警
釘釘報(bào)警
創(chuàng)建群聊——群聊設(shè)置——機(jī)器人——添加機(jī)器人——自定義——添加——選擇加簽(復(fù)制密鑰)——完成(保存webhook地址)
上傳prometheus-webhook-dingtalk-2.1.0.linux-amd64.tar.gz tar xf prometheus-webhook-dingtalk-2.1.0.linux-amd64.tar.gz mv prometheus-webhook-dingtalk-2.1.0.linux-amd64 /usr/local/dingtalk cd !$ cp config.example.yml config.yml vim config.yml 取消2、8、9、13、14、15注釋 注釋23-39行 20行替換為保存的webhook地址 22行替換為保存的加簽 ./prometheus-webhook-dingtalk
cd /usr/local/alertmanager/ vim alertmanager.yml 末尾添加 - name: 'dingtalk.webhook1' webhook_configs: - url: 'http://192.168.9.113:8060/dingtalk/webhook1/send' send_resolved: true 13行修改 receiver: 'dingtalk.webhook1' systemctl reload alertmanager.service
即可進(jìn)行測(cè)試,查看釘釘報(bào)警郵件
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
docker實(shí)現(xiàn)將本地文件復(fù)制到docker容器內(nèi)
這篇文章主要介紹了docker實(shí)現(xiàn)將本地文件復(fù)制到docker容器內(nèi)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01Windows Server 2016 安裝 Docker的過(guò)程及遇到問(wèn)題
若要在 Windows Server 上安裝 Docker,可以使用由 Microsoft 發(fā)布的 OneGet 提供程序 PowerShell 模塊,接下來(lái)通過(guò)本文給大家介紹Windows Server 2016 安裝 Docker的過(guò)程及遇到問(wèn)題,一起看看吧2021-09-09docker安裝Jenkins執(zhí)行構(gòu)建jar運(yùn)行方式
這篇文章主要介紹了docker安裝Jenkins執(zhí)行構(gòu)建jar運(yùn)行方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05docker compose入門(mén)helloworld的詳細(xì)過(guò)程
docker-compose是基于docker的,所以我們需要先安裝docker才能使用docker-compose,接下來(lái)通過(guò)本文給大家介紹docker compose入門(mén)helloworld的過(guò)程,一起看看吧2021-09-09gitlab-runner中搭建nvm、nrm以及優(yōu)化maven打包方式
文章描述了如何在GitLab Runner上配置NVM、NRM,并優(yōu)化Maven打包過(guò)程,通過(guò)上述配置和優(yōu)化,作者將Maven打包時(shí)間從三分鐘縮短到不到40秒2024-11-11詳解java項(xiàng)目打包docker鏡像的幾種方式
本文主要介紹了詳解java項(xiàng)目打包docker鏡像的幾種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01Docker安裝mysql教程以及解決mysqld: Can‘t read dir&nbs
本文詳細(xì)介紹了如何通過(guò)Docker來(lái)安裝和配置MySQL數(shù)據(jù)庫(kù),包括拉取MySQL鏡像、啟動(dòng)MySQL容器、配置MySQL、解決常見(jiàn)錯(cuò)誤等步驟,提供了詳盡的命令和參數(shù)說(shuō)明,幫助用戶(hù)順利完成MySQL的安裝和配置,文中還提到了如何處理MySQL容器啟動(dòng)時(shí)遇到的“無(wú)法讀取目錄”2024-10-10