Я использую logstash 2.3.4
Я получаю строки, которые в основном представляют собой журналы Apache с небольшой оценкой в конце (рассчитывается с помощью машинного обучения, благодаря Spark). Вот как выглядит строка:
hackazon.lc:80 192.168.100.133 - - [28/Jul/2016:11:07:46 +0200] "GET / HTTP/1.1" 200 10442 "http://192.168.100.123/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36" pred:0.0859964494393
Как видите, первая часть — это стандартный журнал Apache, а конец — pred:0.0859964494393
.
Логи обрабатываются ELK для визуализации, а так же хочу иметь какие-то метрики на счет под названием pred
. Поэтому я использовал вариант timer
из metrics
. Вот мой файл конфигурации logstash:
input {
file {
path => '/home/spark/LogStash/*'
start_position => "beginning"
}
}
filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG} pred:%{NUMBER:pred_score}"}
}
if "_grokparsefailure" in [tags] {
drop { }
}
mutate {
convert => {"pred_score" => "float"}
}
geoip {
source => "clientip"
}
metrics {
timer => ["pred_score" , "%{duration}"]
}
}
output {
# elasticsearch { }
stdout { codec => rubydebug }
# riemann{
# map_fields => true
# }
}
Я ожидал получить результат со средним значением, топором и т. Д. ... Предварительного счета. Однако у меня есть только некоторые 0, кроме количества и ставок.
Вот один из выходных данных timer :
{
"@version" => "1",
"@timestamp" => "2016-07-28T09:11:39.522Z",
"message" => "thamine-OptiPlex-755",
"pred_score" => {
"count" => 10,
"rate_1m" => 0.5533102865966679,
"rate_5m" => 1.2937302900528778,
"rate_15m" => 1.490591754983121,
"min" => 0.0,
"max" => 0.0,
"stddev" => 0.0,
"mean" => 0.0,
"p1" => 0.0,
"p5" => 0.0,
"p10" => 0.0,
"p90" => 0.0,
"p95" => 0.0,
"p99" => 0.0,
"p100" => 0.0
}
}
Вы знаете, что я делаю неправильно?
Заранее спасибо !