Salut à tous, depuis longtemps sans voir.
Homebrew et JAVA JDK sont nécessaires pour installer ELK. Si vous ne l'avez pas installé, veuillez le mettre en premier. Homebrew Sous mon chemin de travail
$ mkdir homebrew && curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C homebrew
Java SDK Veuillez consulter Oracle ** Téléchargements Java SE **. J'ai choisi JDK 8 au cas où.
ELK
ELK stack est un terme général désignant les trois produits d'Elasticsearch: Elasticsearch (analyse) + Logstash (collection) + Kibana (visualisation). (Quand il bouge réellement, il se déplace selon le flux LEK) Elasticsearch Elasticsearch est un moteur de recherche en texte intégral open source développé par Elastic. Vous pouvez extraire rapidement un document contenant le mot souhaité à partir d'un grand nombre de documents.
Étant donné qu'Elasticsearch n'est pas une base de données relationnelle, vous ne pouvez pas utiliser d'instructions SQL. Utilisez plutôt l'interface RESTful.
Cette fois, Elasticsearch 6.2.4 sera utilisé.
$ brew install elasticsearch
Tout d'abord, vous trouverez ʻelasticsearch.yml`.
$ brew info elasticssearch
Je pense que de telles informations sortiront.
...(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 est sous le chemin dans
Config`.
Ouvrez-le et remplacez «network.host» par votre adresse IP réelle. Cette fois, je vais le construire dans un environnement local, donc je l'ai décommenté et mis comme ça.
network.host: localhost
Démarrez Elasticsearch avec brew services elasticsearch start
.
Elasticsearch fonctionne sur le port 9200 par défaut, donc si vous visitez http: // localhost: 9200, vous verrez ces informations.
{
"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 est un pipeline de traitement de données open source côté serveur. Capture simultanément les données d'un grand nombre de sources, les convertit et les envoie à votre coffre-fort préféré (cache). La réserve recommandée est, bien sûr, la recherche élastique.
Cette fois, Logstash 6.2.4 sera utilisé.
$ brew install logstash
$ brew services start logstash
Logstash fonctionne en fait avec le fichier config. Vous devez placer une configuration différente pour chaque scène. Vous devriez pouvoir exécuter Kibana avec cela pour le moment, donc je vous expliquerai en détail plus tard.
Kibana Kibana est un outil de visualisation simple pour les données Elasticsearch.
Cette fois, j'utiliserai Kibana 6.2.4.
$ brew install kibana
Tout d'abord, vous trouverez kibana.yml
.
$ brew info kibana
Je pense que de telles informations sortiront.
...(Blah Blah Blah)...
Config: /usr/local/etc/kibana/
...(Blah Blah Blah)...
«kibana.yml» est sous le chemin décrit dans «Config».
Ouvrez-le et remplacez server.port
et ʻelasticsearch.url` ceux que vous utilisez réellement. Cette fois, je l'ai configuré comme ça avec les paramètres par défaut.
...(Blah Blah Blah)...
server.port: 5601
...(Blah Blah Blah)...
elasticsearch.url: "http://localhost:9200”
...(Blah Blah Blah)...
Si vous pouvez le faire, vous devriez pouvoir le vérifier à partir de http: // localhost: 5601 / status. Un écran comme celui-ci apparaîtra.
Cette fois, nous allons créer un outil pour envoyer des journaux à Elasticsearch par TCP.
Je suis sûr que certains IDE généreront automatiquement un projet Maven, mais veuillez l'utiliser. Il n'y a pas de problème s'il est généré de cette manière. Pour votre information. Le nom du paquet cette fois est log4j2.local (en fait, tout va bien).
En d'autres termes, c'est le contenu de pom.xml
.
Ajoutez ce qui suit à la balise dependencies
.
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>
En d'autres termes, c'est le contenu de log4j2.xml
. Log4j2 décide où envoyer le journal en conséquence.
Cette fois, bien sûr, il sera envoyé à Elasticsearch via Logstash, mais compte tenu de la facilité de débogage, je l'ai fait sortir vers la console pour le moment.
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>
Si vous souhaitez personnaliser, veuillez vous référer à ** Cette page **.
C'est le comportement pour sortir le journal.
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("Message d'erreur");
}
}
Lorsque vous faites cela, vous verrez un journal comme celui-ci dans la console. (Bien sûr, il n'est pas enregistré dans Elasticsearch car il n'est pas encore connecté à Logstash.)
2018-09-12 12:55:13,962|main|ERROR|test|13|Message d'erreur
Vous pouvez utiliser n'importe quel chemin et créer logstash-tcp.conf. (Puisqu'il s'agit d'une communication TCP, je viens de lui donner ce nom.)
Logstash peut utiliser tous les ports 9600-9700
par défaut, donc cette fois nous utiliserons le port 9601. (Veillez à utiliser le même port ** que la balise <Socket>
de log4j2.xml
.)
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"
}
}
J'ai utilisé Filter pour séparer les schémas ici, mais les colonnes par défaut sont automatiquement analysées même si vous ne les utilisez pas. (Ici, les messages d'erreur qui arrivent dans Logstash sont séparés par «|».)
$ brew services stop logstash
$ logstash -f ./logstash-tcp.conf --experimental-java-execution
Avec l'indicateur --experimental-java-execution
, il fonctionnera sur le moteur JAVA.
Pour plus d'informations, veuillez consulter ** Découvrez le nouveau moteur d'exécution Java Logstash **. Certes, cela augmentera considérablement le débit.
Console
2018-09-12 18:05:39,737|main|ERROR|test|13|Message d'erreur
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] "Message d'erreur"
],
"type" => "eslocallogger",
"Message" => "Message d'erreur",
"Datetime" => "2018-09-12 18:05:39,737",
"host" => "localhost",
"@version" => "1",
"Classname" => "main"
}
Kibana Si vous allez à l'écran ** Gestion ** de Kibana et rechargez, vous devriez voir un écran comme celui-ci. Allez à «Étape suivante», définissez «filtre» sur «@ horodatage» et cliquez sur «Créer un modèle d'index» pour commencer à visualiser l'index. Lorsque vous entrez dans l'écran «Découvrir», vous pouvez voir les données sur l'axe du temps. Pour plus de détails, reportez-vous à ** Comment utiliser Kibana **.
Installing the ELK Stack on Mac OS X ElasticSearch + Logstash + Kibana + log4j2 Official 6.1.1 Edition Anguist Arrangement Utiliser comme un filtre LogStash Elastic Stack
Recommended Posts