前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Prometheus Alertmanager告警数据持久化及可视化看板

Prometheus Alertmanager告警数据持久化及可视化看板

作者头像
SRE运维手记
发布2024-08-30 17:15:51
1120
发布2024-08-30 17:15:51
举报
文章被收录于专栏:SRE运维手记

Prometheus是一款主流的监控工具,对于Alertmanager存在的局限性我们不言而喻,本文主要介绍如何实现Alertmanager告警数据持久化,并在grafana搭建可视化看板。

01、背 景

Prometheus Alertmanager 作为 Prometheus 生态系统中的核心告警管理组件,主要专注于实时告警的接收、去重、分组和路由。然而,由于其设计上并未对告警数据进行持久化存储,这虽然简化了系统的复杂性,但也带来了一些局限性。

此外,Alertmanager 的 Web UI 缺乏综合告警指标展示功能,使得运维人员在面对大量告警时难以直观地区分告警的轻重缓急,进而影响了故障排查和响应效率。为了弥补这些不足,我们需要利用Alertsnitch对告警数据进行持久化存储,并搭建 Grafana 可视化看板,以实现对历史告警数据的查询、分析和多维度展示。

02、部署alertsnitch

如下示例将基于 Kubernetes 部署 Alertsnitch,需经历数据库准备、配置准备及部署到 Kubernetes 这三个步骤。具体操作如下:

1. 数据库准备

  • sql文件下载
代码语言:javascript
复制
wget https://raw.githubusercontent.com/yakshaving-art/alertsnitch/master/db.d/mysql/0.0.1-bootstrap.sql
wget https://raw.githubusercontent.com/yakshaving-art/alertsnitch/master/db.d/mysql/0.1.0-fingerprint.sql
  • 创建数据库,名为alertsnitch,字符集为utf8mb4,我用的是mysql8.0
代码语言:javascript
复制
CREATE DATABASE alertsnitch CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  • SQL 文件的导入命令示例(根据实际情况修改)
代码语言:javascript
复制
mysql -u your_username -p -h localhost -P 3306 alertsnitch < /path/to/0.0.1-bootstrap.sql
mysql -u your_username -p -h localhost -P 3306 alertsnitch < /path/to/0.1.0-fingerprint.sql

在上述命令中:
-u your_username 指定数据库的用户名。
-p 选项会提示你输入密码。
-h localhost 指定数据库服务器的主机名。
-P 3306 指定数据库服务器的端口号。
alertsnitch 是你要导入 SQL 文件的数据库名称。
< /path/to/0.0.1-bootstrap.sql 和 < /path/to/0.1.0-fingerprint.sql 分别指定要导入的 SQL 文件的路径。

2. 配置准备

修改配置中的<用户名><密码><数据库地址>,并将其保存为alertsnitch.yaml

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: alertsnitch
  namespace: monitor
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: '<用户名>:<密码>@(<数据库地址>):3306/alertsnitch'
        resources:
          limits:
            cpu: '2'
            memory: 4Gi
          requests:
            cpu: 100m
            memory: 800Mi
        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: monitor
spec:
  ports:
  - name: http
    port: 9567
    targetPort: http
  type: NodePort
  selector:
    app.kubernetes.io/name: alertsnitch

3.部署到 Kubernetes

执行apply将Alertsnitch部署到Kubernetes中,命名空间为monitor(没有该命名空间的要先创建,或者修改它将其部署到已有的命名空间)

代码语言:javascript
复制
kubectl apply -f alertsnitch.yaml

到此完成了Alertsnitch部署,接下来需要将Alertmanager的告警数据传递给他。

03、Alertmanager配置

修改alertmanager.yaml配置,我的做法是保留已有的告警通道,再增加一条发送给alertsnitch,请将{alertsnitch_url}修改为实际地址,配置示例如下:

代码语言:javascript
复制
- "name": "event"
  "webhook_configs":
  - "send_resolved": true
    "url": "https://xxxxx/push(原有告警通道)
  - "send_resolved": true
    "url": "http://{alertsnitch_url}/webhook"

在配置完成后,我们就可以继续搭建Grafana可视化看板了。

04、Grafana可视化看板搭建

Grafana可视化看板的实现主要有3步:创建数据源、导入看板、微调看板,具体如下:

1. 创建数据源

添加数据源,类型为Mysql,并填写Alertsnitch数据库的信息,其他选项默认即可。

2.导入看板

grafana仪表盘ID:15833

3.微调看板

看板的数据是通过sql查询的,若有需要可以自行修改,我在看板中为了突出告警等级,额外增加了颜色区分,通过看板,我们就能够直观的看到正在告警的事件和历史告警信息了,具体示例如下(往下还有已恢复告警和历史告警的看板,这里就不做演示了,赶紧自己搭起来吧):

05、结 语

我也注意到有一些其他的 Alertmanager 可视化展示工具,但我更倾向于使用统一的监控可视化看板。因此,我们选择在 Grafana 上实现所有的看板。我相信 Alertsnitch 与 Grafana 的结合能够使告警指标更加直观和易于追溯。本次分享就到这里,谢谢大家!

参考文档

https://github.com/yakshaving-art/alertsnitch

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-07-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SRE运维手记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档