Logstash - Collecte des journaux

Les journaux de différents serveurs ou sources de données sont collectés à l'aide des expéditeurs. Un expéditeur est une instance de Logstash installée sur le serveur, qui accède aux journaux du serveur et les envoie à un emplacement de sortie spécifique.

Il envoie principalement la sortie à Elasticsearch pour le stockage. Logstash prend les entrées des sources suivantes -

  • STDIN
  • Syslog
  • Files
  • TCP/UDP
  • Journaux d'événements Microsoft Windows
  • Websocket
  • Zeromq
  • Extensions personnalisées

Collecte de journaux à l'aide du serveur Apache Tomcat 7

Dans cet exemple, nous collectons les journaux du serveur Apache Tomcat 7 installé dans Windows à l'aide du plug-in d'entrée de fichier et les envoyons à l'autre journal.

logstash.conf

Ici, Logstash est configuré pour accéder au journal d'accès d'Apache Tomcat 7 installé localement. Un modèle regex est utilisé dans la définition du chemin du plugin de fichier pour obtenir les données du fichier journal. Celui-ci contient «accès» dans son nom et ajoute un type apache, ce qui aide à différencier les événements apache des autres dans une source de destination centralisée. Enfin, les événements de sortie seront affichés dans le fichier output.log.

input {
   file {
      path => "C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/*access*"
      type => "apache"
   }
} 
output {
   file {
      path => "C:/tpwork/logstash/bin/log/output.log"
   }
}

Exécutez Logstash

Nous pouvons exécuter Logstash en utilisant la commande suivante.

C:\logstash\bin> logstash –f  Logstash.conf

Journal Apache Tomcat

Accédez au serveur Apache Tomcat et à ses applications Web (http://localhost:8080) pour générer des journaux. Les données mises à jour dans les journaux sont lues par Logstash en temps réel et stockées dans output.log comme spécifié dans le fichier de configuration.

Apache Tomcat génère un nouveau fichier journal d'accès en fonction de la date et y consigne les événements d'accès. Dans notre cas, c'était localhost_access_log.2016-12-24.txt dans lelogs répertoire d'Apache Tomcat.

0:0:0:0:0:0:0:1 - - [
   25/Dec/2016:18:37:00 +0800] "GET / HTTP/1.1" 200 11418
0:0:0:0:0:0:0:1 - munish [
   25/Dec/2016:18:37:02 +0800] "GET /manager/html HTTP/1.1" 200 17472
0:0:0:0:0:0:0:1 - - [
   25/Dec/2016:18:37:08 +0800] "GET /docs/ HTTP/1.1" 200 19373
0:0:0:0:0:0:0:1 - - [
   25/Dec/2016:18:37:10 +0800] "GET /docs/introduction.html HTTP/1.1" 200 15399

output.log

Vous pouvez voir dans les événements de sortie, un champ de type est ajouté et l'événement est présent dans le champ de message.

{
   "path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/
   localhost_access_log.2016-12-25.txt",
   "@timestamp":"2016-12-25T10:37:00.363Z","@version":"1","host":"Dell-PC",
   "message":"0:0:0:0:0:0:0:1 - - [25/Dec/2016:18:37:00 +0800] \"GET /
   HTTP/1.1\" 200 11418\r","type":"apache","tags":[]
}
{
   "path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/
   localhost_access_log.2016-12-25.txt","@timestamp":"2016-12-25T10:37:10.407Z",
   "@version":"1","host":"Dell-PC",
   "message":"0:0:0:0:0:0:0:1 - munish [25/Dec/2016:18:37:02 +0800] \"GET /
   manager/html HTTP/1.1\" 200 17472\r","type":"apache","tags":[]
}
{
   "path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/
   localhost_access_log.2016-12-25.txt","@timestamp":"2016-12-25T10:37:10.407Z",
   "@version":"1","host":"Dell-PC",
   "message":"0:0:0:0:0:0:0:1 - - [25/Dec/2016:18:37:08 +0800] \"GET /docs/
   HTTP/1.1\" 200 19373\r","type":"apache","tags":[]
}
{
   "path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/
   localhost_access_log.2016-12-25.txt","@timestamp":"2016-12-25T10:37:20.436Z",
   "@version":"1","host":"Dell-PC",
   "message":"0:0:0:0:0:0:0:1 - - [25/Dec/2016:18:37:10 +0800] \"GET /docs/
   introduction.html HTTP/1.1\" 200 15399\r","type":"apache","tags":[]
}

Collecte de journaux à l'aide du plug-in STDIN

Dans cette section, nous aborderons un autre exemple de collecte de journaux à l'aide de STDIN Plugin.

logstash.conf

C'est un exemple très simple, où Logstash lit les événements saisis par l'utilisateur dans une entrée standard. Dans notre cas, c'est l'invite de commande, qui stocke les événements dans le fichier output.log.

input {
   stdin{}
}
output {
   file {
      path => "C:/tpwork/logstash/bin/log/output.log"
   }
}

Exécutez Logstash

Nous pouvons exécuter Logstash en utilisant la commande suivante.

C:\logstash\bin> logstash –f  Logstash.conf

Écrivez le texte suivant dans l'invite de commande -

L'utilisateur a entré les deux lignes suivantes. Logstash sépare les événements par le paramètre de délimiteur et sa valeur par défaut est '\ n'. L'utilisateur peut changer en changeant la valeur du délimiteur dans le plugin de fichier.

Tutorialspoint.com welcomes you
Simply easy learning

output.log

Le bloc de code suivant montre les données du journal de sortie.

{
   "@timestamp":"2016-12-25T11:41:16.518Z","@version":"1","host":"Dell-PC",
   "message":"tutrialspoint.com welcomes you\r","tags":[]
}
{
   "@timestamp":"2016-12-25T11:41:53.396Z","@version":"1","host":"Dell-PC",
   "message":"simply easy learning\r","tags":[]
}