Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
logstash [2014/03/27 09:36] – [Installation des paquets] madko | logstash [2014/04/18 11:57] (Version actuelle) – [Configuration] madko | ||
---|---|---|---|
Ligne 29: | Ligne 29: | ||
- | [elasticsearch-1.0]\\ | + | < |
- | name=Elasticsearch repository for 1.0.x packages\\ | + | [elasticsearch-1.1] |
- | baseurl=http:// | + | name=Elasticsearch repository for 1.1.x packages |
- | gpgcheck=1\\ | + | baseurl=http:// |
- | gpgkey=http:// | + | gpgcheck=1 |
+ | gpgkey=http:// | ||
enabled=1 | enabled=1 | ||
+ | </ | ||
- | Fichier< | + | Fichier< |
- | [logstash-1.3]\\ | + | < |
- | name=logstash repository for 1.3.x packages\\ | + | [logstash-1.4] |
- | baseurl=http:// | + | name=logstash repository for 1.4.x packages |
- | gpgcheck=1\\ | + | baseurl=http:// |
- | gpgkey=http:// | + | gpgcheck=1 |
+ | gpgkey=http:// | ||
enabled=1 | enabled=1 | ||
+ | </ | ||
==== Installation des paquets ==== | ==== Installation des paquets ==== | ||
Ligne 54: | Ligne 57: | ||
+ | < | ||
yum install elasticsearch | yum install elasticsearch | ||
+ | </ | ||
Ligne 60: | Ligne 65: | ||
+ | < | ||
yum install logstash | yum install logstash | ||
+ | </ | ||
==== Configuration ==== | ==== Configuration ==== | ||
- | input {\\ | + | < |
- | syslog {\\ | + | # Ouverture en entrée d'un port d' |
- | type => syslog\\ | + | input { |
- | port => 5544\\ | + | |
- | | + | port => 5544 |
- | }\\ | + | |
+ | | ||
+ | udp { | ||
+ | | ||
+ | | ||
+ | } | ||
} | } | ||
+ | filter { | ||
+ | # Traitement type syslog, le type étant marqué sur les données entrant par nos ports de type syslog | ||
+ | if [type] == " | ||
+ | grok { | ||
+ | # Si on ne veut pas garder le message non traité | ||
+ | overwrite => " | ||
+ | # rsyslong envoi des messages de type : < | ||
+ | match => { | ||
+ | " | ||
+ | } | ||
+ | # on ajoute des tags perso, pratique pour filtrer dans l' | ||
+ | add_tag => [ " | ||
+ | } | ||
+ | # On ignore le champ syslog_pri | ||
+ | syslog_pri { } | ||
- | filter {\\ | + | # on crée une colonne hostip avec le contenu de la variable |
- | if [type] == " | + | mutate { |
- | grok {\\ | + | add_field => [ " |
- | overwrite => " | + | } |
- | match => {\\ | + | |
- | " | + | |
- | | + | |
- | }\\ | + | |
- | syslog_pri { }\\ | + | |
- | date {\\ | + | |
- | # season to taste for your own syslog format(s)\\ | + | |
- | match => [ " | + | |
- | }\\ | + | |
- | }\\ | + | |
- | mutate {\\ | + | |
- | add_field => [ " | + | |
- | }\\ | + | |
- | dns {\\ | + | |
- | reverse => [ " | + | |
- | action => " | + | |
- | } | + | |
+ | # on resoud l'ip présent dans la colonne host | ||
+ | dns { | ||
+ | reverse => [ " | ||
+ | action => " | ||
+ | } | ||
+ | } | ||
+ | } | ||
- | if [type] == " | + | # on stock dans elasticsearch |
- | | + | output |
- | | + | |
- | add_tag => [ " | + | |
- | }\\ | + | } |
- | }\\ | + | |
} | } | ||
+ | </ | ||
+ | ===== Architecture avec broker ===== | ||
+ | |||
+ | |||
+ | Le broker va servir de cache pour la reception des logs. Cela améliore les performances de logstash et permet d' | ||
+ | |||
+ | |||
+ | En gros l' | ||
+ | |||
+ | |||
+ | Logstash agent => Broker (sur collecteur) <= logstash serveur | ||
+ | |||
+ | |||
+ | Il est possible d' | ||
+ | |||
+ | ==== Installation de redis ==== | ||
+ | |||
+ | |||
+ | Le paquet redis est dispo dans le dépôt EPEL. | ||
+ | |||
+ | |||
+ | < | ||
+ | yum install redis | ||
+ | </ | ||
+ | |||
+ | ==== Configuration de redis ==== | ||
+ | |||
+ | |||
+ | Par défaut redis n' | ||
+ | |||
+ | |||
+ | ==== Configuration du logstash agent ==== | ||
+ | |||
+ | |||
+ | Logstash sur un noeud à monitorer est dit agent. En entrée il surveille des fichiers de logs (souvent non gérés par syslog), et en sortie envoi le résultat sur le logstash (ou broken) sur le collecteur. | ||
+ | |||
+ | |||
+ | Exemple de configuration pour parser un fichier de log puppet: | ||
+ | |||
+ | |||
+ | < | ||
+ | input { | ||
+ | file { | ||
+ | path => "/ | ||
+ | type => " | ||
+ | } | ||
+ | |||
+ | filter { | ||
+ | if [type] == " | ||
+ | # Ex: Tue Mar 25 18:07:07 +0100 2014 Puppet (notice): Finished catalog run in 51.85 seconds | ||
+ | mutate { replace => { " | ||
+ | grok { | ||
+ | overwrite => " | ||
+ | match => { | ||
+ | " | ||
+ | } | ||
+ | add_tag => [ " | ||
+ | } | ||
+ | } | ||
+ | |||
+ | output { | ||
- | output {\\ | ||
- | elasticsearch {\\ | ||
- | host => " | ||
- | }\\ | ||
} | } | ||
+ | </ | ||
+ | |||
+ | ==== Configuration du logstash collecteur ==== | ||
+ | |||
+ | |||
+ | Le serveur logstash centralisant les logs a juste besoin d'une nouvelle entrée lui indiquant qu'il doit passer par un broker de type redis, en lui précisant son adresse: | ||
+ | |||
+ | |||
+ | CONF ICI | ||