Разобрать целое и показать на временной шкале в Кибане
Вот пользовательский интерфейс Kibana, и я хочу проанализировать некоторое целое число в сообщении. Число в конце сообщения - это время процесса для одного метода, и я хочу показать среднее время обработки в часах в Кибане. Это возможно?
Я попробовал некоторые conf в logstash:
filter{
json{
source => "message"
}
grok {
match => {
"message" => "^Finish validate %{NUMBER:cto_validate_time}$"
}
}
grok {
match => {
"message" => "^Finish customize %{NUMBER:cto_customize_time}$"
}
}
}
Оно работает. Но когда я создаю временную диаграмму, я не могу получить новое поле.
1 ответ
Поскольку вас не волнуют проблемы с производительностью, вы можете создать сценарий с именем process_time
в вашем шаблоне индекса с помощью следующего безболезненного кода. То, что он делает, просто берет последнее числовое значение из вашего message
поле.
def m = /.*\s(\d+)$/.matcher(doc['message.keyword'].value);
if ( m.matches() ) {
return m.group(1)
} else {
return 0
}
Затем вы можете построить график, чтобы показать среднее время процесса по часам. Перейдите на вкладку "Визуализация" и создайте новую вертикальную гистограмму. На оси Y вы создадите среднюю агрегацию на process_time
поле и на оси X вы будете использовать агрегирование гистограммы даты в поле вашей отметки времени. Образец показан ниже:
Примечание. Вам также необходимо добавить следующую строку в elasticsearch.yml
файл и перезагрузите ES:
script.painless.regex.enabled: true
ОБНОВИТЬ
Если вы хотите сделать это через Logstash, вы можете добавить следующее grok
фильтр
filter{
grok {
match => {
"message" => "^Finish customize in controller %{NUMBER:cto_customize_time}$"
}
}
mutate {
convert => { "cto_customize_time" => "integer" }
}
}