1. 分析
1.1 请求头
LoggingFilter
| Query | |
|---|---|
| Host | |
| X-Real-IP | 客户端请求真实IP |
| X-Forwarded-For | |
| Connection | |
| req-id: | [自定义] 渠道流水 |
| encode-key: | |
| plat-id: | [自定义] 渠道 |
| sha256-sign | |
| Accept | |
| timestamp | [自定义] 渠道时间 |
| jsession-id | [自定义] |
| limit | [自定义] |
| page-num | [自定义] |
| channel | [自定义] |
| User-Agent: | |
| route-name: | [自定义] 渠道页面 |
| Origin | |
| X-Requested-With | |
| Sec-Fetch-Site | |
| Sec-Fetch-Mode | |
| Sec-Fetch-Dest | |
| Referer | |
| Accept-Encoding | |
| Accept-Language | |
| encry-salt | [自定义] |
| encry-passwd | [自定义] |
| log-token | [自定义] 跟踪码 |
| login-user-num | [自定义] |
| sub-branch-num | [自定义] |
| login-org-code | [自定义] |
| branch-num | [自定义] |
| login-cn-name | [自定义] |
| remote-port | [自定义] |
| login-org-id | [自定义] |
| remote-ip | |
| login-user-id |

1. 引言
1.1 版本修订记录
| 版本 | 修订人 | 修订说明 | 日期 |
|---|---|---|---|
| V1.0 | syd | 日志监控、分析方案设计 | 2021.1.20 |
1.2 目的
随着用户的增长以及数据量的激增,在代发高峰期时间日,生产系统经常出现服务不可用、繁忙,以及系统宕机情况。针对当前场景,设计出实时采集、分析生产日志,对生产应用环境进行实时监控,以达到系统压力预警通知、和未来业务的预判分析。
1.3 业务背景
无
1.4 定义
无
2.方案设计
2.1 设计思想
分析每间隔指定周期的日志,获取不同级别、类型的错误日志、分析对应请求接口、用户、ip、请求的时间、耗时等信息。
- 用户分析
- ip:客户端用户ip(统计记录频率,是否为恶意攻击等)
- 用户唯一标识:通过用户的唯一标识、获取用户名、登录时间、
- 请求时间:用户访问请求任何一个接口的时间
- 接口名称:请求接口对应的接口名
- 方式:GET、POST……
- 接口耗时:从请求接口,到接口的响应返回,耗时
- 是否正常返回:请求正常返回、或异常响应(异常信息,需要记录)
- 应用
- 应用名
- 应用内存使用情况
- 单位时间内在线用户量
- 接口频率访问较高的接口
- 响应异常、错误信息
- 错误信息分类:如应用系统级别(内存溢出、假死等),业务信息错误(不影响应用服务正常工作)
2.2 日志格式规则
[时间][日志输出级别][ip][userid][调用接口][应用程序id][应用程序名称][接口返回状态][调用接口返回信息][调用接口耗时][时间][应用程序id][应用程序名称][应用程序cpu使用情况][应用程序内存使用情况]规则表: 规则id,规则名称,规则描述,规则关键字,规则是否可用,规则所属应用,规则创建时间,规则修改时间,最后修改人告警信息表: 告警信息id,告警级别,告警信息明细,告警信息创建时间,是否发送邮件,是否发送短信,告警信息所属应用,告警信息所属规则user表: userId,name,手机号,邮箱,用户是否有效,用户信息修改时间应用表: 应用程序ID,应用程序名称,应用程序类型,应用描述,是否已上线
2.3 系统架构
2.4 处理流程
flume: 配置flume对日志目录进行实时监控,source为日志目录中更新的日志信息,sink是kafka集群的topic。kafka: 日志信息存储到topic中,可以通过副本机制保证消息不丢失。flink: 通过flink消费kafka中topic的数据,对stream中的数据进行处理、过滤为我们需要的数据data,将data和规则表中进行匹配,匹配成功之后可以得到应用id等信息,根据应用id关联user表可以得到应用程序的负责人,关联告警信息表中可以得到告警级别,根据告警级别判断是否需要发送短信、邮件、发送频率给应用负责人redis: 保存应用id,负责人id等信息,设置过期时间,控制发送信息、邮件的频率
