Prometheus告警记录持久化

Prometheus告警记录持久化

(历史告警保存与统计)

Prometheus 将基于告警规则生成的告警存储为时间序列,不会将 Alertmanager 的告警信息持久化存储,那么针对历史告警的检索、统计等需求就无法实现。
因此需要一种持久化机制用于存储历史告警信息,本文主要探究基于 alertmanager 告警的开源持久化
方案。

技术栈:Prometheus+Alertmanager+Snitch+Grafana

一、alertsnitch 安装

1、golang、alertsnitch下载

golang:https://go.dev/dl/,https://golang.google.cn/dl/

image-20230823141159834

alertsnitch 下载:https://gitlab.com/yakshaving.art/alertsnitch,https://github.com/yakshaving-art/alertsnitch

image-20230824093106763

image-20230824093211842

2、go编译安装alertsnitch

步骤一:配置go环境

image-20230823142144891

mkdir -p /data/software/alertsnitch
cd /data/software/alertsnitch

#go 文件拷贝到该文件夹
tar -zxvf go1.21.0.linux-amd64.tar.gz

# 配置 go 环境变量
cat <<eof >>/etc/profile
export GO_HOME=/data/software/alertsnitch/go
export PATH=$PATH:$GO_HOME/bin
export GOPATH=$GO_HOME/tagert
eof

source /etc/profile

image-20230823142237545

步骤二:用go编译安装 alertsnitch
tar -zxf alertsnitch-0.2.tar.gz

go env -w GOPROXY=https://goproxy.cn   #该步骤是切换国内代理,不然github可能很多包无法下载
cd alertsnitch-0.2
go install

#成功与否见下图,成功后,复制该 alertsnitch 命令到环境变量
cp -r $GOPATH/bin/alertsnitch /usr/local/bin

image-20230823143952074

3、配置启动 alertsnitch

mysql数据库初始化
建立数据库、建立账户

第一个 sh里面有脚本,进行初始化。 test.sh 可以测试

在这里面写一下变量 ,还有注意目录 db.d/mysql..... 文件位置
MYSQL_ROOT_PASSWORD、 MYSQL_DATABASE

也可以将变量写入到/etc/profile中
cat >>/etc/profile<<'EOF'
# alertsnitch
export MYSQL_ROOT_PASSWORD=123456
export MYSQL_DATABASE=alertsnitch
export ALERTSNITCH_ADDR=10.0.0.31:9567
export ALERTSNITCH_BACKEND="mysql"
export ALERTSNITCH_DSN="root:root@tcp(10.0.0.32:3306)/alertsnitch"
EOF
------------------------
ALERTSNITCH_DSN:用户名:密码@协议类型(数据库所在主机地址:数据库端口)/数据库名称
MYSQL_ROOT_PASSWORD:数据库连接密码
MYSQL_DATABASE:数据库名称
ALERTSNITCH_ADDR:alertsnitch监听IP地址和端口

1、修改后的mysql初始化脚本
   (修改文件路径)
cat >bootstrap_mysql.sh<<'EOF'
#!/bin/bash

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

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

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

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

echo "Done creating model"
EOF

2、执行此脚本
[root@test /data/software/alertsnitch/alertsnitch-0.2/script.d]# sh bootstrap_mysql.sh 
Creating DB
Creating bootstrapped model
Applying fingerprint model update
Done creating model

3、数据库验证结果
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| alertsnitch        |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

mysql> use alertsnitch;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+-----------------------+
| Tables_in_alertsnitch |
+-----------------------+
| Alert                 |
| AlertAnnotation       |
| AlertGroup            |
| AlertLabel            |
| CommonAnnotation      |
| CommonLabel           |
| GroupLabel            |
| Model                 |
+-----------------------+
8 rows in set (0.00 sec)

image-20230823144231853

image-20230824092121017

image-20230824091324645

image-20230824092720336

4、AlertManager配置

AlertManager配置
执行如下命令,打开配置文件

/opt/alertmanager/alertmanager.yml

添加如下配置:

# 告警路由配置
route:
  group_by: ['alertname']  # 路由分组
  group_wait: 5s          # 组内告警等待时间
  group_interval: 5s       # 初始通知被发送后,新的通知发送等待时间
  repeat_interval: 5s      # 如果通知被发送后,再次被发送等待的时间
  routes:
  - receiver: 'alertsnitch'
    continue: true

#告警接收者配置
receivers:
  - name: 'alertsnitch'
    webhook_configs:
      - url: http://192.168.129.31:9567/webhook

5、配置 alertsnitch 关联 mysql

nohup alertsnitch -database-backend="mysql" -listen.address="10.0.0.31:9567" -dsn="root:123456@tcp(10.0.0.32:3306)/alertsnitch" &

image-20230824094454863

二、grafana接入仪表盘

1、构建mysql数据源

image-20230824131809453

image-20230824131840035

2、导入仪表盘

15833

image-20230824131910404

image-20230824132004504

image-20230824132050286

3、仪表盘展示

img

出现如上图内容后,表示已经目标已经实现了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值