前段时间碰到一个需求:将Prometheus的历史告警进行持久化保存,一遍进行分析统计。在尝试了一些工具后,最终选用了alertsnitch+grafana的方案。
alertsnitch: https://gitlab.com/yakshaving.art/alertsnitch
简单介绍一下这个工具的原理,alertsnitch实现了一个webhook,通过在alertmanager中配置receiver为alertsbnitch webhook将告警发送给alertsnitch,alertsnitch对数据进行处理后存入Mysql/Postgre,详细介绍可参考其gitlab主页。
下面简单介绍一下使用方法(k8s安装,数据库使用Mysql)
1、Mysql创建alertsnitch所用数据库及对应账户,略。
2、安装alertsnitch,修改下面ALERTSNITCH_DSN的值
# alertsnitch-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: alertsnitch
namespace: alertmanager
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: alertsnitch
template:
metadata:
labels:
app.kubernetes.io/name: alertsnitch
spec:
containers:
- image: registry.gitlab.com/yakshaving.art/alertsnitch
name: alertsnitch
ports:
- containerPort: 9567
name: http
env:
- name: ALERTSNITCH_BACKEND
value: mysql
- name: ALERTSNITCH_DSN
value: ${MYSQL_USER}:${MYSQL_PASSWORD}(${MYSQL_IP}:${MYSQL_PORT})/{$MYSQL_DATABASE}
readinessProbe:
httpGet:
path: /-/ready
port: 9567
initialDelaySeconds: 30
periodSeconds: 10
livenessProbe:
httpGet:
path: /-/health
port: 9567
initialDelaySeconds: 60
periodSeconds: 10
apiVersion: v1
kind: Service
metadata:
name: alertsnitch
namespace: alertmanager
spec:
ports:
- name: http
port: 9567
targetPort: http
selector:
app.kubernetes.io/name: alertsnitch
3、配置alertmanager
route:
receiver: all
routes:
#所有告警收集
- receiver: all
continue: true
--------------------
receivers:
#alertsnitch
- name: 'all'
webhook_configs:
- url: 'http://alertsnitch.alertmanager.svc:9567/webhook'
send_resolved: true
4、可以使用grafana来进行历史告警的展示和统计,做一个现成的供参考