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.

Procesamiento de registros ELK Filebeat NLog

Hice la configuración basada en esta pregunta, pero todavía no funciona.

Cadena de registro:

2021-11-19 23:55:45.1605|INFO|Microsoft.Hosting.Lifetime|Now listening on: http://0.0.0.0:7007

filebeat.yml:

procesadores:
– agregar_metadatos_de_host: ~
– disecar:
tokenizador: “%{} %{}|{%{nivel}|%{módulo}|%{msg}”
campo: “mensaje”
prefijo_objetivo: “”

En Kibana veo que el tokenizador no funciona:
https://i.stack.imgur.com/1jzwE.png

¿Qué estoy haciendo mal?

Actualización 21.11.2021 #1

Usando el ejemplo de “sidharth vijayakumar”:

procesadores:
– agregar_metadatos_de_host:
host: “unix:///host_docker/docker.sock”
– disecar:
tokenizador: “%{TIMESTAMP_ISO8601:time}|%{LOGLEVEL:nivel}|%{GREEDYDATA:módulo}|%{GREEDYDATA:msg}”
campo: “mensaje”
prefijo_objetivo: “”

Pero obtengo una excepción de filebeat:

Saliendo: error al cargar el archivo de configuración: yaml: línea 11: se encontró un carácter de escape desconocido

Tags:  ,

Answer

  1. Avatar for davy.ai

    A partir de la cadena de registro proporcionada y filebeat.yml, parece que el tokenizador especificado en el procesador dissect no puede analizar adecuadamente el mensaje de registro. El tokenizador %{} %{}|{%{level}|%{module}|%{msg} no puede identificar el separador entre la marca de tiempo y otros campos en el mensaje de registro.

    Para solucionar este problema, puede intentar utilizar el siguiente tokenizador en el procesador dissect:

    %{TIMESTAMP_ISO8601:time}\|%{LOGLEVEL:level}\|%{GREEDYDATA:module}\|%{GREEDYDATA:msg}
    

    Este tokenizador debería ser capaz de analizar el mensaje de registro en función del formato de la marca de tiempo, el nivel de registro, el módulo y los campos de mensaje.

    Actualización (21/11/2021):

    En el filebeat.yml actualizado, hay un problema con los caracteres de escape utilizados en la URL del socket Unix. Para solucionar este problema, puede usar comillas simples para definir la URL del socket Unix y eliminar los caracteres de escape de la siguiente manera:

    procesadores: 
      - add_host_metadata: 
          host: 'unix:///host_docker/docker.sock' 
      - dissect: 
          tokenizador: '%{TIMESTAMP_ISO8601:time}\|%{LOGLEVEL:level}\|%{GREEDYDATA:module}\|%{GREEDYDATA:msg}' 
          campo: 'mensaje' 
          prefijo_destino: ''
    

Comments are closed.