Logging 在FluentD中解析内部JSON

Logging 在FluentD中解析内部JSON,logging,fluentd,Logging,Fluentd,我有一些JSON是通过FluentD驱动程序从docker容器发出的,如: '{"timeMillis":1485917543709,"thread":"main","level":"INFO","loggerName":"com.imageintelligence.ava.api.Boot","message":"{\"dom\":\"DOM\"}","loggerFqcn":"org.apache.logging.slf4j.Log4jLogger","threadId":1,"thread

我有一些JSON是通过FluentD驱动程序从docker容器发出的,如:

'{"timeMillis":1485917543709,"thread":"main","level":"INFO","loggerName":"com.imageintelligence.ava.api.Boot","message":"{\"dom\":\"DOM\"}","loggerFqcn":"org.apache.logging.slf4j.Log4jLogger","threadId":1,"threadPriority":5}'
注意,
消息
字段是字符串编码的JSON?当fluentD捕获此数据时,它最终会像预期的那样:

2017-02-01 06:29:15 +0000 docker.6faad650faa6: {"log":"{\"timeMillis\":1485917543709,\"thread\":\"main\",\"level\":\"INFO\",\"loggerName\":\"com.imageintelligence.ava.api.Boot\",\"message\":\"{\\\"dom\\\":\\\"DOM\\\"}\",\"loggerFqcn\":\"org.apache.logging.slf4j.Log4jLogger\",\"threadId\":1,\"threadPriority\":5}\r","com.amazonaws.ecs.cluster":"dombou","container_id":"6faad650faa6012af4f32df79901b42488543a5e6e53517fe3579b01ab2b6862","container_name":"/upbeat_booth","source":"stdout"}`
我使用这样的过滤器来解析JSON:

<filter docker.**>
  @type parser
  format json
  key_name log
  reserve_data true
  hash_value_field log
</filter>

问题是,
消息
字段仍然是一个字符串转义的JSON字段。关于如何解析内部JSON字段,有什么建议吗?如何堆叠过滤器?

请尝试以下插件,并让我知道它是如何运行的:


您可以尝试顺序过滤器:

<filter docker.**>
  @type parser
  key_name log
  format json
  reserve_data true
</filter>

<filter docker.*.embeded_json.**>
  @type parser
  key_name message
  format json
  reserve_data true
</filter>

@类型分析器
密钥名称日志
格式json
保留数据为真
@类型分析器
密钥名称消息
格式json
保留数据为真

定义一个过滤器并在fluentd的json插件中使用json。在此筛选器之后,为该筛选器定义匹配器,以便在日志上执行进一步的处理

这有助于解析嵌套的json。您可能还需要添加 gem在json中安装fluent插件json(如果还没有)。
请参阅-

我的理解是,这适用于“日志”字段,但在日志字段中不起作用。我需要一些递归处理log内部的东西。我将试一试:它不解析内部json,因为我也不想为我工作。所以即使在2020年,我们也没有办法解析内部json?你是我的救世主@伦瑞克,这对我没用。顺序过滤器还能工作吗?
<filter docker.**>
  @type parser
  key_name log
  format json
  reserve_data true
</filter>

<filter docker.*.embeded_json.**>
  @type parser
  key_name message
  format json
  reserve_data true
</filter>