Les filtres
Définition :
Le GROS point for de logstash, c'est sa capacité à pouvoir filtrer tous les types possibles de données. Il existe de nombreux plugins qui permetttent de traiter vos données
Ils permettent :
d'extraire les données
d'analyser les données
de nettoyer les données
d'ajouter des champs
de supprimer des champs
De détecter du texte en fonction d'un pattern et de le parser
Des outils comme grok qui se basent sur des expressions régulières permettent de détecter des patterns dans les données
aggregate alter anonymize collate csv cidr clone cipher checksum date de_dot dns drop elasticsearch extractnumbers environment elapsed fingerprint geoip grok i18n json json_encode kv mutate metrics multiline metaevent prune punct ruby range syslog_pri sleep split throttle translate uuid urldecode useragent xml zeromq
Exemple : Grok les regex sous hormones
Grok vous permet de parser un message et de stocker son contenu dans différents champs. (Très utile pour les fichiers de log)
Grok est livré avec des pattern pré-définis comme (Syslog, Apache, ...)
Il est possible de définir ses propres patten
Grok debugger: http://grokdebug.herokuapp.com/
Syntaxe : La syntaxe
filter {
# Lecture d'un fichier csv
csv {
columns => ["col1","col2","col3"]
separator => ";"
}
}
filter {
mutate {
gsub => [
# Remplace tous les slashes par des underscore
"fieldname", "/", "_",
# Remplace les backslashes, point d'interrogation, dièse, et tiret
# par un point "."
"fieldname2", "[\\?#-]", "."
]
}
}
Remarque : Remarque
Il est aussi possible d'écrire facilement son propre plugin de filtre en ruby en plaçant l'arborescence suivante avec les fichiers de configuration
logstash/filters/mon_plugin.rb