2016-08-08 11 views
3

Ich frage mich, wie separate Indizes für verschiedene Logs in logstash abgerufen werden (die später an elasticsearch übergeben wurden), so dass ich in kibana zwei Indizes für sie definieren und sie entdecken kann.Wie definiert man separate Indizes für verschiedene Protokolle in Filebeat/ELK?

In meinem Fall habe ich ein paar Client-Server (von denen jeder mit filebeat installiert ist) und einen zentralen Protokoll-Server (ELK). Jeder Client-Server hat verschiedene Arten von Protokollen, z. redis.log, python Protokolle, mongodb Protokolle, die ich mag sie in verschiedene Indizes sortieren und in elasticsearch gespeichert.

Jeder Client-Server dient auch verschiedenen Zwecken, z.B. Datenbanken, UIs, Anwendungen. Daher möchte ich ihnen auch verschiedene Indexnamen geben (indem ich den Ausgabe-Index in filebeat.yml ändere?).

Antwort

4

In Ihrer Filebeat Konfiguration Sie document_type verwenden können, um die verschiedenen Protokolle zu identifizieren, die Sie haben. Innerhalb von Logstash können Sie den Wert des type Felds festlegen, um den Zielindex zu steuern.

Bevor Sie jedoch Ihre Protokolle in verschiedene Indizes aufteilen, sollten Sie sie in einem einzigen Index belassen und entweder type oder etwas custom field verwenden, um zwischen Protokolltypen zu unterscheiden. Siehe index vs type.

Beispiel Filebeat Prospektor config:

filebeat: 
    prospectors: 
    - paths: 
     - /var/log/redis/*.log 
     document_type: redis 

    - paths: 
     - /var/log/python/*.log 
     document_type: python 

    - paths: 
     - /var/log/mongodb/*.log 
     document_type: mongodb 

Beispiel Logstash config:

input { 
    beats { 
    port => 5044 
    } 
} 

output { 
    # Customize elasticsearch output for Filebeat. 
    if [@metadata][beat] == "filebeat" { 
    elasticsearch { 
     hosts => "localhost:9200" 
     manage_template => false 
     # Use the Filebeat document_type value for the Elasticsearch index name. 
     index => "%{[@metadata][type]}-%{+YYYY.MM.dd}" 
     document_type => "log" 
    } 
    } 
} 
+0

Sind Sie sicher, dass 'document_type' in filebeat in der einen' [@metadata] [Art] 'Feld erstellen Logstash-Ereignis und kein '[type]' -Feld? Ich denke, es sollte stattdessen 'index =>"% {type} -% {+ YYYY.MM.dd} "' lauten. – Val

+1

Der Wert 'document_type' wird für die' [@metadata] [type] 'und' [type] 'verwendet, so dass jedes Feld für den Index verwendet werden kann. –

+0

Gotcha, danke für die Bestätigung. – Val

1

In logstash können Sie mehrere Eingangs, Filter oder Ausgang Plugins mit Hilfe von Tags definieren:

input { 
    file { 
      type => "redis" 
      path => "/home/redis/log" 
    } 
    file { 
      type => "python" 
      path => "/home/python/log" 
    } 
} 
filter { 
    if [type] == "redis" { 
      # processing ....... 
    } 
    if [type] == "python" { 
      # processing ....... 
    } 
} 
output { 
    if [type] == "redis" { 
      # output to elasticsearch redis 
      index => "redis" 
    } 
    if [type] == "python" { 
      # output to elasticsearch python 
      index => "python" 
    } 
} 
Verwandte Themen