Logstash 6.2.3存储RabbitMQ多行日志问题求助
处理RabbitMQ多行日志的Logstash配置方案
嗨,很高兴听到你用ELK半年体验不错!针对RabbitMQ的多行日志合并问题,我在之前的项目里刚好处理过,给你分享下适配Logstash 6.2.3的具体配置:
核心思路
RabbitMQ的日志特点是:每条完整日志的首行都会以=LEVEL REPORT==== 日期::时间格式开头(比如你提到的=WARNING REPORT==== 19-Nov-2017::06:5...),后续的日志内容都是换行延续的。我们需要用Logstash的multiline codec把这些分散的行合并成一个完整的日志事件。
具体配置示例
把以下配置加到你的Logstash input模块里(替换成你的实际日志路径):
input { file { path => "/var/log/rabbitmq/rabbit@*.log" # 这里改成你的RabbitMQ日志文件路径,支持通配符 start_position => "beginning" # 首次运行时从日志开头读取 codec => multiline { pattern => "^=([A-Z]+) REPORT==== " # 匹配日志起始行的正则 negate => true # 表示"不匹配该模式的行"需要合并 what => "previous" # 将不匹配的行追加到上一个日志事件中 } } }
参数解释
pattern:精准匹配RabbitMQ日志的起始标识,确保只有首行会被识别为新日志的开始negate => true:反向匹配,意思是“如果当前行不满足上面的pattern,就合并到上一行”what => "previous":指定不匹配的行要合并到之前的日志事件里,而不是新事件
额外注意事项
- 确保运行Logstash的用户拥有RabbitMQ日志文件的读取权限,否则会出现无法采集的情况
- 如果你的RabbitMQ用了日志滚动(比如logrotate),Logstash的file插件会自动追踪文件变化,无需额外配置
- 配置完成后,可以先执行
logstash -f your_config.conf --config.test_and_exit验证语法是否正确,避免启动报错
内容的提问来源于stack exchange,提问作者mils
相关产品推荐
相关产品推荐

