2016-06-07 7 views
0

У меня проблема с именами полей динамики в моей конфигурации Logstash. Это мой тест конфигурации: logstash - имена динамических полей

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 } 
} 

и вот мой результат: (только конец выхода)

{ 
     "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" 
    ] 
} 

Почему поле сервер уже не надо logstash в качестве значения из входные журналы? % {logsource} работает для метр опция, так почему бы и нет для add_field? Thx для справки.

ответ

0

Когда событие журнала получено, информация SYSLOGBASE извлекается из содержимого. Здесь определяется значение% {logsource}. Если событие не поступает из записи журнала, содержащей информацию SYSLOGBASE, то logsource будет неопределенным.

Когда вы получаете начальное сообщение, logsource определяется в области видимости и добавляется в ваше сообщение.

Плагин metrics генерирует новое сообщение за интервал. Это сообщение генерируется с нуля, поэтому оно не имеет значения logsource или чего-либо еще, что обычно получается из отдельной записи в журнале.

+0

Можно ли сделать обходной путь для добавления динамических данных из исходного журнала в метрическое поле? – Rohlik

+0

Не в соответствии с документацией. Возможно, запрос или вопрос об улучшении для автора ... https://github.com/logstash-plugins/logstash-filter-metrics/issues –

Смежные вопросы