tutorial pipelines mutate multiple log logging elasticsearch logstash graylog2

logging - pipelines - ¿Cómo manejar múltiples entradas heterogéneas con Logstash?



mutate logstash (3)

¿Debo ejecutar tantas instancias como diferentes tipos de registros?

¡No! Solo puede ejecutar una instancia para manejar diferentes tipos de registros.

En el archivo de configuración de logstash, puede especificar cada entrada con un type diferente. Luego, en el filtro puede usar if para distintos procesos diferentes, y también en la salida puede usar salida "if" para diferentes destinos.

input { file { type => "technical" path => "/home/technical/log" } file { type => "business" path => "/home/business/log" } } filter { if [type] == "technical" { # processing ....... } if [type] == "business" { # processing ....... } } output { if [type] == "technical" { # output to gelf } if [type] == "business" { # output to elasticsearch } }

Espero que esto le pueda ayudar :)

Supongamos que tiene 2 tipos muy diferentes de registros, como registros técnicos y comerciales, y desea:

  • los registros técnicos en crudo se enrutan hacia un servidor graylog2 utilizando una salida gelf ,
  • Los registros de json business se almacenan en un cluster elasticsearch utilizando la salida elasticsearch_http dedicada.

Sé que con Syslog-NG por ejemplo, el archivo de configuración permite definir varias entradas distintas que luego se pueden procesar por separado antes de enviarlas; lo que Logstash parece ser incapaz de hacer Incluso si una instancia se puede iniciar con dos archivos de configuración específicos, todos los registros toman el mismo canal y se están aplicando los mismos procesos ...

¿Debo ejecutar tantas instancias como diferentes tipos de registros?


Creo que Logstash no puede leer más de 2 archivos en la sección Entrada. prueba el siguiente

input { file { type => "technical" path => "/home/technical/log" } file { type => "business" path => "/home/business/log" } file { type => "business1" path => "/home/business/log1" } }


Usé etiquetas para múltiples entradas de archivos:

input { file { type => "java" path => "/usr/aaa/logs/stdout.log" codec => multiline { ... }, tags => ["aaa"] } file { type => "java" path => "/usr/bbb/logs/stdout.log" codec => multiline { ... } tags => ["bbb"] } } output { stdout { codec => rubydebug } if "aaa" in [tags] { elasticsearch { hosts => ["192.168.100.211:9200"] index => "aaa" document_type => "aaa-%{+YYYY.MM.dd}" } } if "bbb" in [tags] { elasticsearch { hosts => ["192.168.100.211:9200"] index => "bbb" document_type => "bbb-%{+YYYY.MM.dd}" } } }