我有从不同容器进入logstash的logentries。每个logentry包含一个字段ContainerID
和一个字段Message
。我认为具有相同ContainerID
的任何消息都是正确排序的。
我想将多个logentries的消息内容与以下相同的containerId合并:
所以我最终得到了logentries:
可以使用logstash aggregate filter plugin吗?
完成此操作具体来说,如果从上面收到1,2,3,3和4之间收到不同containerID的邮件会有问题吗?
背景
我有多个docker容器生成日志条目,这些日志条目使用docker gelf日志驱动程序从多个docker deamons(在一个swarm中)发送到logstash。
所有这些工作和logstash接收并过滤了logentries。
Docker将每一行视为一个单独的logentry并将其转发给logstash。在多线条的情况下,这是一个问题。我想将与一条多行消息相对应的许多logentries“合并”为一个。我知道什么时候“逻辑”logentry结束,因为下一个条目将从PREFIX开始,这就是为什么我建议上面的解决方案。
答案 0 :(得分:1)
我建议使用Filebeat。它具有多线支持,在最新版本中,您可以使用Docker的自动发现功能。
我建议您阅读以下讨论:https://github.com/elastic/beats/issues/918