2016-06-07 1 views
0

J'ai un problème avec les noms de champs dynamiques dans ma configuration Logstash. Voici ma config de test: logstash - noms de champs dynamiques

input { 
generator { 
    lines => [ "May 15 13:42:55 logstash puppet-agent[3551]: Finished catalog run in 43", 
       "May 16 14:57:07 logstash puppet-agent[3551]: Starting Puppet client version" ] 
    count => 7 
} 
} 
filter { 
    grok { 
    match => [ "message", "%{SYSLOGBASE} %{WORD:log}.*" ] 
    } 

     if "Starting" in [log] { 
     metrics { 
      meter => [ "%{logsource}.%{log}" ] 
      add_tag => [ "metric" ] 
      add_field => { "server" => "%{logsource}" 
         "bad" => "true" } 
      clear_interval => 5 
       } 
     } 
} 
output { 
     stdout { codec => rubydebug } 
} 

et voici ma sortie: (juste fin de la production)

{ 
     "message" => "May 15 13:42:55 logstash puppet-agent[3551]: Finished catalog run in 43", 
     "@version" => "1", 
    "@timestamp" => "2016-06-07T07:37:50.138Z", 
      "host" => "logstash.test.lan", 
     "sequence" => 6, 
    "timestamp" => "May 15 13:42:55", 
    "logsource" => "test", 
     "program" => "puppet-agent", 
      "pid" => "3551", 
      "log" => "Finished" 
} 
{ 
     "message" => "May 16 14:57:07 logstash puppet-agent[3551]: Starting Puppet client version", 
     "@version" => "1", 
    "@timestamp" => "2016-06-07T07:37:50.138Z", 
      "host" => "logstash.test.lan", 
     "sequence" => 6, 
    "timestamp" => "May 16 14:57:07", 
    "logsource" => "test", 
     "program" => "puppet-agent", 
      "pid" => "3551", 
      "log" => "Starting" 
} 
{ 
     "@version" => "1", 
    "@timestamp" => "2016-06-07T07:37:50.288Z", 
     "message" => "Counting: 7", 
     "logstash.Starting" => { 
      "count" => 7, 
     "rate_1m" => 0.0, 
     "rate_5m" => 0.0, 
     "rate_15m" => 0.0 
    }, 
     "server" => "%{logsource}", 
      "bad" => "true", 
      "tags" => [ 
     [0] "metric" 
    ] 
} 

Pourquoi champ serveur ont logstash de ne pas que la valeur de la les journaux d'entrée? % {logsource} fonctionne pour compteur option, alors pourquoi pas pour add_field? Merci de votre aide.

Répondre

0

Lorsqu'un événement de journal est reçu, les informations SYSLOGBASE sont extraites du contenu. C'est là que la valeur% {logsource} est définie. Si l'événement ne provient pas d'une entrée de journal contenant des informations SYSLOGBASE, la source de journal ne sera pas définie.

Lorsque vous recevez un message de démarrage, la source de journal est définie dans la portée et est ajoutée à votre message.

Le plugin metrics génère un nouveau message par intervalle. Ce message est généré à partir de zéro, donc il n'a pas la valeur de la source de journal ou toute autre chose qui serait normalement obtenue à partir d'une entrée de journal individuel.

+0

Est-il possible d'effectuer une solution de contournement pour ajouter des données dynamiques du journal d'origine au champ de mesure? – Rohlik

+0

Non selon la documentation. Peut-être une demande d'amélioration ou une question pour l'auteur ... https://github.com/logstash-plugins/logstash-filter-metrics/issues –