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.

Cómo utilizar un canal de ingestión personalizado con un módulo Filebeat

¿Cómo puedo usar un pipeline de ingestión personalizado con un módulo Filebeat? En mi caso, estoy utilizando el módulo apache.

Según múltiples fuentes, esto supuestamente se puede configurar a través de output.elasticsearch.pipeline / output.elasticsearch.pipelines[pipeline]. Las fuentes son las siguientes:
* https://www.elastic.co/guide/en/beats/filebeat/current/elasticsearch-output.html#pipelines-option-es
* https://stackoverflow.com/a/58726519/1026263
* https://www.elastic.co/guide/en/beats/filebeat/current/elasticsearch-output.html#pipelines-option-es

Sin embargo, después de muchos intentos con diferentes combinaciones, nunca he logrado influir en qué pipeline de ingestión utiliza Filebeat; siempre utiliza el pipeline de ingestión predeterminado del módulo.

Este es solo uno de los muchos intentos:

filebeat.config:

filebeat.modules:
  - module: apache
    access:
      enabled: true
      var.paths: ["/var/log/apache2/custom<em>access*"]
    error:
      enabled: true
      var.paths: ["/var/log/apache2/custom</em>error*"]

filebeat.config.modules:
  reload.enabled: true
  reload.period: 5s

output.elasticsearch:
  hosts: ["${ELASTICSEARCH<em>URL}"]
  pipeline: "apache</em>with<em>optional</em>x<em>forwarded</em>for"

Ejecutar filebeat con el modo de depuración (-d "*" ) muestra lo siguiente, lo cual, supongo, demuestra que mi especificación ha sido ignorada. (También puedo notar por los documentos resultantes en Elasticsearch que se pasó por alto mi pipeline personalizado).

2021-12-16T23:23:47.464Z      DEBUG   [processors]    processing/processors.go:203    Publish event: {
  "@timestamp": "2021-12-16T23:23:47.464Z",
  "@metadata": {
    "beat": "filebeat",
    "type": "_doc",
    "version": "7.10.2",
    "pipeline": "filebeat-7.10.2-apache-access-pipeline"
  },
}

He intentado esto tanto en Filebeat v6.8 como v7.10 (en las imágenes de Docker docker.elastic.co/beats/filebeat).


Esto es similar a estos hilos, que nunca tuvieron una conclusión satisfactoria:
* https://stackoverflow.com/questions/68700592/how-to-use-custom-ingest-pipelines-with-docker-autodiscover/70384615#70384615
* https://stackoverflow.com/questions/58654560/how-to-specify-pipeline-for-filebeat-nginx-module/58726519#58726519

Tags:  ,

Answer

  1. Avatar for davy.ai

    Desafortunadamente, a pesar de las opciones documentadas, parece que actualmente no es posible utilizar una canalización de ingestión personalizada con un módulo Filebeat. Como has experimentado, especificar la canalización en la configuración de salida no está teniendo ningún efecto. Este problema se ha planteado en varios hilos sin una conclusión satisfactoria. Es posible que esto sea una limitación de cómo se implementan los módulos en Filebeat.

    Como solución alternativa, es posible que necesites crear una canalización de ingestión separada que replique el procesamiento realizado por la canalización estándar del módulo, con las personalizaciones adicionales que necesites, y utilizarla en lugar de la canalización del módulo. Luego puedes especificar esta canalización personalizada en tu configuración de salida.

    Alternativamente, si tu caso de uso lo permite, podrías considerar el uso de Logstash u otra canalización de procesamiento de datos para realizar las transformaciones necesarias y enviar los datos a Elasticsearch. Esto te daría más flexibilidad en cómo procesas y enriqueces los datos antes de indexarlos, a costa de una mayor complejidad y uso de recursos.

Comments are closed.