首页 > 其他分享 >Prometheus Alertmanager还能这样做数据持久化和可视化看板,太提效了吧?

Prometheus Alertmanager还能这样做数据持久化和可视化看板,太提效了吧?

时间:2024-08-03 22:24:07浏览次数:11  
标签:Alertmanager name alertsnitch Prometheus 可视化 sql 提效 告警

引言

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

背景

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

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

部署alertsnitch

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

1. 数据库准备

  • sql文件下载

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

CREATE DATABASE alertsnitch CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  • SQL 文件的导入命令示例(根据实际情况修改)

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

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(没有该命名空间的要先创建,或者修改它将其部署到已有的命名空间)

kubectl apply -f alertsnitch.yaml

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

Alertmanager配置

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

- "name": "event"
  "webhook_configs":
  - "send_resolved": true
    "url": "https://xxxxx/push(原有告警通道)
  - "send_resolved": true
    "url": "http://{alertsnitch_url}/webhook"

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

Grafana可视化看板搭建

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

1. 创建数据源

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

图片

2.导入看板

grafana仪表盘ID:15833

图片

3.微调看板

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

图片

结语

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

参考文档

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

 欢迎订阅我的公众号「SRE运维手记」,可扫下方二维码,或者微信搜“SRE运维手记”

e45dc07b6fd04114a9f5fe6f4772a886.jpeg

标签:Alertmanager,name,alertsnitch,Prometheus,可视化,sql,提效,告警
From: https://blog.csdn.net/weixin_41350845/article/details/140831026

相关文章

  • prometheus 通过 API 接口删除指定数据
    prometheus通过API接口删除指定数据curl-XPOST-g'http://127.0.0.1:9090/api/v1/admin/tsdb/delete_series?start=1660723273&end=1667894433&match[]=node_cpu_seconds_total{mode="idle"}'linux可以使用date +%s获得当前的时间戳,可以使用date -d ......
  • AlertManager简介与使用
    目录一、AlertManager简介AlertManager常用的功能Prometheus和AlertManager的关系二、分组、抑制、静默分组抑制静默三、Alertmanager部署基于k8s部署PVC资源alertmanager-storage.yamlConfigMap(邮件方式)deploy.yaml创建svc.yamlingress.yaml四、Prometheus添加告警配置k8s部......
  • SSH Exporter:基于Prometheus的远程系统性能监控神器
    SSHExporterEnglish|中文介绍SSHExporter是一个基于Prometheus规范的监控工具,通过SSH协议远程收集目标服务器的系统性能数据,如CPU使用率、内存使用情况、磁盘和网络I/O等,并将这些数据暴露为Prometheus格式的metrics,以便被PrometheusServer抓取和存储。功能......
  • Prometheus-alertmanager组件使用
    警报管理Alertmanager工作过程​Alertmanager处理从客户端(通常是Prometheus服务器或其它工具的警报)发来的警报,然后Alertmanager对警报进行去重、分组,然后路由到不同的接收器,如电子邮件、短信或SaaS服务(PagerDuty等)。还可以使用Alertmanager管理维护警报。先在Prometheu......
  • 火山引擎VeDI数据技术分享:两个步骤,为Parquet降本提效
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群作者:王恩策、徐庆火山引擎LAS团队 火山引擎数智平台VeDI是火山引擎推出的新一代企业数据智能平台,基于字节跳动数据平台多年的“数据驱动”实践经验,为企业提供端到端的数智产品、场景......
  • 如何使用aioprometheus和FastAPI向外部服务添加指标?
    我正在尝试在使用aioprometheus构建的应用程序中使用FastAPI向外部服务添加指标。这是我想要实现的目标的简化示例。假设我有一个这样的包装器App类:fromaioprometheusimportRegistry,Counter,HistogramfromfastapiimportFastAPIclassApp:......
  • 如何从自建开源 Prometheus 迁移到阿里云托管 Prometheus 服务
    作者:颍川引言Prometheus[1]已成为可观测指标领域的事实标准。由于各方面因素,当前还有部分用户的部分场景仍使用“自建开源Prometheus+自建开源Thanos+自建Grafana”来实现基础设施和业务应用的指标监控和告警。阿里云可观测监控Prometheus版[2]全面对接开源Promethe......
  • k8s集群部署prometheus
    目录一、Prometheus简介1.1、前言1.2、prometheus架构1.3、prometheus时间序列数据1.3.1、什么是序列数据?1.3.2、时间序列数据特点1.3.3、Promethues适合场景二、部署配置2.1、Prometheus部署2.1.1、创建命名空间2.1.2、创建RBAC规则2.1.3、创建ConfigMap类型的Prometheus配置文件......
  • Prometheus之数据类型和函数
    前言:在了解Prometheus数据类型前,我们先了解下面几个统计学名词概念:平均数(Mean):平均数是所有数据加起来除以数据个数得到的结果。它表示数据的中心趋势。最大值(Maximum):最大值是数据集中最大的数值。它表示数据的上限。最小值(Minimum):最小值是数据集中最小的数值。它表示......
  • prometheus配置
    1.relabel_configs和metric_relabel_configsrelabel_configs:发生在抓取前选择目标和做label配置metric_relabel_configs:发生在抓取后落tsdb库之前,最后修改metrics内容elabel_config发生在抓取之前,metric_relabel_configs发生在抓取之后 2.其他配置-source_labels:[_......