前言
近期公司不少项目都上了 K8S,随着项目越来越多,有时候会出现“服务异常”等情况,需要上到服务器敲一大堆的命令,才有可能找到疑似的异常原因。
如果我们将这些数据全部记录到一个基于 EFK 的日志系统,有方便简洁的界面,能够快速找到错误数据、快速修复问题、快速更新,立马就省心多了。
接下来,就让小编为大家介绍一下这款神器的配置~
注意事项
配置文件详解(抽取关键部分)
- 注意:采集文件的数据内容,建议是 json 格式,有 message、timestamp 等字段。
关键配置解释:
1、日志路径,可以用通配符,如/var/log/containers/messagecenter-realease*.log,可以匹配到/var/log/containers这个目录下的以messagecenter-realease开头,以.log结尾的所有文件里面的数据。
2、fields.type:将日志分组,用于区分 ES 中不同的索引数据。
3、json.keys_under_root:将 json 数据拆解字段后,可以让字段解析到顶级结构下,默认为 false。
4、json.overwrite_keys:对于同名的 key,会覆盖原有 key 值。
5、processors.decode_json_fields.fields:要进行 json 解析的字段,默认容器日志中,所有日志信息都存在 message 字段。
6、processors.decode_json_fields.target:将文件中的 json 内容解析到指定的字段,如果为空(””),则解析到顶级结构下。
7、processors.decode_json_fields.overwrite_keys:如果解析出的 json 结构中某个字段在原始的 event(在 filebeat 中传输的一条数据为一个 event)中也存在,是否覆盖 event 中该字段的值,默认值:false。
8、output.elasticsearch.hosts:采集到的数据,存到哪个地址,这里以ES为例,存到elasticsearch-log-master:9200
9、output.elasticsearch.indices.index:这个是 ES 的索引名,不存在则会自动新增。
10、output.elasticsearch.indices.when.equals.fields.type:这里跟上面第二步的fields.type进行匹配分组对应,将第二步采集到的数据,存到这个分组下的索引当中。
效果
kibana查询工具
采集数据字段拆解后,方便查询每个字段的信息。
总结
上述内容介绍了日志收集的配置文件详情,如果有新的项目接入,只需要复制一个配置进行修改,就可以达到开箱即用的效果,实在是太方便了。建议每个项目单独搞一个配置项,这样查看起来方便明了。
需要注意的是:在同一个项目中,日志数据收集的格式要固定,不能一时一个样,不然 ElasticSearch 可不认账(在 es 里面同一个索引,数据格式不同会插入数据失败的),所以要统一。
如果大家对此感兴趣,后续我们对数据格式的规范问题再做讨论~
以上就是本期分享,欢迎各位关注、留言,大家的支持就是我的动力!