【问题标题】:Add additional field in fluentd在 fluentd 中添加附加字段
【发布时间】:2019-12-27 02:55:49
【问题描述】:

我有一个消息如下

{"log":"kubernetes.var.log.dev-2019-12-24.log\u0009{\"msg\":\"[2019-12-24 10:34:58] app.ERROR: [ApiExceptionHandler:onKernelException]: default not match= exception is Symfony\\\\Component\\\\HttpKernel\\\\Exception\\\\NotFoundHttpException [] []\"}\n","stream":"stdout","time":"2019-12-24T10:34:58.295814385Z"}

现在我想把它分成 4 个部分:

file_name: kubernetes.var.log.dev-2019-12-24.log
time: 2019-12-24 10:34:58
messeage_type: app.ERROR
msg: all remainding messeage

在流利的配置中,我设置了一个正则表达式:

  <parse>
    @type "regexp"
    expression [(?<time>.+)] (?<kind>.*ERROR|.*INFO): (?<msg>.*)$
  </parse>

但它没有按预期工作,它显示一个警告

2019-12-27 02:34:30 +0000 [warn]: [fluentd-containers.log] pattern not match: "{\"log\":\"kubernetes.var.log.dev-2019-12-27.log\\u0009{\\\"msg\\\":\\\"[2019-12-27 02:34:27] security.INFO: Populated the TokenStorage with an anonymous Token. [] []\\\"}\\n\",\"stream\":\"stdout\",\"time\":\"2019-12-27T02:34:30.699454425Z\"}"
2019-12-27 02:34:30 +0000 [warn]: [fluentd-containers.log] pattern not match: "{\"log\":\"kubernetes.var.log.dev-2019-12-27.log\\u0009{\\\"msg\\\":\\\"[2019-12-27 02:34:27] app.INFO: [UserCtrl:Login]: request_data= {\\\\\\\"email\\\\\\\":\\\\\\\"tui@gmail.com\\\\\\\",\\\\\\\"password\\\\\\\":\\\\\\\"asfasfd\\\\\\\"} [] []\\\"}\\n\",\"stream\":\"stdout\",\"time\":\"2019-12-27T02:34:30.699458964Z\"}"

我认为正则表达式有问题,请告诉我如何解决它

【问题讨论】:

    标签: regex kubernetes fluentd


    【解决方案1】:

    你需要转义[]

    expression \[(?<time>.+)\] (?<kind>.*ERROR|.*INFO): (?<msg>.*)$
    

    【讨论】:

      猜你喜欢
      • 2019-01-31
      • 1970-01-01
      • 2020-12-06
      • 2020-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-11
      • 1970-01-01
      相关资源
      最近更新 更多