Files
2025-10-07 15:58:15 +08:00

75 lines
3.6 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

日志告警系统需求
该系统基于 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';