zu sehen, ob ich es richtig verstehe, das Problem, das Sie haben, ist nicht etwa y Senden unsere Protokolle zurück an den Server (oder wenn es @Jackie-xu einige Hinweise zur Verfügung gestellt), sondern darüber, wie sie senden die am effizientesten elastiscsearch.
Eigentlich ist die große Mehrheit der Benutzer des klassischen Stacks Logstash/Elasticsearch/Kibana
daran gewöhnt, eine Anwendung zu haben, die sich in einer Datei anmeldet, dann Logstashs Plugin zum Lesen von Dateien verwendet, um diese Datei zu parsen und das Ergebnis an ElasticSearch zu senden. Da @methai eine gute Erklärung darüber gab ich nicht weiter gehen auf diese Weise.
Aber was ich möchte bringen ist, dass:
Sie sind nicht verwendet Logstash gezwungen.
Eigentlich Hauptrolle des Logstash ist die Protokolle zu sammeln, zu analysieren, ihre Struktur und rezidivierendes Feld, zu identifizieren und schließlich gibt sie in einem JSON-Format, so dass sie zu Elasticsearch versandt werden können. Aber da Sie Javascript bereits auf der Client-Seite manipulieren, kann man sich leicht vorstellen, dass Sie direkt mit dem Elasticsearch-Server sprechen würden. Zum Beispiel, wenn Sie eine JavaScript-Ausnahme gefangen haben, könnten Sie das Folowing tun:
var xhr = new XMLHttpRequest();
xhr.open("PUT", http://your-elasticsearch-host:9292, true);
var data = {
lineNumber: lineNumber,
message: message,
url: url
}
xhr.send(JSON.stringify(data));
Auf diese Weise werden Sie direkt vom Client zum Server Elasticsearch sprechen. Ich kann nicht eine einfachere und schnellere Art und Weise vorstellen, das zu tun (Beachten Sie jedoch, dass dies nur Theorie ist, dass ich mich nie versucht, so Realität komplexer sein könnte, vor allem wenn man wie Datum Zeitstempeln spezielle Felder generiert werden sollen;)). In einem Produktionskontext werden Sie wahrscheinlich Sicherheitsprobleme haben, wahrscheinlich einen Proxy-Server zwischen dem Client und dem ES-Server, aber das Prinzip ist da.
Wenn Sie unbedingt wollen Logstash verwenden Sie
zum Zweck, wie jeder zu harmonisieren, tun das gleiche Wenn nicht gezwungen sind, eine Datei-Eingabe zu verwenden, oder für fortgeschrittene logstash Parsing confifuration mit Ihnen halten wollen Logstash, sollten Sie einen Blick auf alle alternative inputs auf die grundlegende Dateieingabe. Zum Beispiel habe ich selbst ein Rohr verwendet, mit einem Prozess, der dafür zuständig ist, die Protokolle zu sammeln und diese an die Standardausgabe auszugeben. Es gibt auch die Möglichkeit, auf einem offenen TCP-Sockel zu lesen, und vieles mehr, Sie können sogar Ihre eigenen hinzufügen.
Hey Leute helfen mir. Braucht meine Frage Erklärungen? – Erik
Welche Version von Knoten? Welche Art von App (Express? Andere MVC?) Was versuchen Sie auf der Serverseite mit diesen clientseitigen Fehlern zu erreichen? – methai
Ich benutze die neueste Version von Node JS mit Express js 4.0. Ich muss nur js Fehler in meiner elasticsearch Instanz speichern und in meinem kibana Dashboard sehen. – Erik