天天看點

Alertmanager告警資料持久化到MySQL詳細配置Prometheus+Alertmanager詳細配置郵箱告警

目錄

​​部署規劃​​

​​Go安裝​​

​​下載下傳​​

​​解壓安裝​​

​​ 配置​​

​​alertsnitch安裝​​

​​下載下傳源碼​​

​​編譯​​

​​配置​​

​​環境變量配置​​

​​資料庫初始化​​

​​AlertManager配置​​

​​驗證​​

​​啟動alertsnitch​​

​​Prometheus産生告警​​

​​Alertmanager接收告警​​

​​Grafana可視化告警資料​​

請優先閱讀:

​​Prometheus+Alertmanager詳細配置郵箱告警​​

參考文獻: 

​​Integrations | Prometheus​​

部署規劃

主機 bigdata111 bigdata112 Windows
IP 192.168.128.111 192.168.128.112 192.168.128.1
服務 Prometheus

Alertmanager、

alertsnitch、

Go

mysql
安裝目錄 /opt/prometheus

/opt/alertmanager

/opt/go

配置檔案

/opt/prometheus/alert_rules.yml、

/opt/prometheus/prometheus.yml

/opt/alertmanager/alertmanager.yml

Go安裝

        需要安裝Go環境編譯alertsnitch。

下載下傳

下載下傳位址:

​​Downloads - The Go Programming Language​​

如圖:

Alertmanager告警資料持久化到MySQL詳細配置Prometheus+Alertmanager詳細配置郵箱告警

下載下傳版本

go1.18.2.linux-amd64.tar.gz

解壓安裝

tar -zxvf go1.18.2.linux-amd64.tar.gz -C /opt/

Alertmanager告警資料持久化到MySQL詳細配置Prometheus+Alertmanager詳細配置郵箱告警
Alertmanager告警資料持久化到MySQL詳細配置Prometheus+Alertmanager詳細配置郵箱告警

 配置

        執行如下指令,打開配置檔案

vi /etc/profile

末尾添加如下配置

# go
export GO_HOME=/opt/go
export PATH=$PATH:$GO_HOME/bin 
export GOPATH=$GO_HOME/tagert      

GOPATH儲存源碼編譯後的目标檔案。

執行如下指令配置生效:

source /etc/profile

alertsnitch安裝

下載下傳源碼

下載下傳位址:

​​Yakshaving Art / alertsnitch · GitLab​​

如圖:

Alertmanager告警資料持久化到MySQL詳細配置Prometheus+Alertmanager詳細配置郵箱告警

 版本:

alertsnitch-0.2.tar.gz

編譯

        執行指令解壓

tar -zxvf alertsnitch-0.2.tar.gz -C /opt/

如圖:

Alertmanager告警資料持久化到MySQL詳細配置Prometheus+Alertmanager詳細配置郵箱告警

進入解壓後的目錄/opt/alertsnitch-0.2,執行

go install

編譯安裝alertsnitch,成功後如圖:

Alertmanager告警資料持久化到MySQL詳細配置Prometheus+Alertmanager詳細配置郵箱告警

生成的二進制檔案:

/opt/go/tagert/bin

如圖: 

Alertmanager告警資料持久化到MySQL詳細配置Prometheus+Alertmanager詳細配置郵箱告警

執行如下指令,将二進制檔案拷貝到bin目錄

cp /opt/go/tagert/bin/alertsnitch /usr/local/bin

如圖:

Alertmanager告警資料持久化到MySQL詳細配置Prometheus+Alertmanager詳細配置郵箱告警

現在就可以使用alertsnitch指令了,如圖:

Alertmanager告警資料持久化到MySQL詳細配置Prometheus+Alertmanager詳細配置郵箱告警

不過會報錯,原因是未配置資料庫,後面我們再配置。

注:

如果出現

go: github.com/go-sql-driver/[email protected]: Get "https://proxy.golang.org/github.com/go-sql-driver/mysql/@v/v1.5.0.mod": dial tcp 172.217.163.49:443: connect: connection refused

無法連接配接依賴情況,執行如下指令

go env -w GOPROXY=https://goproxy.cn,direct

配置

環境變量配置

alertsnitch後端持久化需要配置資料庫,執行如下指令

vi /etc/profile

配置内容如下:

# alertsnitch
export MYSQL_ROOT_PASSWORD=root
export MYSQL_DATABASE=alertsnitch
export ALERTSNITCH_ADDR=bigdata112:9567
export ALERTSNITCH_BACKEND="mysql"
export ALERTSNITCH_DSN="root:root@tcp(192.168.128.1:3306)/alertsnitch"      

 ALERTSNITCH_DSN格式如下:

使用者名:密碼@協定類型(資料庫所在主機位址:資料庫端口)/資料庫名稱

MYSQL_ROOT_PASSWORD:資料庫連接配接密碼

MYSQL_DATABASE:資料庫名稱

ALERTSNITCH_ADDR:alertsnitch監聽IP位址和端口

資料庫初始化

Alertmanager告警資料持久化到MySQL詳細配置Prometheus+Alertmanager詳細配置郵箱告警

内容:

#!/bin/bash

set -EeufCo pipefail
IFS=$'\t\n'

echo "Creating DB"
mysql --user=root --password="${MYSQL_ROOT_PASSWORD}" --host=mysql -e "CREATE DATABASE IF NOT EXISTS ${MYSQL_DATABASE};"

echo "Creating bootstrapped model"
mysql --user=root --password="${MYSQL_ROOT_PASSWORD}" --host=mysql "${MYSQL_DATABASE}" < db.d/mysql/0.0.1-bootstrap.sql

echo "Applying fingerprint model update"
mysql --user=root --password="${MYSQL_ROOT_PASSWORD}" --host=mysql "${MYSQL_DATABASE}" < db.d/mysql/0.1.0-fingerprint.sql      

三步:

(1)建立資料庫

(2)使用腳本0.0.1-bootstrap.sql初始化

(3)使用腳本0.1.0-fingerprint.sql初始化

 初始化完成如圖:

Alertmanager告警資料持久化到MySQL詳細配置Prometheus+Alertmanager詳細配置郵箱告警

隻有model表有一條資料,如圖:

Alertmanager告警資料持久化到MySQL詳細配置Prometheus+Alertmanager詳細配置郵箱告警

注:

報錯

failed to connect to database: failed to fetch model version from the database: Error 1146: Table 'alertsnitch.model' doesn't exist

原因是資料庫未初始化。

AlertManager配置

        執行如下指令,打開配置檔案

/opt/alertmanager/alertmanager.yml

添加如下配置(紅色字型為新增):

# 告警路由配置

route:

  receiver: 'copote'

  group_by: ['alertname']  # 路由分組

  group_wait: 5s          # 組内告警等待時間

  group_interval: 5s       # 初始通知被發送後,新的通知發送等待時間

  repeat_interval: 5s      # 如果通知被發送後,再次被發送等待的時間

  routes:

  - receiver: 'alertsnitch'

    continue: true

#告警接收者配置

receivers:

  - name: 'copote'

    email_configs:

      - to: '[email protected]'

        send_resolved: true

        headers:

          subject: "測試告警"

          from: "alertmanager"

          to: "test"

  - name: 'alertsnitch'

    webhook_configs:

      - url: http://bigdata112:9567/webhook

驗證

啟動alertsnitch

如圖,啟動alertsnitch:

Alertmanager告警資料持久化到MySQL詳細配置Prometheus+Alertmanager詳細配置郵箱告警

Prometheus産生告警

        打開告警規則,修改規則

/opt/prometheus/alert_rules.yml

重新加載規則配置

curl -X POST http://localhost:9090/-/reload

如圖:

Alertmanager告警資料持久化到MySQL詳細配置Prometheus+Alertmanager詳細配置郵箱告警

此時Prometheus産生告警。

Alertmanager接收告警

資料庫中已經成功寫入資料:

Alertmanager告警資料持久化到MySQL詳細配置Prometheus+Alertmanager詳細配置郵箱告警

Grafana可視化告警資料

配置mysql資料源,如圖:

Alertmanager告警資料持久化到MySQL詳細配置Prometheus+Alertmanager詳細配置郵箱告警

 導入Dashboard,如圖:

Alertmanager告警資料持久化到MySQL詳細配置Prometheus+Alertmanager詳細配置郵箱告警

繼續閱讀