Logging Docker Fluentd多行日志记录驱动程序

Logging Docker Fluentd多行日志记录驱动程序,logging,docker,fluentd,Logging,Docker,Fluentd,我正在尝试使用fluentd为docker环境创建一个集中式日志系统。目前,我能够使用fluentd docker日志驱动程序将docker日志发送到fluentd,与使用in_tail方法读取docker日志文件相比,这是一个更干净的解决方案。但是,我目前面临的问题是关于多行日志的问题 从上图中可以看出,多行日志出现了问题,这让用户非常困惑。有什么办法可以解决这个问题吗 谢谢 Cw查看他们文档中的多行分析: 基本上,您必须指定一个正则表达式,该正则表达式将匹配新日志消息的开头,并使fluen

我正在尝试使用fluentd为docker环境创建一个集中式日志系统。目前,我能够使用fluentd docker日志驱动程序将docker日志发送到fluentd,与使用in_tail方法读取docker日志文件相比,这是一个更干净的解决方案。但是,我目前面临的问题是关于多行日志的问题

从上图中可以看出,多行日志出现了问题,这让用户非常困惑。有什么办法可以解决这个问题吗

谢谢


Cw

查看他们文档中的多行分析:

基本上,您必须指定一个正则表达式,该正则表达式将匹配新日志消息的开头,并使fluentd能够将多行日志事件聚合到单个消息中

来自其文档的常见java stacktrace示例:

格式化多行
格式_firstline/\d{4}-\d{1,2}-\d{1,2}/
format1/^(?\d{4}-\d{1,2}-\d{1,2}:\d{1,2}:\d{1,2}\[(?.*)(?[^\s]+)(?.*)/

我知道这不是对fluentd问题的答案。但本指南解决了logstash的问题:

通过添加

    json {
        source => "log_message"
        target => "json"
    }
解析日志行后将其添加到筛选器

我从来没有找到fluentd的解决方案,所以选择了这个解决方案


使用fluent插件concat-pluging更新了链接,帮助我解决了上述问题

在fluent conf中添加这些行

 <filter **>
  @type concat
  key log
  stream_identity_key container_id
  multiline_start_regexp /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}.\d{3}
  multiline_end_regexp /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}.\d{3}
</filter>
此外,我还必须在Dockerfile中添加以下几行来安装插件

RUN ["gem", "install", "fluent-plugin-concat", "--version", "2.1.0"] 
#Works with Fluentd v0.14-debian

虽然这个正则表达式在异常发生时不能很好地工作,但仍然比以前好得多

在我做了一些进一步的研究之后,我想补充一些关于这个话题的评论。故障问题是由于Fluentd时间分辨率(现在没有亚秒级支持)。多亏了这个答案,我能够按顺序显示记录,至少用户在阅读此日志时不会感到困惑。有关第二个问题的另一个解决方案,请查看此博客文章您有解决方案吗?在docker发送给fluentd之前,我在docker中找到了这个关于合并多行日志的链接,但其实现非常特定于日志格式。根据fluentd的文档,“
multiline
仅适用于in_tail插件。”这意味着当您使用
@type forward
从docker输入时,这将不起作用。@AshBerlin-您也可以在多个插件中使用它,支持解析的核心插件在这里有@AshBerlin-另外,也许可以用in_tcp替换in_forward插件,它们基本上是一样的,只不过转发也监听UDP。in_tcp是一个支持格式分析器的插件,我会试试看。了解这一点也可能有助于我们处理容器生成JSON的情况,JSON作为字符串放在“log”字段中docker@AshBerlin我没有走这条路,但我建议您也研究一下fluent插件解析器。您只需传递来自docker实例的所有事件,然后在将它们推出链接之前尝试在筛选器中对它们进行多行解析。你能详细解释一下吗?
RUN ["gem", "install", "fluent-plugin-concat", "--version", "2.1.0"] 
#Works with Fluentd v0.14-debian