WikiMiNET

La documentation technique et administrative

Outils pour utilisateurs

Outils du site


wiki:monitoring:elk:logstash

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

wiki:monitoring:elk:logstash [2015/11/15 02:22]
Thithib
wiki:monitoring:elk:logstash [2020/06/27 18:16]
Ligne 1: Ligne 1:
-====== Logstash ====== 
  
-===== Pourquoi ? ===== 
- 
-​[[http://logstash.net/ | Logstash]] est un puissant outil de gestion de logs permettant d'effectuer une mise en forme avancée de ceux-ci. En effet, étant donné la diversité des formats, il peut rapidement devenir difficile de chercher une information précise apparaissant sous différentes formes, dans différents services. Logstash permet de pallier à ce problème en définissant un tamis dans lequel sont filtrés les messages : il est alors possible de classifier l'information par la définition de champs. 
-La sortie formatée est ensuite envoyée au cluster Elasticsearch afin d'être indexée. 
- 
-Nous utilisons actuellement la version 2.0 de Logstash. 
- 
- 
-===== Comment ? ===== 
- 
-==== Architecture ==== 
- 
-Pour chaque machine un serveur syslog (rsyslog ou syslog-ng) surveille les fichiers journaux. 
-Chaque nouveau message est ainsi transféré vers le serveur Logstash (192.168.102.9), où il est analysé et formaté avant d'être transmis au cluster Elasticsearch.  
- 
-==== Configuration ==== 
- 
-=== rsyslog === 
- 
-Pour transmettre les journaux vers Logstash, il est nécessaire de créer sur la machine concernée le fichier **/etc/rsyslog.d/forward.conf**. 
- 
-Par défaut rsyslog surveille déjà tous les messages système (cron, authentification, noyau, ...). 
- 
-Pour rajouter un fichier supplémentaire, il est nécessaire d'utiliser le module imfile de rsyslog : 
- 
-    $ModLoad imfile 
- 
-Puis pour chaque fichier à surveiller : 
- 
-<code> 
-$InputFileName /var/log/service.log 
-$InputFileTag mon-service: 
-$InputFileStateFile stat-mon-service 
-$InputFileSeverity info 
-$InputRunFileMonitor 
-</code> 
- 
- Le champ **Tag** doit contenir par défaut le nom du service d'où est issu le journal, mais il est possible de rajouter des règles supplémentaires dans Logstash. 
- 
-Par exemple, pour un serveur web Apache :  
- 
-<code> 
-$InputFileTag apache-mon-site-error: 
-</code> 
- 
-créera un champ "program" contenant "apache", un champ "vhost" contenant "mon-site" et un champ "apache_logtype" contenant "error". 
- 
-A noter que les deux points ":" finaux sont indispensables pour respecter le format syslog, et que l'entrée StateFile? doit être unique. 
- 
-Puis pour tout envoyer vers le container Logstash sur le port 5140 en TCP :  
- 
-<code> 
-*.* @logstash:5140 
-</code> 
- 
-<WRAP center round info > 
-On utilisait avant le port standard 514 mais le service logstash drop maintenant les privilèges et ne peut donc plus s'y binder. 
-</WRAP> 
- 
-=== logstash === 
- 
-Le fichier de configuration de Logstash est situé sur le container logstash (192.168.102.9) à l'emplacement **/opt/logstash/logstash.conf**. 
- 
-Il est composé de trois sections : 
- 
-  * La section ''input'' définit les entrées. Ici on écoute sur le port 5140 en TCP et en UDP :  
- 
-<code> 
-  tcp { 
-    type => syslog 
-    port => 5140 
-  } 
-  udp { 
-    type => syslog 
-    port => 5140 
-  } 
-</code> 
- 
-  * La section ''filter'' permet de définir une chaîne de filtres à appliquer sur les données. Un des plugins de filtrage les plus utilisés est Grok : à partir d'une expression régulière, il capture des informations et les ajoute dans des champs. Certaines expressions régulières sont déjà définies dans l'installation de base Logstash, par exemple pour récupérer les données au format syslog :  
- 
-<code> 
-  grok { 
-    match => [ "message", "<%{POSINT:priority}>%{SYSLOGBASE} %{GREEDYDATA:shortmessage}" ] 
-  } 
-</code> 
- 
- Une liste des expressions pré-définies et de leur valeur est disponible sur le [[https://github.com/logstash-plugins/logstash-patterns-core/tree/master/patterns | dépôt Git de Logstash]]. 
- 
-Ensuite, on écrit les bons patterns pour matcher les logs radius, DHCP, etc.​ 
- 
-  * La section ''output'' définit les sorties. Ici on envoie les données à l'un des noeuds (peu importe lequel) de notre cluster Elasticsearch :  
- 
-<code> 
-output { 
-  elasticsearch { 
-    hosts => ['192.168.102.229:9200'] 
-    template_overwrite => true 
-  } 
-} 
-</code> 
- 
-Comme pour les autres composants de la [[:wiki:monitoring:ELK:presentation | stack ELK]], n'hésitez pas à consulter la très bonne [[https://www.elastic.co/guide/en/logstash/2.0/index.html|documentation officielle]]. 
wiki/monitoring/elk/logstash.txt · Dernière modification: 2020/06/27 18:16 (modification externe)