Elasticsearch stirbt ab, wenn Logstash versucht, Daten zu schreiben


9

Ich habe ein Raspberry Pi 2-Setup (neueste Version von Raspbian ab April 2015), mit dem letzte Woche sowohl ElasticSearch als auch Logstash in einem Testnetzwerk ausgeführt wurden (kein einfaches Setup, aber es war über eine Woche lang stabil!). Ich habe heute meinen Computer neu gestartet und es war wirklich schwierig, die Dinge wieder zum Laufen zu bringen. ES und LS werden beide unabhängig voneinander ausgeführt, aber wenn ich versuche, die LS-Ausgabe in ES zu verschieben, stirbt die ES-Instanz ohne Erklärung. Mein Ziel ist es, sowohl laufende als auch LS-Pumpdaten über das Standard-Ausgabe-Plugin in ES zu pumpen.

ElasticSearch [v1.5.0]

Ich glaube, hier liegt das Kernproblem. ES kann über service elasticsearch startPort 9200 gestartet werden und läuft weiter, ist über HTTP-Anforderungen an Port 9200 zugänglich und alle Lebenszeichen scheinen gesund zu sein. Sobald etwas (soweit ich das beurteilen kann) versucht , Daten in einen Index zu schreiben , stirbt der Prozess ab und die Debug-Protokolle @ / var / log / elasticsearch / * enthalten nichts, was mit einem Dienstfehler zusammenhängt. Ich habe versucht, über logstash (siehe unten) sowie mit curl einzufügen, die beide den ES-Prozess beenden. Der Curl-Befehl, den ich ausführe, ist curl -XPOST "http://localhost:9200/logstash-2015.04.05/records/" -d "{ \"type\" : \"specialRecord\" }".

Logstash [v1.4.2]

Ich arbeite derzeit mit dieser einfachen Konfiguration:

input {
    stdin { }
}

output {
        stdout { codec => rubydebug }
        elasticsearch {
                host => '127.0.0.1'
                cluster => 'elasticsearch'
        }
}

Weitere Hinweise

Einige Dinge, die ich versucht habe:

  • Ich habe versucht, die Protokollierungsstufen für ElasticSearch auf DEBUG / TRACE zu erhöhen, und die Ausgabe ist bemerkenswert uninteressant. Gerne stellen wir Protokolle zur Verfügung, wenn dies hilfreich wäre.

  • Ich habe versucht, ES 256 MB und 512 MB Heap-Speicherplatz zur Verfügung zu stellen, was anscheinend keine Auswirkungen hat. Ich habe auch die Speicherauslastung während all dem beobachtet und es scheint kein Problem zu sein, wenn der Speicher knapp wird.

  • Ich habe versucht, Multicast zu deaktivieren, um eine Reihe von Netzwerkvariablen auszusortieren, aber das schien keinen Unterschied zu machen.

  • Ich habe sichergestellt, dass das Datenverzeichnis für ES über genügend Speicherplatz, Schreibberechtigungen usw. verfügt. ES erstellt path.databeim Laden Unterverzeichnisse im Verzeichnis, aber ich glaube nicht, dass etwas hinzugefügt wurde, da die Indexstatistiken dies vorschlagen, wenn ich den ES-Prozess neu starte Die Gesamtzahl der Dokumente ist Null.

Ich bin jetzt ziemlich ratlos und enttäuscht, dass nichts, was ich brauche (oder zumindest finden kann), protokolliert wird. Irgendwelche Ideen, was hier los sein könnte?


Wenn Sie aus den Protokollen nichts Nützliches erhalten, scheint die einzige Option (außer dem Kompilieren aus dem Quellcode und dem Hinzufügen weiterer Debug-Anweisungen) die Verwendung von strace zum Überwachen von Systemaufrufen zu verwenden. Das könnte Ihnen einen Hinweis geben, warum Elasticsearch im Sterben liegt. Um die Lautstärke zu verringern, starten Sie wie gewohnt und führen Sie den laufenden Prozess kurz vor dem Start des Schreibvorgangs durch.
Paul Haldane

Ein Absturz ohne Protokolle erinnert mich an JNI-Probleme. Gibt es nicht einen JVM-Prozess-Dump ( hs_err_PID.log)? ES 1.5 verwendet eine native Bibliothek namens Sigar zur Überwachung. Möglicherweise liegt ein Problem mit Raspberrys ARM vor. Könnten Sie versuchen, Sigar alleine zu betreiben? Ich würde versuchen, ein Upgrade auf ES 1.5.2 oder ES 2.0 durchzuführen, das Sigar nicht mehr verwendet.
G Quintana

Haben Sie den Tausch ausgeschaltet?
Rumbles

Elasticsearch empfiehlt zunächst 8G RAM. Ich habe es einmal auf einem Raspberry Pi 3 ausgeführt. Es funktioniert, aber Sie müssen ein wenig vorsichtig mit der Geschwindigkeit sein, mit der Sie Daten senden, und auch Abfragen können einige Zeit dauern.
Webwurst

Antworten:


1

Sie benötigen mehr Hardware

Ihr Raspi ist möglicherweise (erheblich) für Ihre Arbeitsbelastung unter Strom.

Ich bin in keiner Weise ein Elasticstack-Experte, aber ich habe es in mehreren Testszenarien und für den begrenzten / leichten Produktionseinsatz eingerichtet. Nach meiner Erfahrung erfordert das System, während die anfängliche Einrichtung relativ wenig Ressourcen erfordert, mit zunehmender Anzahl von Indizes erheblich mehr Festplatten-E / A und CPU-Last.

Dies ist besonders deutlich nach einem Neustart, während das System die Shards wiederherstellt. Wenn Ihre Indizes nicht zu groß sind, können Sie monatliche Buckets anstelle der täglichen Standard-Buckets in Betracht ziehen, was in dieser Hinsicht hilfreich zu sein scheint.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.