Hallo allerseits, lange nicht gesehen.
Homebrew und JAVA JDK sind erforderlich, um ELK zu installieren. Wenn Sie es nicht installiert haben, setzen Sie es bitte zuerst ein. Homebrew Unter meinem Arbeitsweg
$ mkdir homebrew && curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C homebrew
Java SDK Weitere Informationen finden Sie unter Oracle ** Java SE-Downloads **. Ich habe JDK 8 für alle Fälle gewählt.
ELK
ELK-Stack ist ein allgemeiner Begriff für die drei Produkte von Elasticsearch: Elasticsearch (Analyse) + Logstash (Sammlung) + Kibana (Visualisierung). (Wenn es sich tatsächlich bewegt, bewegt es sich entsprechend dem LEK-Fluss) Elasticsearch Elasticsearch ist eine von Elastic entwickelte Open-Source-Volltextsuchmaschine. Sie können schnell ein Dokument mit dem gewünschten Wort aus einer großen Anzahl von Dokumenten extrahieren.
Da Elasticsearch keine relationale Datenbank ist, können Sie keine SQL-Anweisungen verwenden. Verwenden Sie stattdessen die RESTful-Schnittstelle.
Dieses Mal wird Elasticsearch 6.2.4 verwendet.
$ brew install elasticsearch
Zuerst finden Sie elasticsearch.yml
.
$ brew info elasticssearch
Ich denke, dass solche Informationen herauskommen werden.
...(Blah Blah Blah)...
Data: /usr/local/var/lib/elasticsearch/elasticsearch_JP23417/
Logs: /usr/local/var/log/elasticsearch/elasticsearch_JP23417.log
Plugins: /usr/local/var/elasticsearch/plugins/
Config: /usr/local/etc/elasticsearch/
...(Blah Blah Blah)...
elasticsearch.yml
befindet sich unter dem Pfad in Config
.
Öffnen Sie es und ändern Sie network.host
in Ihre tatsächliche IP-Adresse. Dieses Mal werde ich es in einer lokalen Umgebung erstellen, also habe ich es auskommentiert und so eingestellt.
network.host: localhost
Starten Sie Elasticsearch mit "Brew Services Elasticsearch Start". Elasticsearch wird standardmäßig auf Port 9200 ausgeführt. Wenn Sie also http: // localhost: 9200 besuchen, werden diese Informationen angezeigt.
{
"name" : "ry1EXQC",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "ZMYVLV-eR-G5hBrQ6QmSGA",
"version" : {
"number" : "6.2.4",
"build_hash" : "ccec39f",
"build_date" : "2018-04-12T20:37:28.497551Z",
"build_snapshot" : false,
"lucene_version" : "7.2.1",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
Logstash Logstash ist eine Open-Source-Pipeline für die serverseitige Datenverarbeitung. Erfasst gleichzeitig Daten aus einer Vielzahl von Quellen, konvertiert sie und sendet sie an Ihren bevorzugten Tresor (Stash). Das empfohlene Versteck ist natürlich die elastische Suche.
Dieses Mal wird Logstash 6.2.4 verwendet.
$ brew install logstash
$ brew services start logstash
Logstash funktioniert tatsächlich in Verbindung mit der Konfiguration. Sie müssen für jede Szene eine andere Konfiguration platzieren. Sie sollten in der Lage sein, Kibana vorerst damit zu bewegen, daher werde ich später ausführlich darauf eingehen.
Kibana Kibana ist ein einfaches Visualisierungstool für Elasticsearch-Daten.
Dieses Mal werde ich Kibana 6.2.4 verwenden.
$ brew install kibana
Zuerst finden Sie kibana.yml
.
$ brew info kibana
Ich denke, dass solche Informationen herauskommen werden.
...(Blah Blah Blah)...
Config: /usr/local/etc/kibana/
...(Blah Blah Blah)...
kibana.yml
befindet sich unter dem in Config
beschriebenen Pfad.
Öffnen Sie es und ändern Sie "server.port" und "elasticsearch.url" in die tatsächlich verwendeten. Dieses Mal habe ich es mit den Standardeinstellungen so eingestellt.
...(Blah Blah Blah)...
server.port: 5601
...(Blah Blah Blah)...
elasticsearch.url: "http://localhost:9200”
...(Blah Blah Blah)...
Wenn Sie dies tun können, sollten Sie es unter http: // localhost: 5601 / status überprüfen können. Ein Bildschirm wie dieser wird angezeigt.
Dieses Mal erstellen wir ein Tool zum Senden von Protokollen per TCP an Elasticsearch.
Ich bin sicher, dass eine IDE automatisch ein Maven-Projekt generiert, aber bitte verwenden Sie es. Es ist kein Problem, wenn es auf diese Weise generiert wird. Als Referenz. Der Paketname ist diesmal log4j2.local (eigentlich ist alles in Ordnung).
Mit anderen Worten, es ist der Inhalt von pom.xml
.
Fügen Sie dem Tag "Abhängigkeiten" Folgendes hinzu.
pom.xml
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.8.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.8.2</version>
</dependency>
</dependencies>
Mit anderen Worten, es ist der Inhalt von log4j2.xml
. Log4j2 entscheidet, wohin das Protokoll entsprechend gesendet werden soll.
Dieses Mal wird es natürlich über Logstash an Elasticsearch gesendet, aber angesichts der Einfachheit des Debuggens habe ich es vorerst an Console ausgegeben.
log4j2.xml
<configuration status="OFF">
<appenders>
<Socket name="Logstash" host="localhost" port="9601" protocol="TCP">
<PatternLayout pattern="%d|%t|%p|%c|%L|%m%n" />
</Socket>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d|%t|%p|%c|%L|%m%n" />
</Console>
</appenders>
<loggers>
<root level="all">
<AppenderRef ref="Logstash"/>
<appender-ref ref="Console"/>
</root>
</loggers>
</configuration>
Wenn Sie personalisieren möchten, lesen Sie bitte ** Diese Seite **.
Dies ist das Verhalten zum Ausgeben des Protokolls.
Main.java
package log4j2.local;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.ThreadContext;
public class Main {
private static Logger logger = LogManager.getLogger("test");
public static void main(String[] args) {
logger.error("Fehlermeldung");
}
}
Wenn Sie dies tun, wird in der Konsole ein Protokoll wie dieses angezeigt. (Natürlich wird es nicht in Elasticsearch gespeichert, da es noch nicht mit Logstash verbunden ist.)
2018-09-12 12:55:13,962|main|ERROR|test|13|Fehlermeldung
Sie können einen beliebigen Pfad verwenden und logstash-tcp.conf erstellen. (Da es sich um TCP-Kommunikation handelt, habe ich ihm nur diesen Namen gegeben.)
Logstash kann standardmäßig alle Ports 9600-9700
verwenden, daher verwenden wir dieses Mal Port 9601. (Stellen Sie sicher, dass Sie denselben Port ** wie das Tag
logstash-tcp.conf
input {
tcp {
host => "localhost"
port => "9601"
mode => "server"
type => "eslocallogger"
}
}
filter {
mutate{
split => ["message","|"]
add_field => {
"Datetime" => "%{[message][0]}"
}
add_field => {
"Classname" => "%{[message][1]}"
}
add_field => {
"Level" => "%{[message][2]}"
}
add_field => {
"Logger" => "%{[message][3]}"
}
add_field => {
"Message" => "%{[message][5]}"
}
}
}
output {
stdout {
codec => rubydebug
}
elasticsearch {
hosts => "localhost:9200"
}
}
Ich habe Filter verwendet, um die Schemas hier zu trennen, aber die Standardspalten werden automatisch analysiert, auch wenn Sie sie nicht verwenden.
(Hier werden die Fehlermeldungen, die in Logstash eingehen, durch |
getrennt.)
$ brew services stop logstash
$ logstash -f ./logstash-tcp.conf --experimental-java-execution
Mit dem Flag "--experimental-java-execute" wird es auf der JAVA-Engine ausgeführt. Weitere Informationen finden Sie unter ** Lernen Sie die neue Logstash Java Execution Engine kennen **. Dies erhöht sicherlich den Durchsatz erheblich.
Console
2018-09-12 18:05:39,737|main|ERROR|test|13|Fehlermeldung
Logstash Console
[2018-09-12T18:05:40,464][DEBUG][logstash.pipeline ] Pushing flush onto pipeline {:pipeline_id=>"main", :thread=>"#<Thread:0x5caa3237 sleep>"}
{
"Level" => "ERROR",
"@timestamp" => 2018-09-12T09:05:39.847Z,
"Logger" => "test",
"port" => 60614,
"message" => [
[0] "2018-09-12 18:05:39,737",
[1] "main",
[2] "ERROR",
[3] "test",
[4] "13",
[5] "Fehlermeldung"
],
"type" => "eslocallogger",
"Message" => "Fehlermeldung",
"Datetime" => "2018-09-12 18:05:39,737",
"host" => "localhost",
"@version" => "1",
"Classname" => "main"
}
Kibana Wenn Sie zum Bildschirm ** Management ** von Kibana gehen und neu laden, sollte ein Bildschirm wie dieser angezeigt werden. Gehen Sie zu "Nächster Schritt", setzen Sie "Filter" auf "@ Zeitstempel" und klicken Sie auf "Indexmuster erstellen", um den Index zu visualisieren. Wenn Sie den Bildschirm "Entdecken" aufrufen, können Sie die Daten auf der Zeitachse sehen. Weitere Informationen finden Sie unter ** Verwendung von Kibana **.
Installing the ELK Stack on Mac OS X ElasticSearch + Logstash + Kibana + log4j2 Official 6.1.1 Edition Anguist Arrangement Verwenden Sie wie LogStash Filter Elastic Stack
Recommended Posts