news 2026/2/10 2:42:36

WatchAlert 轻量级AI日志告警 - Docker安装部署

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
WatchAlert 轻量级AI日志告警 - Docker安装部署

全面兼容主流可观测技术栈

监控类型 支持的数据源

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,确保空闲。

Docker 国内安装

PS:安装最新版,使用compose V2部署。

https://mirror.nju.edu.cn/mirrorz-help/docker-ce/?mirror=NJU

Docker Hub国内加速

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

Git 下载部署文件编排启动容器

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 容器用于初始化数据库,初始化完成后会自动停止。

访问Web 初始化admin密码

浏览器打开http://你的主机IP,第一次访问如下。点击初始化 admin密码。

输入两次密码后点击提交,然后使用admin账号进行登录。

登录后界面如下

部署后删除init-mysql容器和升级操作

将docker-compose.yaml 文件重写如下

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

删除init-mysql容器

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部署和Vlog部署教程

ELK系列:https://songxwn.com/categories/linux/ELK/

VictoriaLogs系列:https://songxwn.com/tags/VictoriaLogs/

Docker Compose配置文件讲解

用于定义和管理一个名为 WatchAlert 的多容器应用。它包含四个服务:w8t-service、w8t-web、w8t-redis 和 w8t-mysql,并使用一个名为 w8t 的自定义网络。下面是详细讲解:

🧩 总体结构说明

使用 docker-compose 来编排多个容器服务。

所有服务都连接到同一个网络 w8t,便于容器之间通信。

设置了时区为 Asia/Shanghai,适用于中国大陆或港澳地区。

🚀 服务详解

1. w8t-service:主后端服务

镜像:cairry/watchalert:latest

端口映射:将容器的 9001 端口映射到主机的 9001 端口。

配置挂载:将主机上的 ../../config/config.yaml 挂载到容器内 /app/config/config.yaml。

健康检查:

每 5 秒检查一次 /hello 接口是否可访问。

超时时间为 2 秒,最多重试 10 次。

依赖服务:启动前依赖 w8t-mysql 和 w8t-redis。

权限:privileged: true 赋予容器更高权限(慎用)。

2. w8t-web:前端 Web 服务

镜像:cairry/watchalert-web:latest

端口映射:容器的 80 端口映射到主机的 80 端口。

权限:同样设置为 privileged: true。

用途:提供用户界面,供浏览器访问。

3. w8t-redis:缓存数据库服务

镜像:redis:latest

端口映射:6379 是 Redis 默认端口。

配置挂载:

数据目录挂载到 ./redis。

Redis 配置文件挂载为只读到 /usr/local/etc/redis/redis.conf。

启动命令:使用指定配置文件启动 Redis。

4. w8t-mysql:关系型数据库服务

镜像:mysql:8.0

端口映射:3306 是 MySQL 默认端口。

数据挂载:将数据目录挂载到主机的 ./mysql。

环境变量:

设置时区。

设置 root 密码为 w8t.123。

初始化数据库名为 watchalert。

🌐 网络配置

networks:

w8t:

driver: bridge

所有服务都连接到 w8t 网络。

使用 bridge 驱动,适合单机部署。

基础配置流程

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/2 23:50:37

价格战背后的增长焦虑:影石大疆跨界“互搏”能走多远?

在智能影像设备市场&#xff0c;影石与大疆曾是各自细分赛道的绝对王者。影石长期垄断全景相机市场&#xff0c;全球市占率一度超过80%。大疆则统治着消费级无人机市场&#xff0c;70%以上的全球份额让其几乎没有对手。然而&#xff0c;一家独大的局面并非长久之计&#xff0c;…

作者头像 李华
网站建设 2026/2/3 1:00:53

18、网络安全防护:psad与fwsnort的应用与优势

网络安全防护:psad与fwsnort的应用与优势 1. 网络攻击与psad的应对 1.1 TCP连接与FIN扫描响应 在网络环境中,通过80端口与目标建立TCP连接本身并不一定意味着存在可疑活动。从传输层及以下来看,这种连接可能看似正常,iptables也不会记录任何信息。然而,盲FIN数据包则不…

作者头像 李华
网站建设 2026/2/2 23:50:41

17、Kubernetes存储管理全解析

Kubernetes存储管理全解析 1. 持久卷声明与挂载 在Kubernetes中,持久卷声明(PersistentVolumeClaim,PVC)是使用持久化存储的关键。在 volumes 下的 persistentVolumeClaim 部分,声明名称(如 storage-claim )能在当前命名空间内唯一标识特定的声明,并将其作为名…

作者头像 李华
网站建设 2026/2/3 0:09:23

20、在Kubernetes中运行有状态应用及自动扩缩容

在Kubernetes中运行有状态应用及自动扩缩容 1. 使用复制控制器部署Cassandra Cassandra是一个复杂的分布式数据库,有自动分发、平衡和复制数据的机制,这些机制并非针对网络持久存储进行优化,它设计为直接使用节点上存储的数据。当节点出现故障时,可通过其他节点上的冗余数…

作者头像 李华
网站建设 2026/2/3 0:35:17

26、网络安全:端口敲门与单包授权技术解析

网络安全:端口敲门与单包授权技术解析 1. 利用 Snort 签名增强防火墙功能 借助 Snort 社区提供的有效攻击检测签名,fwsnort 和 psad 项目能将 iptables 防火墙转变为可检测并响应应用层攻击的系统。本质上,这使 iptables 成为一个基础的入侵预防系统,具备阻止大量攻击与本…

作者头像 李华