J'ai des fichiers syslog. J'utilise le filtre plug-in logstash syslog pour traiter ces journaux. Je reçois des messages dans le domaine syslog_message
comme celui-ci:comment extraire une partie d'un champ et le stocker dans un autre champ dans le filtre de logstash?
syslog_message:[cdp/interface.ERR] - {- -} Error writing CDP frame on system. Link is down
Mais je veux un nouveau champ qui devrait contenir seulement la partie avant .ERR i.e. « cdp/interface ». Cette partie varie et je ne sais pas combien de types se produiront. Donc, je veux un nouveau champ et je veux stocker cette partie sur ce champ, afin que je puisse tracer le nombre de ces termes dans kibana.
configuration actuelle logstash:
filter {
if [type] == "syslog" {
grok {
match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
add_field => [ "received_at", "%{@timestamp}" ]
add_field => [ "received_from", "%{host}" ]
}
date {
target => "syslog_timestamp"
match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
Après avoir ajouté une nouvelle grok du fichier de configuration tel que suggéré par @val
grok {
match => { "syslog_message" => "\[%{PROG:syslog_type}\.%{LOGLEVEL:syslog_level}\] %{GREEDYDATA:syslog_message}" }
}
Pour certaines des entrées grokparsefailure passe.
Quelques lignes pour lesquelles il ne parvient sont:
syslog_message: [hald.INFO]: Support query handler called
syslog_message:[mgmtd.INFO]: Finished database commit
Toute aide sera appréciée. Merci
Comment se présente votre configuration actuelle de Logstash comme? – Val
J'ai édité avec la configuration logstash actuelle @Val – sabya