日志告警系统需求 该系统基于 Python 开发,并通过 Docker 运行,具备 Web 界面 进行配置和管理,主要用于从 Elasticsearch (ES) 读取日志数据并基于自定义规则触发告警,告警方式为 飞书机器人。 功能需求 1. ES 连接管理 Web 界面支持配置 Elasticsearch 连接信息,包括: ES 地址 账号 密码 配置后可测试连接状态,确保可用性。 2. 告警方式 通过 飞书机器人 发送告警通知。 支持 多个飞书机器人,可以为不同的告警规则指定不同的机器人。 机器人配置项: 机器人名称 Webhook 地址 3. 告警规则管理 规则触发方式: 定时查询某条数据流在指定时间范围内的日志数据。 统计某个字段(如 level:error)的数量,超过设定阈值时触发告警。 规则配置项: 规则名称 数据流索引(ES 索引名称) 查询筛选条件(可基于多个字段筛选,如 level:error) 查询时间范围(如最近 10 分钟、1 小时) 统计字段(用于计数的字段,如 level) 阈值(超过该值触发告警) 查询周期(如每 1 分钟执行一次) 通知机器人(选择对应的飞书机器人) 消息模板(可自定义告警内容) 4. 消息模板管理 支持 多个自定义消息模板,可供告警规则选择。告警消息将包含 查询到的最新一条数据的某个字段内容(如 message),并在内容过长时进行截取,保证消息简洁可读。 模板内容支持变量,如: 复制 编辑 告警名称:{rule_name} 触发时间:{trigger_time} 统计字段:{field} 触发阈值:{threshold} 统计值:{count} 支持 Markdown 格式。 5. 存储方式 不依赖 MySQL 等外部数据库,建议使用 JSON/YAML/SQLite 进行存储,保证轻量级和易部署性。 6. 系统部署 Docker 运行,提供 Dockerfile 和 docker-compose.yml 以便部署。 mongodb://mongouser:DaF97f3B!FpG65zF@lb-14j1hk46-3od0grjufknbqvy6.clb.usw-tencentclb.cloud:32521,lb-14j1hk46-3od0grjufknbqvy6.clb.usw-tencentclb.cloud:32522/test?replicaSet=cmgo-f5bip9or_0&authSource=admin log_format java_prod_agent '时间: $time_local | 用户: $remote_user | 客户端IP: $remote_addr | ' '请求方法和路径: "$request" | 状态码: $status | 响应大小: $body_bytes_sent | ' '来源页面: "$http_referer" | 客户端UA: "$http_user_agent" | ' '上游服务器: $upstream_addr | 上游响应耗时: $upstream_response_time | ' '请求总耗时: $request_time | Host: $host'; log_format app_lessie_ai_log '客户端IP: $remote_addr | 用户: $remote_user | 时间: $time_local | ' '请求方法和路径: "$request" | 状态码: $status | 响应大小: $body_bytes_sent | ' '来源页面: "$http_referer" | 客户端UA: "$http_user_agent" | ' '上游服务器: $upstream_addr | 上游响应耗时: $upstream_response_time | ' '请求总耗时: $request_time | Host: $host'; log_format s1_jennie_im_log '客户端IP: $remote_addr | 用户: $remote_user | 时间: $time_local | ' '请求方法和路径: "$request" | 状态码: $status | 响应大小: $body_bytes_sent | ' '来源页面: "$http_referer" | 客户端UA: "$http_user_agent" | ' '上游服务器: $upstream_addr | 上游响应耗时: $upstream_response_time | ' '请求总耗时: $request_time | Host: $host';