当前位置: 首页 > news >正文

Docker一键部署prometheus并实现飞书告警详解

Docker一键部署prometheus并飞书告警

  • 一、安装docker
    • 1、上传压缩包
    • 2、解压
    • 3、执行脚本
  • 二、安装部署prometheus
    • 1、上传prometheus-feishu压缩包
    • 2、解压
    • 3、加载镜像
    • 4、修改文件夹名称
    • 5、docker-compose启动容器
    • 6、查看容器
    • 7、浏览器访问
  • 三、飞书告警
    • 1、进入容器修改配置文件
    • 2、重启容器
  • 四、prometheus告警机制的核心部分-解释说明
  • 五、手动测试
    • 1、重启alertmanager容器
    • 2、手动杀死node exporter
    • 3、查看容器
    • 4、网页查看状态

一、安装docker

1、上传压缩包

  • 通过xftp上传docker压缩包至/opt/software下
[root@hadoop105 software]# ll
total 361032
-rw-r--r-- 1 root root  86397507 Sep 19 21:35 docker-20.10.5-install.tar.gz

2、解压

[root@hadoop105 software]# tar -xzvf docker-20.10.5-install.tar.gz -C /opt/module/
docker-20.10.5-install/
docker-20.10.5-install/docker-20.10.5.tgz
docker-20.10.5-install/docker
docker-20.10.5-install/docker-compose-v2.20.3
docker-20.10.5-install/docker.service
docker-20.10.5-install/install.sh
docker-20.10.5-install/daemon.json
docker-20.10.5-install/daemon.json.bak
You have new mail in /var/spool/mail/root

3、执行脚本

  • 进入/opt/module/docker目录下
[root@hadoop105 docker-20.10.5-install]# ll
total 125664
-rw-r--r-- 1 root root      259 May 23 10:11 daemon.json
-rw-r--r-- 1 root root      447 May 23 10:11 daemon.json.bak
-rw-r--r-- 1 root root   117176 Jun 18  2024 docker
-rw-r--r-- 1 root root 69158342 Jun 18  2024 docker-20.10.5.tgz
-rw-r--r-- 1 root root 59383631 Jun 18  2024 docker-compose-v2.20.3
-rw-r--r-- 1 root root      443 Jun 18  2024 docker.service
-rwxr-xr-x 1 root root      719 Apr 29 14:11 install.sh
[root@hadoop105 docker-20.10.5-install]# sh install.sh 
docker/
docker/docker-init
docker/docker
docker/containerd-shim
docker/ctr
docker/docker-proxy
docker/runc
docker/containerd-shim-runc-v2
docker/containerd
docker/dockerd
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
Client: Docker Engine - CommunityVersion:           20.10.5API version:       1.41Go version:        go1.13.15Git commit:        55c4c88Built:             Tue Mar  2 20:14:11 2021OS/Arch:           linux/amd64Context:           defaultExperimental:      trueServer: Docker Engine - CommunityEngine:Version:          20.10.5API version:      1.41 (minimum version 1.12)Go version:       go1.13.15Git commit:       363e9a8Built:            Tue Mar  2 20:18:31 2021OS/Arch:          linux/amd64Experimental:     falsecontainerd:Version:          v1.4.3GitCommit:        269548fa27e0089a8b8278fc4fc781d7f65a939brunc:Version:          1.0.0-rc93GitCommit:        12644e614e25b05da6fd08a38ffa0cfe1903fdecdocker-init:Version:          0.19.0GitCommit:        de40ad0
Docker Compose version v2.20.3

二、安装部署prometheus

1、上传prometheus-feishu压缩包

[root@hadoop105 software]# ll
total 361032
-rw-r--r-- 1 root root  86397507 Sep 19 21:35 docker-20.10.5-install.tar.gz
-rw-r--r-- 1 root root 283293814 Sep 19 21:35 prometheus-feishu.tar.gz

2、解压

[root@hadoop105 software]# tar -xzvf prometheus-feishu.tar.gz -C /opt/module/

3、加载镜像

  • 进入/opt/module/prometheus-feishu/shell路径下
[root@hadoop105 module]# cd prometheus-feishu/
[root@hadoop105 prometheus-feishu]# ll
total 8
drwxr-xr-x 2 root root   30 Mar 19  2024 alertmanager
-rwxr-xr-x 1 root root 1624 Mar 19  2024 docker-compose.yaml
drwxr-xr-x 3 root root   18 Mar 19  2024 grafana
drwxr-xr-x 2 root root  162 Mar 19  2024 images
drwxr-xr-x 4 root root   32 Mar 19  2024 prometheus
drwxr-xr-x 4 root root   28 Mar 19  2024 prometheus-alert
-rw-r--r-- 1 root root  242 Mar 19  2024 readme.txt
drwxr-xr-x 2 root root   58 Mar 19  2024 shell
[root@hadoop105 prometheus-feishu]# cd shell/
[root@hadoop105 shell]# ll
total 8
-rwxr-xr-x 1 root root 324 Mar 19  2024 prometheus-load.sh
-rwxr-xr-x 1 root root 461 Mar 19  2024 prometheus-save.sh
[root@hadoop105 shell]# pwd
/opt/module/prometheus-feishu/shell
[root@hadoop105 shell]# sh prometheus-load.sh 

4、修改文件夹名称

[root@hadoop105 module]# mv prometheus-feishu/ prometheus

5、docker-compose启动容器

  • 确保当前目录包含 docker-compose.yml 文件。
[root@hadoop105 prometheus]# docker-compose up -d 
[+] Running 4/4✔ node-exporter 3 layers [⣿⣿⣿]      0B/0B      Pulled                                                                                                                                       19.0s ✔ 9fa9226be034 Pull complete                                                                                                                                                               0.7s ✔ 1617e25568b2 Pull complete                                                                                                                                                               0.7s ✔ c6e37428e3b3 Pull complete                                                                                                                                                               2.2s 
[+] Running 6/6✔ Network prometheus_default  Created                                                                                                                                                        0.1s ✔ Container prometheus-alert  Started                                                                                                                                                        0.1s ✔ Container prometheus        Started                                                                                                                                                        0.1s ✔ Container node-exporter     Started                                                                                                                                                        0.1s ✔ Container grafana           Started                                                                                                                                                        0.1s ✔ Container alertmanager      Started                                                                                                                                                        0.1s 
You have new mail in /var/spool/mail/root

6、查看容器

[root@hadoop105 prometheus]# docker ps
CONTAINER ID   IMAGE                              COMMAND                  CREATED              STATUS                        PORTS                    NAMES
4cdc172d294c   prom/alertmanager                  "/bin/alertmanager -…"   About a minute ago   Up About a minute             0.0.0.0:9093->9093/tcp   alertmanager
7eb4f87f4031   prom/prometheus                    "/bin/prometheus --c…"   About a minute ago   Up About a minute             0.0.0.0:9090->9090/tcp   prometheus
4c2e9aced851   grafana/grafana                    "/run.sh"                About a minute ago   Up About a minute             0.0.0.0:3000->3000/tcp   grafana
aa3835c67861   prom/node-exporter                 "/bin/node_exporter"     About a minute ago   Up About a minute             0.0.0.0:9100->9100/tcp   node-exporter
40c955b63e59   feiyu563/prometheus-alert:v4.6.1   "/bin/sh /app/docker…"   About a minute ago   Up About a minute (healthy)   0.0.0.0:9094->8080/tcp   prometheus-alert
You have new mail in /var/spool/mail/root

7、浏览器访问

  • 192.168.2.105:9090
    在这里插入图片描述

三、飞书告警

1、进入容器修改配置文件

[root@hadoop105 prometheus]# docker exec -it prometheus-alert /bin/sh
/app # vi conf/app.conf 
/app # exit 

在这里插入图片描述

2、重启容器

[root@hadoop105 prometheus]# docker restart prometheus-alert 
prometheus-alert

综上,prometheus告警已配置好

四、prometheus告警机制的核心部分-解释说明

  • 告警规则 在/opt/module/prometheus/prometheus/config/rules.yml里
  • 作用:这是 Prometheus 服务器本身的告警规则配置,用于定义何时触发告警。
    expr: up == 0:up 是 Prometheus 内置的监控指标(1 表示实例存活,0 表示宕机),这里表示 “当实例宕机(up=0)时”。
    for: 15s:避免瞬时抖动,只有当 “宕机状态持续 15 秒” 才会真正触发告警。
    labels 和 annotations:给告警添加标签(用于分类)和描述信息(用于展示具体内容)。
[root@hadoop105 config]# cd /opt/module/prometheus/prometheus/config/
[root@hadoop105 config]# ll
total 8
-rw-r--r-- 1 root root 583 Sep 20 13:33 prometheus.yml
-rw-r--r-- 1 root root 246 Sep 20 13:57 rules.yml
[root@hadoop105 config]# cat rules.yml 
groups:
- name: 实例存活报警rules:- alert: 服务器宕机报警expr: up == 0  # 表达式:监控指标up的值为0时触发for: 15s       # 持续时间:该状态持续15秒后才发送告警labels:severity: emergency  # 告警级别:紧急level: critical      # 自定义标签:严重annotations:description: '服务器 {{ $labels.instance }}宕机'  # 告警描述,包含实例信息
  • 告警管理器配置
    在/opt/module/prometheus/alertmanager/alertmanager.yml里
  • 作用:这是 Alertmanager 的配置,用于处理 Prometheus 触发的告警(如分组、去重、路由、发送到指定渠道)。
    route:定义告警的路由规则,包括如何分组、发送时机、重复频率等。
    receivers:定义告警的接收方式,这里配置了一个 WebHook 地址,用于将告警发送到飞书机器人(通过 feishu.cn 域名可看出)。
[root@hadoop105 alertmanager]# vim alertmanager.yml 
global:resolve_timeout: 5m  # 告警恢复后,等待5分钟确认后发送"恢复通知"
route:group_by: ['instance']  # 按instance(实例)分组告警group_wait: 30s         # 同一组内第一个告警触发后,等待30s再发送(可能合并同组新告警)group_interval: 60s     # 同一组内两次告警的间隔时间repeat_interval: 5m     # 同一告警重复发送的间隔(避免刷屏)receiver: 'web.hook.prometheusalert'  # 默认接收者
receivers:
- name: 'web.hook.prometheusalert'  # 接收者名称webhook_configs:- url: 'http://192.168.2.102:9094/prometheusalert?type=fs&tpl=prometheus-fs&fsurl=https://open.feishu.cn/open-apis/bot/v2/hook/290f7aee-879b-4be1-9576-123'  # 告警发送到的WebHook地址(这里是飞书机器人)
  • http://192.168.2.102:9094

    • 这是prometheusalert 服务的部署地址和端口。
    • prometheusalert 是一个第三方告警转发工具,用于将 Prometheus/Alertmanager 的告警转换为各种平台(如飞书、钉钉、企业微信等)的消息格式。
  • /prometheusalert

    • 是 prometheusalert 服务提供的接口路径,用于接收 Alertmanager 发送的告警请求。
      查询参数(? 后面的部分)
  • type=fs:指定告警接收平台为 “飞书”(fs 是飞书 Feishu 的缩写)。

    • tpl=prometheus-fs:指定使用的消息模板名称为 prometheus-fs,用于格式化告警内容(如标题、正文结构等)。
    • fsurl=https://open.feishu.cn/...:飞书机器人的 WebHook 地址,是实际接收告警消息的终点。
      这个地址由飞书机器人创建时生成,用于标识具体的接收群组 / 机器人(类似 “收件地址”)。
  • 两者的联系
    工作流程衔接:
    Prometheus 按照第一段配置的规则(如 “服务器宕机”)检测到异常,生成告警并发送给Alertmanager。
    Alertmanager 按照第二段配置的规则(如分组、重复频率)处理告警,最终通过 WebHook 发送到飞书。

五、手动测试

1、重启alertmanager容器

  • 因为上面修改了收件人地址url,因此要重启下容器
[root@hadoop105 alertmanager]# docker restart alertmanager 
alertmanager

2、手动杀死node exporter

[root@hadoop105 alertmanager]# docker stop node-exporter 
node-exporter

3、查看容器

[root@hadoop105 alertmanager]# docker ps
CONTAINER ID   IMAGE                              COMMAND                  CREATED          STATUS                    PORTS                    NAMES
4cdc172d294c   prom/alertmanager                  "/bin/alertmanager -…"   45 minutes ago   Up 2 minutes              0.0.0.0:9093->9093/tcp   alertmanager
7eb4f87f4031   prom/prometheus                    "/bin/prometheus --c…"   45 minutes ago   Up 45 minutes             0.0.0.0:9090->9090/tcp   prometheus
4c2e9aced851   grafana/grafana                    "/run.sh"                45 minutes ago   Up 45 minutes             0.0.0.0:3000->3000/tcp   grafana
40c955b63e59   feiyu563/prometheus-alert:v4.6.1   "/bin/sh /app/docker…"   45 minutes ago   Up 32 minutes (healthy)   0.0.0.0:9094->8080/tcp   prometheus-alert

4、网页查看状态

  • 可以看到此时的node exporter爆红了,我们也就收到告警了
    在这里插入图片描述
http://www.dtcms.com/a/392592.html

相关文章:

  • 基于“开源AI大模型AI智能名片S2B2C商城小程序”的多平台资源位传播对直播营销流量转化的影响研究
  • 【设计模式】适配器模式 在java中的应用
  • 2013/07 JLPT听力原文 问题四
  • MyBatis 缓存体系剖析
  • MySQL 主从复制 + MyCat 读写分离 — 原理详解与实战
  • Vmake AI:美图推出的AI电商商品图编辑器,快速生成AI时装模特和商品图
  • Debian13 钉钉无法打开问题解决
  • 02.容器架构
  • Diffusion Model与视频超分(1):解读淘宝开源的视频增强模型Vivid-VR
  • 通过提示词工程(Prompt Engineering)方法重新生成从Ollama下载的模型
  • 有没有可以检测反爬虫机制的工具?
  • 大模型为什么需要自注意力机制?
  • 长度为K子数组中的最大和-定长滑动窗口
  • Linux安装Kafka(无Zookeeper模式)保姆级教程,云服务器安装部署,Windows内存不够可以看看
  • WEEX编译|续写加密市场叙事
  • 为 Element UI 表格增添排序功能
  • 点评项目(Redis中间件)第四部分缓存常见问题
  • 动态水印也能去除?ProPainter一键视频抠图整合包下载
  • DevSecOps 意识不足会导致哪些问题
  • LeetCode:27.合并两个有序链表
  • 适用于双节锂电池的充电管理IC选型参考
  • 格式说明符
  • 层数最深叶子节点的和(深度优先搜索)
  • 【git】安装和基本指令
  • 如何利用AI技术快速生成专业级的PPT和视频内容
  • Linux系统之----线程互斥与同步
  • ARM SMMUv2架构下的安全和非安全状态(secure/non-secure)下的的资源分配解析
  • 面向linux新手的OrcaTerm AI 最佳实践
  • 构建高可用 LVS-DR + Keepalived 负载均衡集群实战指南
  • 网络协议总结