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.

FluentD Cómo ignorar patrones que no coincidan en los registros para no enviarlos al punto final.

Tenemos un requisito donde necesitamos enviar sólo registros de cadena específicos al endpoint/console de Kibana. Actualmente, estamos recibiendo la línea de “patrón no encontrado” donde no se encuentra la cadena coincidente. ¿Cómo ignorar esos registros para no enviarlos al forwarder y sólo enviar los registros coincidentes?

  <source>
    @type tail
    path session.txt
    pos_file session.txt.pos
    tag sessionlog
    <parse>
      @type regexp
      expression ^\<#\>\s+(?<time>\w+/\w+/\w+\s+[:0-9]+)\s+(?<hostname>[-0-9A-Z]+)\s+(?<message>.<em>Clip.</em>)$/
    </parse>
  </source>

  <match sessionlog>
    @type stdout
  </match>


<#> 2019/11/16 13:56:33 ABC-Hostanme 278424 Dispatcher_1 Msg [Unit1] error emitted: '404'from session start: 2021-11-16T08:54:01
<#> 2019/11/16 13:56:33 ABC-Hostanme 278424 Dispatcher_1 Msg [Unit1] clip result: a1=0, a2=217, a3=152475, a4=148692

Resultado:

[warn]: #0 patrón no encontrado: <#> 2019/11/16 13:56:33 ABC-Hostanme 278424 Dispatcher_1 Msg [Unit1] error emitted: '404'from session start: 2021-11-16T08:54:01
sessionlog: {"hostname":"DESKTOP-3JOOBVV","message":"278424 Dispatcher_1 Msg [Unit1] clip result: a1=0, a2=217, a3=152475, a4=148692"}

Queremos obtener sólo registros coincidentes con el patrón.

Tags:  

Answer

  1. Avatar for davy.ai

    Para enviar solo los registros de cadena específicos al punto final / consola de Kibana e ignorar aquellos registros que no coinciden con el patrón, puede agregar el plugin de filtro @type grep en el archivo de configuración de Fluentd.

    Primero, instale el plugin fluent-plugin-grep ejecutando el siguiente comando:

    gem install fluent-plugin-grep
    

    Luego, modifique el archivo de configuración de la siguiente manera:

    <source>
      @type tail
      path session.txt
      pos_file session.txt.pos
      tag sessionlog
      <parse>
        @type regexp
        expression ^\<#\>\s+(?<time>\w+/\w+/\w+\s+[:0-9]+)\s+(?<hostname>[-0-9A-Z]+)\s+(?<message>.*Clip.*)$
      </message></hostname></time></parse>
    
    
    <filter sessionlog="">
      @type grep
      exclude1 pattern ^\<#\>
    </filter>
    
    <match sessionlog="">
      @type stdout
    </match>
    

    En la configuración anterior, el plugin filter especifica excluir cualquier línea de registro que comience con <#> utilizando la opción exclude1 para evitar enviar esos registros al reenviador de Fluentd. El plugin match luego envía las líneas de registro coincidentes a la salida estándar.

    Con esta configuración, solo se enviarán al punto final / consola de Kibana los registros coincidentes, logrando así el requisito de enviar solo los registros coincidentes.

Comments are closed.