<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Alertmanager 高可用安裝配置

          共 2848字,需瀏覽 6分鐘

           ·

          2021-10-22 13:05

          本章節(jié)主要講解Alertmanager高可用的搭建與配置的詳細(xì)的內(nèi)容。

          為了提升Prometheus的服務(wù)可靠性,我們會(huì)部署兩個(gè)或多個(gè)的Prometheus服務(wù),兩個(gè)Prometheus具有相同的配置(Job配、告警規(guī)則、等),當(dāng)其中一個(gè)Down掉了以后,可以保證Prometheus持續(xù)可用。

          AlertManager自帶警報(bào)分組機(jī)制,即使不同的Prometheus分別發(fā)送相同的警報(bào)給Alertmanager,Alertmanager也會(huì)自動(dòng)把這些警報(bào)合并處理。

          去重分組路由
          DaduplicatesGroupsRoute
          將相同的警報(bào)合并成一個(gè)根據(jù)定義的分組經(jīng)過路由分發(fā)給指定的receiver

          雖然Alertmanager 能夠同時(shí)處理多個(gè)相同的Prometheus的產(chǎn)生的警報(bào),如果部署的Alertmanager是單節(jié)點(diǎn),那就存在明顯的的單點(diǎn)故障風(fēng)險(xiǎn),當(dāng)Alertmanager節(jié)點(diǎn)down機(jī)以后,警報(bào)功能則不可用。

          解決這個(gè)問題的方法就是使用傳統(tǒng)的HA架構(gòu)模式,部署Alertmanager多節(jié)點(diǎn)。但是由于Alertmanager之間關(guān)聯(lián)存在不能滿足HA的需求,因此會(huì)導(dǎo)致警報(bào)通知被Alertmanager重復(fù)發(fā)送多次的問題。

          alertmanager-ha

          Alertmanager為了解決這個(gè)問題,引入了Gossip機(jī)制,為多個(gè)Alertmanager之間提供信息傳遞機(jī)制。確保及時(shí)的在多個(gè)Alertmanager分別接受到相同的警報(bào)信息的情況下,不會(huì)發(fā)送重復(fù)的警報(bào)信息給Receiver.

          Gossip 機(jī)制

          要知道什么是Gossip機(jī)制,必須了解清楚Alertmanager中的每一次警報(bào)通知是如何產(chǎn)生的,下面一圖很詳細(xì)的闡述了警報(bào)個(gè)流程:

          alertmanager-ha
          階段描述
          Silence在這個(gè)階段中Alertmanager會(huì)判斷當(dāng)前通知是否匹配任何靜默規(guī)則;如果沒有則進(jìn)入下一個(gè)階段,否則會(huì)中斷流程不發(fā)送通知。
          WaitAlertmanager 會(huì)根據(jù)當(dāng)前集群中所處在的順序[index],等待 index * 5s 的時(shí)間。
          Dedup當(dāng)?shù)却Y(jié)束完成,進(jìn)入 Dedup 階段,這時(shí)會(huì)判斷當(dāng)前Alertmanager TSDB中警報(bào)是否已經(jīng)發(fā)送,如果發(fā)送則中斷流程,不發(fā)送警報(bào)。
          Send如果上面的未發(fā)送,則進(jìn)入 Send 階段,發(fā)送警報(bào)通知。
          Gossip警報(bào)發(fā)送成功以后,進(jìn)入最后一個(gè)階段 Gossip ,通知其他Alertmanager節(jié)點(diǎn),當(dāng)前警報(bào)已經(jīng)發(fā)送成功。其他Alertmanager節(jié)點(diǎn)會(huì)保存當(dāng)前已經(jīng)發(fā)送過的警報(bào)記錄。

          Gossip倆個(gè)關(guān)鍵:

          • Alertmanager 節(jié)點(diǎn)之間的Silence設(shè)置相同,這樣確保了設(shè)置為靜默的警報(bào)都不會(huì)對(duì)外發(fā)送

          • Alertmanager 節(jié)點(diǎn)之間通過Gossip機(jī)制同步警報(bào)通知狀態(tài),并且在流程中標(biāo)記Wait階段,保證警報(bào)是依次被集群中的Alertmanager節(jié)點(diǎn)讀取并處理。

          搭建本地 Alertmanager 集群

          啟動(dòng)Alertmanager集群之前,需要了解一些集群相關(guān)的參數(shù)

          參數(shù)說明
          --cluster.listen-address="0.0.0.0:9094"集群服務(wù)監(jiān)聽端口
          --cluster.peer初始化關(guān)聯(lián)其他節(jié)點(diǎn)的監(jiān)聽地址
          --cluster.advertise-address廣播地址
          --cluster.gossip-interval集群消息傳播時(shí)間,默認(rèn) 200s
          --cluster.probe-interval各個(gè)節(jié)點(diǎn)的探測時(shí)間間隔
          # 直接復(fù)制之前已經(jīng)安裝過的Alertmanager文件夾
          cp -r alertmanager/ /usr/local/alertmanager01cp -r alertmanager/ /usr/local/alertmanager02cp -r alertmanager/ /usr/local/alertmanager03
          # 復(fù)制完成以后,寫入啟動(dòng)腳本,
          # Alertmanager01cat << EOF> /lib/systemd/system/alertmanager01.service[Unit]Description=alertmanagerDocumentation=https://prometheus.io/After=network.targetStartLimitIntervalSec=0
          [Service]Type=simpleUser=prometheusExecStart=/usr/local/alertmanager01/bin/alertmanager \--config.file=/usr/local/alertmanager01/conf/alertmanager.yml \--storage.path=/usr/local/alertmanager01/data \--web.listen-address=":19093" \--cluster.listen-address=192.168.1.220:19094 \--log.level=debugRestart=alwaysRestartSec=1
          [Install]WantedBy=multi-user.targetEOF
          # Alertmanager02
          cat << EOF> /lib/systemd/system/alertmanager02.service[Unit]Description=alertmanagerDocumentation=https://prometheus.io/After=network.targetStartLimitIntervalSec=0
          [Service]Type=simpleUser=prometheusExecStart=/usr/local/alertmanager02/bin/alertmanager \--config.file=/usr/local/alertmanager02/conf/alertmanager.yml \--storage.path=/usr/local/alertmanager02/data \--web.listen-address=":29093" \--cluster.listen-address=192.168.1.220:29094 \--cluster.peer=192.168.1.220:19094 \--log.level=debugRestart=alwaysRestartSec=1
          [Install]WantedBy=multi-user.targetEOF
          # Alertmanager03
          cat < /lib/systemd/system/alertmanager03.service[Unit]Description=alertmanagerDocumentation=https://prometheus.io/After=network.targetStartLimitIntervalSec=0
          [Service]Type=simpleUser=prometheusExecStart=/usr/local/alertmanager03/bin/alertmanager \--config.file=/usr/local/alertmanager03/conf/alertmanager.yml \--storage.path=/usr/local/alertmanager03/data \--web.listen-address=":39093" \--cluster.listen-address=192.168.1.220:39094 \--cluster.peer=192.168.1.220:19094 \--log.level=debugRestart=alwaysRestartSec=1
          [Install]WantedBy=multi-user.targetEOF
          # 開啟systemd腳本啟動(dòng)systemctl enable alertmanager01 alertmanager02 alertmanager03systemctl start alertmanager01 alertmanager02 alertmanager03

          啟動(dòng)完成后,就可以訪問http://192.168.1.220:19093可以看到以下集群狀態(tài)了,我這里是為了測試,本地啟動(dòng)了多個(gè)端口,如果是實(shí)際生產(chǎn)環(huán)境中,是不同節(jié)點(diǎn)以及不同的IP,這些根據(jù)自己的需求設(shè)計(jì)即可。

          alert-gossip

          Prometheus中的配置:

          alerting:  alert_relabel_configs:    - source_labels: [dc]      regex: (.+)\d+      target_label: dc  alertmanagers:    - static_configs:        #- targets: ['127.0.0.1:9093']        - targets: ['192.168.1.220:19093','192.168.1.220:29093','192.168.1.220:39093']

          配置完成以后,重啟或者reloadPrometheus服務(wù),訪問http://192.168.1.220:19090/config就可以看到具體的配置信息了。

          prom-config

          到此,Alertmanager集群配置就完成了,對(duì)于進(jìn)群中的警報(bào)測試很簡單,直接down掉一個(gè)端口,然后觸發(fā)警報(bào),看看警報(bào)是否可以正常發(fā)送。

          瀏覽 173
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  天天看天天操 | 天堂网在线最新香蕉视频 | 亲子乱婬一级A片 | 超碰成人在播放 | 一色综合网|