我有从不同容器进入logstash的日志。每个 logentry 都包含一个 fieldContainerID
和一个 field Message
。任何与ContainerID
我假设相同的消息都已正确排序。
我想将多个日志的消息内容与相同的 containerId 合并,如下所示:
- 前缀 | 字符串1
- 字符串2
- 字符串3
- 前缀 | 字符串 4
所以我最终得到了日志:
- 前缀 | 字符串1 \n 字符串2 \n 字符串3
- 前缀 | 字符串 4
这可以通过logstash 聚合过滤器插件来完成吗?
具体来说,如果在上面的 1.、2.、3.和 4. 之间接收到具有不同 containerID 的消息,是否会出现问题?
背景:
我有多个 docker 容器生成日志条目,这些条目使用来自多个 docker 守护进程(在一个 swarm 中)的 docker gelf 日志驱动程序发送到 logstash。
所有这些都有效,logstash 接收并过滤日志。
Docker 将每一行视为一个单独的日志条目,并将其转发到 logstash。在多行日志的情况下,这是一个问题。我想将许多对应于一条多行消息的日志“合并”为一个。我知道“逻辑”日志条目何时结束,因为下一个条目将以 PREFIX 开头,这就是我建议上述解决方案的原因。