Fluentd'de JSON nasıl genişletilir?

Sep 29 2020

Fluentd'de iç içe geçmiş JSON dizesini ayrı alanlara filtrelemenin bir yolu var mı?

Mevcut JSON:

 { 
   Value1: "something",
   Value2: "something",
   Message:{
             Value3: "Something",
             Value3: "Something"
          }
 }

İstediğim (veya benzer bir şey):

 { 
   Value1: "something",
   Value2: "something",
   Message.Value3: "Something",
   Message.Value3: "Something"
          
 }

JSON'un yukarıdaki örnekteki gibi düzleştirilmesi gerekmez, ancak değerlerin elasticsearch'e ulaştıklarında kendi ayrı alanlarında (sütunlarında) olmasını istiyorum. Diğer servislerde, tek uzun Mesaj dizisini içinde bulunan birden çok alana bölmek istiyorum.

Yanıtlar

1 MaxLobur Sep 29 2020 at 02:54

Bunu dene:

<source>
...
</source>

<filter myapp**>
  @type parser
  key_name Message

  format multi_format
  <pattern>
    format json # try parsing json in the first place
  </pattern>
  <pattern>
    format none # leave as is if this is not json (plaintext)
  </pattern>

  reserve_data true # keep the original Message field in case anything go wrong
</filter>

<match myapp**>
...
</match>

Çok formatlı ayrıştırıcı: https://github.com/repeatedly/fluent-plugin-multi-format-parser