Logstash - Étape de sortie
La sortie est la dernière étape du pipeline Logstash, qui envoie les données de filtre des journaux d'entrée vers une destination spécifiée. Logstash propose plusieurs plugins de sortie pour stocker les événements de journal filtrés dans différents moteurs de stockage et de recherche.
Stockage des journaux
Logstash peut stocker les journaux filtrés dans un File, Elasticsearch Engine, stdout, AWS CloudWatch, etc. Protocoles réseau comme TCP, UDP, Websocket peut également être utilisé dans Logstash pour transférer les événements du journal vers des systèmes de stockage distants.
Dans la pile ELK, les utilisateurs utilisent le moteur Elasticsearch pour stocker les événements du journal. Ici, dans l'exemple suivant, nous allons générer des événements de journal pour un moteur Elasticsearch local.
Installation du plug-in de sortie Elasticsearch
Nous pouvons installer le plugin de sortie Elasticsearch avec la commande suivante.
>logstash-plugin install Logstash-output-elasticsearch
logstash.conf
Ce fichier de configuration contient un plugin Elasticsearch, qui stocke l'événement de sortie dans Elasticsearch installé localement.
input {
file {
path => "C:/tpwork/logstash/bin/log/input.log"
}
}
filter {
grok {
match => [ "message", "%{LOGLEVEL:loglevel} -
%{NOTSPACE:taskid} - %{NOTSPACE:logger} -
%{WORD:label}( - %{INT:duration:int})?" ]
}
if [logger] == "TRANSACTION_START" {
aggregate {
task_id => "%{taskid}"
code => "map['sql_duration'] = 0"
map_action => "create"
}
}
if [logger] == "SQL" {
aggregate {
task_id => "%{taskid}"
code => "map['sql_duration'] ||= 0 ;
map['sql_duration'] += event.get('duration')"
}
}
if [logger] == "TRANSACTION_END" {
aggregate {
task_id => "%{taskid}"
code => "event.set('sql_duration', map['sql_duration'])"
end_of_task => true
timeout => 120
}
}
mutate {
add_field => {"user" => "tutorialspoint.com"}
}
}
output {
elasticsearch {
hosts => ["127.0.0.1:9200"]
}
}
Input.log
Le bloc de code suivant montre les données du journal d'entrée.
INFO - 48566 - TRANSACTION_START - start
INFO - 48566 - SQL - transaction1 - 320
INFO - 48566 - SQL - transaction1 - 200
INFO - 48566 - TRANSACTION_END - end
Démarrez Elasticsearch sur Localhost
Pour démarrer Elasticsearch sur l'hôte local, vous devez utiliser la commande suivante.
C:\elasticsearch\bin> elasticsearch
Une fois qu'Elasticsearch est prêt, vous pouvez le vérifier en tapant l'URL suivante dans votre navigateur.
http://localhost:9200/
Réponse
Le bloc de code suivant montre la réponse d'Elasticsearch sur localhost.
{
"name" : "Doctor Dorcas",
"cluster_name" : "elasticsearch",
"version" : {
"number" : "2.1.1",
"build_hash" : "40e2c53a6b6c2972b3d13846e450e66f4375bd71",
"build_timestamp" : "2015-12-15T13:05:55Z",
"build_snapshot" : false,
"lucene_version" : "5.3.1"
},
"tagline" : "You Know, for Search"
}
Note - Pour plus d'informations sur Elasticsearch, vous pouvez cliquer sur le lien suivant.
Maintenant, exécutez Logstash avec le Logstash.conf mentionné ci-dessus
>Logstash –f Logstash.conf
Après avoir collé le texte mentionné ci-dessus dans le journal de sortie, ce texte sera stocké dans Elasticsearch by Logstash. Vous pouvez vérifier les données stockées en tapant l'URL suivante dans le navigateur.
http://localhost:9200/logstash-2017.01.01/_search?pretty
Réponse
Ce sont les données au format JSON stockées dans l'index Logstash-2017.01.01.
{
"took" : 20,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 10,
"max_score" : 1.0,
"hits" : [ {
"_index" : "logstash-2017.01.01",
"_type" : "logs",
"_id" : "AVlZ9vF8hshdrGm02KOs",
"_score" : 1.0,
"_source":{
"duration":200,"path":"C:/tpwork/logstash/bin/log/input.log",
"@timestamp":"2017-01-01T12:17:49.140Z","loglevel":"INFO",
"logger":"SQL","@version":"1","host":"wcnlab-PC",
"label":"transaction1",
"message":" INFO - 48566 - SQL - transaction1 - 200\r",
"user":"tutorialspoint.com","taskid":"48566","tags":[]
}
},
{
"_index" : "logstash-2017.01.01",
"_type" : "logs",
"_id" : "AVlZ9vF8hshdrGm02KOt",
"_score" : 1.0,
"_source":{
"sql_duration":520,"path":"C:/tpwork/logstash/bin/log/input.log",
"@timestamp":"2017-01-01T12:17:49.145Z","loglevel":"INFO",
"logger":"TRANSACTION_END","@version":"1","host":"wcnlab-PC",
"label":"end",
"message":" INFO - 48566 - TRANSACTION_END - end\r",
"user":"tutorialspoint.com","taskid":"48566","tags":[]
}
}
}
}