
专注可观测性与稳定性,为运维提效降本
WatchAlert 是一款专为云原生环境设计 的轻量级监控告警引擎,聚焦于可观测性( Metrics 、Logs 、Traces )与系统稳定性保障,提供从采集、分析到告警的全链路解决方案 。
AI 智能加持,让告警更有“洞察力”
通过 AI 技术深度分析 Metrics 、Logs 和 Traces 中的异常信号,精准定位根因,智能生成排查建议与修复方案,显著提升故障响应效率。
注:本教程主要为在 Docker 环境下安装部署 WatchAlert ,用于接入 ElasticSearch 和 VictoriaLogs 作为日志告警。
日志系列文章: https://songxwn.com/tags/syslog/
项目地址:https://github.com/opsre/WatchAlert
官方文档:https://cairry.github.io/docs/
| 监控类型 | 支持的数据源 |
|---|---|
| Metrics | Prometheus 、VictoriaMetrics |
| Logs | Loki 、ElasticSearch 、VictoriaLogs 、ClickHouse 、SLS (阿里云日志服务)、TLS (火山云日志服务,开发中)、CLS (腾讯云日志服务,开发中) |
| Traces | Jaeger |
| Events | Kubernetes 事件监控 |
| 基础协议监测 | HTTP 、ICMP 、TCP 、SSL |
| 告警机器人 | 飞书、钉钉、企业微信、邮件、自定义 Webhook 、Slack |

AI 智能分析
基于 AI 技术对告警内容进行深度语义解析,自动识别异常模式
提供根因推测、排查建议与修复思路,让每一次告警都“言之有物”
完善的值班机制
支持轮班排班、节假日调整、值班交接等场景
告警通知精准匹配责任人,确保第一时间响应
告警升级机制
Namespace 级告警分类
支持以命名空间( Namespace )为单位进行告警分组管理
清晰分类,快速定位,大幅提升故障处理效率
要安装最新版 Docker-CE ,支持 compose V2
网络支持访问 Dockerhub ,国内可能需要配置加速源。
已安装 Git ,用于下载部署文件。
需要占用本机 TCP 端口:80 、3306 、6379 、9001 ,确保空闲。
PS:安装最新版,使用 compose V2 部署。
https://mirror.nju.edu.cn/mirrorz-help/docker-ce/?mirror=NJU
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": [ "https://docker-0.unsee.tech", "https://docker-cf.registry.cyou", "https://docker.1panel.live" ] } EOF systemctl daemon-reload && sudo systemctl restart docker systemctl enable docker PS:如果没 git ,可用 dnf install git 或 apt install git 安装。
cd /opt git clone https://github.com/opsre/WatchAlert.git # 国内如果无法通过 Github 下载,可替换为在 Gitee 下载> git clone https://gitee.com/semaik/WatchAlert.git cd /opt/WatchAlert/deploy/docker-compose # 进入 docker-compose.yaml 文件所在目录进行部署 sed -i 's|docker.io/||g' docker-compose.yaml # 删除 docker.io 字段,确保自动使用加速器。 docker compose up -d # 拉取镜像并在后台启动 docker compose ps # 查看启动状态,注意第一次启动需要启动 init-mysql 容器用于初始化数据库,初始化完成后会自动停止。 


vim /opt/WatchAlert/deploy/docker-compose/docker-compose.yaml
PS:删除 init-mysql 容器是为了防止下次启动再次导入数据库,但注意要在成功初始化密码登录 Web 后操作。
services: w8t-service: container_name: w8t-service image: docker.io/cairry/watchalert:latest environment: - TZ=Asia/Shanghai volumes: - ../../config/config.yaml:/app/config/config.yaml restart: always privileged: true ports: - "9001:9001" healthcheck: test: ["CMD", "wget", "localhost:9001/hello"] interval: 5s timeout: 2s retries: 10 depends_on: - w8t-mysql - w8t-redis networks: - w8t w8t-web: container_name: w8t-web image: docker.io/cairry/watchalert-web:latest environment: - TZ=Asia/Shanghai restart: always privileged: true ports: - "80:80" networks: - w8t w8t-redis: container_name: w8t-redis image: redis:latest ports: - "6379:6379" command: [ "redis-server", "/usr/local/etc/redis/redis.conf" ] volumes: - ./redis:/data - ./redis.conf:/usr/local/etc/redis/redis.conf:ro environment: - TZ=Asia/Shanghai restart: always networks: - w8t w8t-mysql: container_name: w8t-mysql image: mysql:8.0 ports: - "3306:3306" volumes: - ./mysql:/var/lib/mysql environment: - TZ=Asia/Shanghai - MYSQL_ROOT_PASSWORD=w8t.123 - MYSQL_DATABASE=watchalert restart: always networks: - w8t networks: w8t: driver: bridge docker compose up -d --remove-orphans # 删除多余容器 docker compose ps NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS w8t-mysql mysql:8.0 "docker-entrypoint.s…" w8t-mysql 29 minutes ago Up 29 minutes 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp, 33060/tcp w8t-redis redis:latest "docker-entrypoint.s…" w8t-redis 29 minutes ago Up 29 minutes 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp w8t-service docker.io/cairry/watchalert:latest "/app/w8t" w8t-service 29 minutes ago Up 29 minutes (unhealthy) 0.0.0.0:9001->9001/tcp, [::]:9001->9001/tcp w8t-web docker.io/cairry/watchalert-web:latest "/docker-entrypoint.…" w8t-web 29 minutes ago Up 29 minutes 0.0.0.0:80->80/tcp, [::]:80->80/tcp # 查看状态如上 docker compose pull docker compose up -d ## 拉取最新版镜像,并更新运行中的容器镜像为最新版。 ELK 系列:https://songxwn.com/categories/linux/ELK/
VictoriaLogs 系列:https://songxwn.com/tags/VictoriaLogs/
用于定义和管理一个名为 WatchAlert 的多容器应用。它包含四个服务:w8t-service、w8t-web、w8t-redis 和 w8t-mysql,并使用一个名为 w8t 的自定义网络。下面是详细讲解:
doker-compose 来编排多个容器服务。w8t,便于容器之间通信。Asia/Shanghai,适用于中国大陆或港澳地区。w8t-service:主后端服务cairry/watchalert:latest9001 端口映射到主机的 9001 端口。../../config/config.yaml 挂载到容器内 /app/config/config.yaml。/hello 接口是否可访问。w8t-mysql 和 w8t-redis。privileged: true 赋予容器更高权限(慎用)。w8t-web:前端 Web 服务cairry/watchalert-web:latest80 端口映射到主机的 80 端口。privileged: true。w8t-redis:缓存数据库服务redis:latest6379 是 Redis 默认端口。./redis。/usr/local/etc/redis/redis.conf。w8t-mysql:关系型数据库服务mysql:8.03306 是 MySQL 默认端口。./mysql。w8t.123。watchalert。networks: w8t: driver: bridge w8t 网络。bridge 驱动,适合单机部署。创建数据源(可接入 ES 或 Vlogs 等数据源) > 创建通知对象(添加企业微信、钉钉、飞书等机器人) > 创建规则组 > 在规则组选择数据库匹配告警
可参考: https://cairry.github.io/docs/Guide/test.html
发送邮件到 [email protected]
或者关注 WX 公众号:网工格物
