0、引言
日志已经可以收集了,那总不能将所有的日志都放在一个索引下吧?
那怎么对日志进行分类呢?
1、分类思路
我的分类思路主要是两个层级:日志类型、日志内容;
- 日志类型:即通过不同ES索引存储不同类型的日志;
- 日志内容:对日志内容,根据指定字段进行分类;
2、日志类型分类
2.1 系统日志
Filebeat读取各个服务的.log文件进行推送;
读取不同的日志文件,增加分类字段,logstash最终保存到ES不同的索引中。
比如:nginx访问日志,mysql错误日志,mysql慢查询日志;
命名方式 :nginx-access-20200101;
2.2 业务日志
业务日志也可以分为两类 : 行为日志、 错误日志;
各个应用将业务日志输出到Redis队列中,logstash最终保存到ES;
因为考虑的是,不同业务产生的日志,对应唯一队列,所以没有增加分类字段;
3、日志内容分类
业务日志内容输出时,指定日志格式,指定字段存储筛选条件
配置logstash过滤规则,将信息拆分,在kibana对应筛选过滤;
比如 :app业务行为日志,Redis队列写入的内容字符串为;
“2020-01-01 12:12:12|用户模块|登录操作|joker|日志描述xxx”
“2020-01-01 12:12:12|订单模块|支付操作|joker|日志描述xxx”
“2020-01-01 12:12:12|商品模块|浏览操作|joker|日志描述xxx”
4、日志字段规划
4.1 业务日志:行为日志
日志名称测试 : System_Behavior_Log_Date
例如 App_Behavior_Log_20200101;
日志内容格式 : xxxx | xxxxx | xxxxx | xxxxx | xxxx
字段 | 描述 |
---|---|
时间 | 日志创建时间 : 2020-01-01 12:12:12 |
业务 | 系统对应业务 :登录、、修改信息 |
操作人 | 对应系统业务: APP对应用户id、平台对应OA账号等 |
操作描述 | 本次操作描述:简短描述操作,方便查看 |
操作参数 | json格式参数:将对应参数以json格式写入Redis |
4.2 业务日志:错误日志
日志名称测试 : System_Error_Log_Date
例如: App_Error_Log_20200101
日志内容格式 : xxxx | xxxxx | xxxxx | xxxxx | xxxx
字段 | 描述 |
---|---|
时间 | 日志创建时间 : 2020-01-01 12:12:12 |
系统 | 日志产生系统 : APP、门户平台等 |
业务 | 系统对应业务 :登录、绑定学员、修改信息 |
错误类型(未确定) | 错误类型标识: Notice、Error |
错误地址 | 发生错误地址:xxx.com/xxx/xxx |
错误文件 | 发生错误文件:文件名及行数 |
错误参数 | 发生错误参数:将对应参数以json格式写入Redis |
错误描述 | 本次操作描述:简短描述操作,方便查看 |