2017-11-08 6 views
0

Wir verwenden ELK zum Steuern unserer Programmprotokolle. In unserer FileBeat-Konfiguration ernten wir 30 verschiedene Pfade, die Dateien enthalten, die jede Sekunde aktualisiert werden (es wird jede Sekunde nur in den Prod-Maschinen aktualisiert - in den anderen Dev-Maschinen haben wir wesentlich weniger Protokolle). Unsere Protokolldateien werden erst gelöscht, wenn sie alt werden und wir verwenden sie nicht mehr (wir ändern auch ihre Namen nicht). In letzter Zeit haben wir herausgefunden, dass die Protokolle von den letzten Pfaden in der Konfigurationsdatei (.yml) von den Prod-Maschinen niemals in der Kibana erscheinen.FileBeat Ernte Probleme

Nach einer Untersuchung stellten wir fest, dass FileBeat, das auf den Dateien steckte, der Pfad des ersten Pfades ist und nie den letzten zu erreichen scheint. Wenn ich die Position der letzten beiden Pfade an den Anfang ersetze, begann FileBeat, alle Protokolle dort zu registrieren und sie später zu ernten.

Ich schaute in der Dokumentation auf der FileBeat-Konfiguration nach und ich sah die nahe * Optionen close_option_config, die wie eine gute Idee scheinen. Aber ich habe es noch nicht richtig gemacht und ich bin mir nicht sicher, was ist die empfohlene Zeit für die Option scan_frequency (das ist jetzt Standard von 10s) und was würde mir am besten dienen.

Ich versuchte, die close_timeout zu 15s zu ändern und die scan_frequency bis 2m

 close_timeout: 15s 
     scan_frequency: 2m 

würde Ich mag einige Meinung nach hier, was kann ich tun, um dieses Problem zu umgehen, lösen? Ich habe die Konfiguration hier eingefügt, um einen Bezug zu haben und um zu sehen, ob ich etwas anderes verpasst habe.

meine filebeat.yml: (vor Änderungen)

 filebeat: 
    # List of prospectors to fetch data. 
    prospectors: 
    # Each - is a prospector. Below are the prospector specific configurations 
    - 
     paths: 
     - D:\logs\*\path1\a_*_Pri_app.log.txt 
     input_type: log 
     document_type: type1 
     multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}' 
     multiline.negate: true 
     multiline.match: after 
    - 
     paths: 
     - D:\logs\*\path2\b_*_Paths_app.log.txt 
     input_type: log 
     document_type: type2 
     multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}' 
     multiline.negate: true 
     multiline.match: after 
    - 
     paths: 
     - D:\logs\*\path3\c_*_R_app.log.txt 
     input_type: log 
     document_type: path3 
     multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}' 
     multiline.negate: true 
     multiline.match: after 
    - 
     paths: 
     - D:\logs\*\path4\d_*_d_app.log.txt 
     - C:\logs\*\path4\d_*_d_app.log.txt 
     input_type: log 
     document_type: path4 
     multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}' 
     multiline.negate: true 
     multiline.match: after 

..... gleichen wie oben

paths: 
     - D:\logs\*\path27\S.Coordinator_Z.*.log* 
     - C:\logs\*\path27\S.Coordinator_Z*.log* 
     input_type: log 
     document_type: path27 
     multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}' 
     multiline.negate: true 
     multiline.match: after 
    - 
     paths: 
     - D:\logs\*\path28\d_*_Tr_app.log.txt 
     - C:\logs\*\path28\d_*_Tr_app.log.txt 
     input_type: log 
     document_type: path28 
     multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}' 
     multiline.negate: true 
     multiline.match: after 
    - 
     paths: 
     - D:\logs\*\R1_Output\R*\pid_*_rr_* 
     input_type: log 
     document_type: path29 
     multiline.pattern: '<\?xml version="1\.0" encoding="UTF-8"\?>' 
     multiline.negate: true 
     multiline.match: after 
    - 
     paths: 
     - D:\logs\*\R2_Output\R*\pid_*_rr_* 
     input_type: log 
     document_type: path30 
     multiline.pattern: '<\?xml version="1\.0" encoding="UTF-8"\?>' 
     multiline.negate: true 
     multiline.match: after 

     registry_file: "C:/ProgramData/filebeat/registry" 

Antwort

0

Nach einer langen Untersuchung, als ich versuchte, ein ähnliches Problem zu finden, was Ich hatte mit einer Lösung, und nachdem ich mein Glück im dicuss elastischen Forum versucht hatte. Ich habe es geschafft, dieses Problem zu lösen.

Da ich diese Option im Web nicht gesehen habe, stelle ich es hier.

Filebeat Harvesting-System hat es anscheinend begrenzt, wenn es um den Umgang mit einer großen Anzahl von geöffneten Dateien in der gleichen Zeit geht. (Ein bekanntes Problem und ein elastisches Team bietet auch eine Reihe von Konfigurationsoptionen, um dieses Problem zu lösen und Kostüm ELK an Ihre Bedürfnisse anzupassen, z. B. config_options). ich es geschafft, mein Problem mit der Öffnung 2 weitere Filebeat Dienste zu lösen, die ich ihr Suchern in der folgenden Art und Weise konfiguriert (ein Beispiel für eine gleiche gilt für B):

paths: 
    - D:\logs\*\pid_*_rr_* 
    input_type: log 
    document_type: A 
    multiline.pattern: '<\?xml version="1\.0" encoding="UTF-8"\?>' 
    multiline.negate: true 
    multiline.match: after 
    close_eof: true 

Auf diese Weise, weil die Leistungen in Abhängigkeit voneinander Filebeat Arbeits versuche immer, sie zu bedienen (und nicht an den ersten Goldsuchern hängen zu bleiben).

Ich schaffe es auf diese Weise meine Erntemöglichkeiten zu verdoppeln.

posieren die diskussion in Elastic website: the discussion