2013-08-20 14 views
76

Diciamo che avere 2 tipi molto diversi di tronchi come i registri tecnici e di business e si desidera:Come gestire più ingressi eterogenei con Logstash?

  • prime log tecnici essere indirizzati verso un server graylog2 utilizzando un'uscita gelf,
  • i registri aziendali JSON essere memorizzati in un cluster elasticsearch utilizzando l'output dedicato elasticsearch_http.

So che con Syslog-NG ad esempio, il file di configurazione consente di definire diversi ingressi distinti che possono poi essere elaborati separatamente prima di essere inviati; cosa sembra impossibile fare Logstash. Anche se un'istanza può essere avviata con due file di configurazione specifici, tutti i registri utilizzano lo stesso canale e vengono applicati le stesse elaborazioni ...

Devo eseguire più istanze quante sono i diversi tipi di registri?

+0

Dovreste accettare risposta corretta di Ben Lim! –

risposta

163

Devo eseguire più istanze quanti diversi tipi di registri?

No! È possibile eseguire solo un'istanza per gestire diversi tipi di registri.

Nel file di configurazione logstash, è possibile specificare ciascun input con diverso type. Quindi nel filtro è possibile utilizzare if per l'elaborazione distinta diversa, e anche sull'output è possibile utilizzare l'output "se" per una destinazione diversa.

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 
    } 
} 

Spero che questo può aiutare :)

+1

Puoi anche usare l'attributo 'type' (con la stessa' type => "value" 'sintassi) nelle definizioni filtro ed output che dovrebbero ridurre un po 'la formattazione extra all'interno del file di configurazione. Esempio: https://gist.github.com/fairchild/3030472 Per documentazione: aggiungi un campo 'tipo' a tutti gli eventi gestiti da questo input. I tipi sono utilizzati principalmente per l'attivazione del filtro. Il tipo viene memorizzato come parte dell'evento stesso, quindi è anche possibile utilizzare il tipo per cercarlo nell'interfaccia web. –

+5

Bene, sembra che ciò che Ben ha fornito sia in realtà il nuovo modo di farlo. Quando ho usato 'type =>" value "' in un output, ho visualizzato il seguente messaggio: "Stai utilizzando un'impostazione di configurazione deprecata" type "impostata in stdout. Le impostazioni deprecate continueranno a funzionare, ma sono pianificate per la rimozione da logstash in futuro: puoi ottenere questo stesso comportamento con i nuovi condizionali, ad esempio: 'if [type] ==" sometype "{stdout {...}}'. " Ritiro il mio commento precedente. :) –

+1

Questa dovrebbe essere la risposta accettata. – w00t

0

penso logstash non può leggere più di 2 file nella sezione di ingresso. provare il seguito

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

ho usato i tag per l'ingresso di file multipli:

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}" 
     } 
    } 
} 
Problemi correlati