Saltar al contenido

Filtro grok de Logstash: nombres de campos dinámicamente

Nuestro team redactor ha estado mucho tiempo investigando la resolución a tus dudas, te ofrecemos la resolución y nuestro objetivo es servirte de gran apoyo.

Solución:

El complemento Logstash Ruby puede ayudarlo. 🙂

Aquí está la configuración:

input 
    stdin 


filter 
    ruby 
        code => "
            fieldArray = event['message'].split('] [')
            for field in fieldArray
                field = field.delete '['
                field = field.delete ']'
                result = field.split(': ')
                event[result[0]] = result[1]
            end
        "
    


output 
    stdout 
        codec => rubydebug
    

Con sus registros:

[field1: content1] [field2: content2] [field3: content3]

Esta es la salida:


   "message" => "[field1: content1] [field2: content2] [field3: content3]",
  "@version" => "1",
"@timestamp" => "2014-07-07T08:49:28.543Z",
      "host" => "abc",
    "field1" => "content1",
    "field2" => "content2",
    "field3" => "content3"

He probado con 4 campos, también funciona.

Tenga en cuenta que el event en el código ruby ​​está el evento logstash. Puede usarlo para obtener todo su campo de evento, como message, @timestamp etc.

¡¡¡Disfrútala!!!

Encontré otra forma de usar expresiones regulares:

ruby 
    code => "
        fields = event['message'].scan(/(?<=[)w+: .*?(?=](?: 

Aquí tienes las comentarios y calificaciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *