Files
Work-configuration-file/需求

75 lines
3.6 KiB
Plaintext
Raw Normal View History

2025-10-07 15:58:15 +08:00
日志告警系统需求
该系统基于 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';