目錄
部署規劃
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
如圖:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0gTMx81dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5SMyUDO1QzNzQmN5MDNxkDOyYzX3UjMzADMyIzLcVDMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
下載下傳版本
go1.18.2.linux-amd64.tar.gz
解壓安裝
tar -zxvf go1.18.2.linux-amd64.tar.gz -C /opt/
配置
執行如下指令,打開配置檔案
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
如圖:
版本:
alertsnitch-0.2.tar.gz
編譯
執行指令解壓
tar -zxvf alertsnitch-0.2.tar.gz -C /opt/
如圖:
進入解壓後的目錄/opt/alertsnitch-0.2,執行
go install
編譯安裝alertsnitch,成功後如圖:
生成的二進制檔案:
/opt/go/tagert/bin
如圖:
執行如下指令,将二進制檔案拷貝到bin目錄
cp /opt/go/tagert/bin/alertsnitch /usr/local/bin
如圖:
現在就可以使用alertsnitch指令了,如圖:
不過會報錯,原因是未配置資料庫,後面我們再配置。
注:
如果出現
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位址和端口
資料庫初始化
内容:
#!/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初始化
初始化完成如圖:
隻有model表有一條資料,如圖:
注:
報錯
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:
Prometheus産生告警
打開告警規則,修改規則
/opt/prometheus/alert_rules.yml
重新加載規則配置
curl -X POST http://localhost:9090/-/reload
如圖:
此時Prometheus産生告警。
Alertmanager接收告警
資料庫中已經成功寫入資料:
Grafana可視化告警資料
配置mysql資料源,如圖:
導入Dashboard,如圖: