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