es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

logstash personalizado de grok con condición if else

Registros de ejemplo:

322031044530043A4 901129

322031044530043A4 901129_N12

322031044530043A4 9011293N12

322031044530043A4 901129 N12

Me gustaría obtener

1er registro:

data1 : 32203104453

data2 : 00

data3 : 43

data4 : A4

data5 : 901129

2do registro:

data1 : 32203104453

data2 : 00

data3 : 43

data4 : A4

data5 : 901129_N12

3er registro:

data1 : 32203104453

data2 : 00

data3 : 43

data4 : A4

data5 : 9011293N12

4to registro:

data1 : 32203104453

data2 : 00

data3 : 43

data4 : A4

data5 : 901129 N12

Mi experimento:
enter image description here

Mi resultado fallido:
enter image description here

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para extraer los campos deseados de los registros de ejemplo utilizando Logstash y Grok, puedes utilizar el siguiente patrón:

    %{NUMBER:data1:regex('[0-9A-F]+')}%{SPACE}%{NUMBER:data2:regex('[0-9]+')}%{SPACE}%{NUMBER:data3:regex('[0-9]+')}%{SPACE}%{WORD:data4:regex('[0-9A-F]+')}%{SPACE}%{GREEDYDATA:data5}
    

    Este patrón coincidirá con los campos data1, data2, data3, data4 y data5 en las líneas de registro, donde:

    • data1 es una secuencia única e ininterrumpida de dígitos hexadecimales (0-9, A-F).
    • data2 y data3 son secuencias de uno o más dígitos decimales (0-9).
    • data4 es una secuencia única e ininterrumpida de dígitos hexadecimales (0-9, A-F), representados como una cadena.
    • data5 es cualquier texto restante en la línea, representado como una cadena.

    Puedes agregar este patrón a tu archivo de configuración de Logstash de la siguiente manera:

    input {
      # Tu configuración de entrada aquí
    }
    
    filter {
      grok {
        match => { "message" => "%{NUMBER:data1:regex('[0-9A-F]+')}%{SPACE}%{NUMBER:data2:regex('[0-9]+')}%{SPACE}%{NUMBER:data3:regex('[0-9]+')}%{SPACE}%{WORD:data4:regex('[0-9A-F]+')}%{SPACE}%{GREEDYDATA:data5}" }
      }
    }
    
    output {
      # Tu configuración de salida aquí
    }
    

    Ten en cuenta que es posible que debas ajustar las configuraciones de input y output para que se adapten a tu caso de uso. Además, si tienes múltiples formatos de registro en tu entrada, es posible que necesites aplicar diferentes patrones para cada formato.

Comments are closed.