Показать относительное время на основе метки времени - PullRequest
0 голосов
/ 08 апреля 2019

Я использую Kibana, чтобы показать статусы нескольких микросервисов, основываясь на самых актуальных значениях для каждого. Я хотел бы заменить формат 8 апреля 2019 года, 14: 37: 13.173 чем-то вроде 2 минут назад или 2 минут 21 секунду назад. Я знаю, что могу фильтровать последние 15 минут для записей данных Kibana, но это не показывает, как давно были обновлены все службы.

Я пытался перейти к шаблонам индекса и изменить шаблон даты, но он не требует функций, а только форматирует. Я мог бы добавить еще одно поле, которое будет отправляться каждую минуту, но это просто напрасно тратит ресурсы и усложняет все.

1 Ответ

0 голосов
/ 17 апреля 2019

Я смог решить проблему, как только узнал, что Scripted Fields существует, поэтому я показал, как давно было обновление:

if(Math.round((new Date().getTime()-doc['@timestamp'].value)/1000)>7200){
    return Math.round((new Date().getTime()-doc['@timestamp'].value)/3600000) + " hours ago";
}else if(Math.round((new Date().getTime()-doc['@timestamp'].value)/1000)>3600){
    return Math.round((new Date().getTime()-doc['@timestamp'].value)/3600000) + " hour ago";
}else if(Math.round((new Date().getTime()-doc['@timestamp'].value)/1000)>120){
    return Math.round((new Date().getTime()-doc['@timestamp'].value)/60000) + " minutes ago";
} else if(Math.round((new Date().getTime()-doc['@timestamp'].value)/1000)>60){
    return Math.round((new Date().getTime()-doc['@timestamp'].value)/60000) + " minute ago";
}else {
    return Math.round((new Date().getTime()-doc['@timestamp'].value)/1000)  + " seconds ago";
}
...