拖尾 json 文件时 fluentd 中的模式不匹配错误

Posted

技术标签:

【中文标题】拖尾 json 文件时 fluentd 中的模式不匹配错误【英文标题】:Pattern not match error in fluentd while tailing json file 【发布时间】:2018-05-14 05:41:40 【问题描述】:

我已经安装了 fluentd logger,我希望它能够监控我的 python 代码的日志。日志是 json 日志,如下所示:


    "FileNo": 232,
    "FileClass": "timitry",
    "FileLevel": "24",
    "DataCount": 5,
    "Data": 
        "User1": <Username>,
        "User2": <Username>,
        "User3": <Username>,
        "User4": <Username>,
        "User5": <Username>"
    ,
    "time": "2018-05-14T05:33:02.071793"

每 5 分钟更新一次。我需要为其编写一个 fluentd 输入插件,以便它可以读取新的 json 数据并将其发布到elastic search。我真的不知道在这里使用哪个输入插件,但我使用了tail,这给了我以下错误:

2018-05-14 05:31:04 +0000 [warn]: #0 pattern not match: "    \"FileClass\": \"timitry\","

这对所有数据都是一样的。谁能建议我如何解决这个问题。下面是配置文件:

<source>
  @type tail
  format json
  path /home/user/Documents/logs/file_log.json
  tag first
</source>

<match first*>
  @type elasticsearch
  hosts 192.168.111.456:9200
  user <username>
  password <password>
</match>

我见过其他人使用regex 和其他格式。我是否也需要使用它。如何使用python代码生成的日志供fluentd使用并发布到elastic search

谢谢

【问题讨论】:

你有没有克服这个问题?我遇到了完全相同的问题。 【参考方案1】:

您能否尝试删除匹配指令中第一个之后的通配符? 喜欢:

<match first>
 @type elasticsearch
 hosts 192.168.111.456:9200
 user <username>
 password <password>
</match>

【讨论】:

以上是关于拖尾 json 文件时 fluentd 中的模式不匹配错误的主要内容,如果未能解决你的问题,请参考以下文章

fluentd解析日志部分json

使用Fluentd进行日志记录 - 为什么json日志文件的输出显示为textpayload(而不是jsonpayload)?

使用Fluentd收集Docker容器日志

在 FluentD 中解析内部 JSON

在 fluentd 中使用具有不同匹配类型的单个源

修改fluentd json输出