Ich bin wie folgt festgelegt, während wir den ESK-Stack testen und zu lernen, wie das alles funktioniert:Verlust von Nachrichten zwischen logstash und Elasticsearch
Client-Server (CS) läuft filebeat sendet Ausgabe an logstash Vor-Ort-Aggregatorknoten (AN) ausführen.
AN läuft mit einigen Filtern logstash und leitet dann auf unserem Elasticsearch/Kibana Knoten (ESK) an rabbitmq weiter.
ESK startet rabbitmq und logstash zieht Nachrichten von rabbitmq, bevor die Ausgabe an elasticsearch gesendet wird (ohne Filterung). Kibana ist unsere Visualisierung (offensichtlich) und wir sind alle ziemlich neu bei elasticsearch, also machen wir nicht viel direkt damit.
Hier ist das Problem:
CS erzeugt eine Nachricht. Es wird definitiv an AN gesendet, wo Logstash es filtert und es weiterfährt (nachdem es auf logstash.stdout geantwortet hat). Die Logstash-Instanz in ESK sieht sie auch (und schreibt sie in logstash.stdout). Ich kann die Nachrichten in beiden Logstash-Instanzen sehen. Sie passen zusammen und sind entsprechend markiert. Aber sie sind in Kibana nicht sichtbar.
Unsere configs und eine Beispielnachricht von beiden Protokolle sind alle hier in Kern Form: https://gist.github.com/wortmanb/ebd37b8bea278d06ffa058c1513ef940
Wo könnten diese Nachrichten gehen? Sie werden nicht in Kibana angezeigt - wenn ich nach Nachrichten mit Tags filtern: "Puppe", bekomme ich im Grunde nichts während der Zeit, wenn ich weiß, dass diese Nachrichten fließen.
Alle Debugging-Vorschläge?
Sehen Sie Ihre Protokolle in Elasticsearch? Können Sie Ihre Hand auf ein Protokoll legen, das nicht in Elasticsearch indiziert wurde? – Erik
Ja - die Logmeldungen des Puppet Servers kommen nicht rein. Nun, mehr auf den Punkt, diejenigen, die mit "_grokparsefailure" getaggt werden, kommen herein. Diejenigen, die ich erfolgreich analysiere, sind nicht. Wir bekommen gelegentlich einen mehrzeiligen Stapelspeicherdump, der nicht parsen kann - ich habe mich noch nicht damit befasst. Ich habe diese gefunden, indem ich in Kibana nach der Quelle "/var/log/puppetlabs/puppetserver/puppetserver.log" gesucht habe. – Bret
Nur auf deiner Architektur, brauchst du wirklich rabbitmq? Sie können Ihr Protokoll einfach direkt vom Logstash auf dem Aggregatorknoten (AN) zu ES auf Ihrem Elasticsearch/Kibana-Knoten (ESK) übertragen. Oder vielleicht gibt es hier nicht näher beschriebene Zwänge, die diese Architektur erzwingen. – baudsp