方法"/>
ELK日志采集和查询方法
我是个目录
- 回顾
- logstash日志采集
- codec插件
- grok插件
- 完整的配置文件
- kibana操作
- 总结
回顾
前两篇文章简单的介绍了JAVA通过代码如何使用MDC进行日志打印,去查看log4j MDC用户操作日志追踪配置,以及ELK平台的搭建,去查看log4j MDC用户操作日志追踪配置。接下来将结合实际案例,简单介绍生产服务器的日志如何被logstash进行采集,并统一汇总,使得我们能够快速、方便、高效的查询日志,并且可以方便定位到该条日志是哪台服务器产生的,再也不用盲目的翻遍所有的生产服务器,只为找到出问题的那一台机器。
logstash日志采集
因为我们打印的日志各种各样,为了使我们能够方便的通过kibana进行检索,我们需要在logstash配置对应的搜集规则,如果你啥也不做,只是简单的搜集,可能会出现一些意想不到的错误。
- 日志收集是按行来收集的,当你的日志发生了换行,这时候换行的那几行就被认为是独立的一行,这样采集到的日志可读性很差
- 如果你使用了MDC,配置了log4j的日志格式输出,不配规则的话一整行都会被采集到message字段,此时你要根据某个字段快速搜索的话基本也是不可能的事情了
基于以上可能出现的“错误”,我们需要针对当前项目的日志配置文件制定一套属于自己的收集规则。
其实logstash的配置文件很简单,基本就以下的套路,日志源从哪里来(input输入插件),通过什么样的规则(filter过滤插件),最终将日志输出到什么地方(output输出插件)
# 输入
input {...
}# 过滤器
filter {...
}# 输出
output {...
}
因为我们这里介绍的是项目日志的采集,所以input当然是从file文件中来,配置如下:
input {file {type => "wechat-log"path => ["/usr/local/tomcat/logs/wechat/*.log"]codec => multiline{pattern => "^\[%{TIMESTAMP_ISO8601}\]"what => "previous"negate => true}start_position => "beginning"}
}
其中path是日志采集的地方,从日志文件的第一行开始采集,定义一个type(一般最后它就是kibana的索引)。
codec插件
这里codec的出场能够解决诸如我们前面提到的日志换行的问题。在logstash读入的时候,通过codec编码解析日志为相应格式,从logs
更多推荐
ELK日志采集和查询方法
发布评论