2017-02-02 23 views
0

Мне нужно взять миллионы записей из журнала (которые охватывают последние пару лет) и каким-то образом, используя поле метки времени, определить, какие периоды, используя дни недели в качестве критериев группировки, показывают наименьшую активность. Цель состоит в том, чтобы показать, что, например, среда с 02:00 до 04:00 исторически показала самый низкий уровень активности. Итак, я представляю график с периодами времени по оси Х (00:00 - 00:14, 00:15 - 00:29, 00:30 - 00:44 ... или аналогичным ... вы получаете идею) и какое-то представление активности журнала по оси Y. Он отобразит 7 графических строк, по одному для каждого дня недели. Это сделало бы тривиальным определить из графика, который является самым тихим.Использование Elastic/Kibana для поиска шаблонов в частоте записей в журнале?

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

Есть функция или плагин, или что-то, у которого уже есть эта возможность? Или мне нужно будет разработать собственное решение?

ответ

0

В конце концов, я отказался от Kibana/Elastic. Там, наверное, способ сделать это, но вместо этого, я просто использовал MySQL:

SELECT 
    t.bucket, 
    COALESCE(SUM(total), 0) AS total 
FROM 
    tmp_time_bucket t 
     LEFT JOIN 
    (SELECT 
     DATE_FORMAT(FROM_UNIXTIME(FLOOR((UNIX_TIMESTAMP(launchtime))/300) * 300), '%H:%i:00') AS bucket, 
      COUNT(launchtime) AS total 
    FROM 
     launchjobs 
    WHERE 
     launchtime <> '0000-00-00 00:00:00' 
      AND DAYNAME(launchtime) = 'wednesday' 
    GROUP BY FROM_UNIXTIME(FLOOR((UNIX_TIMESTAMP(launchtime))/300) * 300) 
    ORDER BY launchtime ASC) m ON t.bucket = m.bucket 
GROUP BY bucket 
ORDER BY bucket ASC 

... где tmp_time_bucket таблица с одной VARCHAR (8) колонка с именем bucket, который содержит все 288 5 минут времени ведер в 24 часа (так, "00:00:00", "00:05:00", ... "23:50:00", "23:55:00", вы поняли)

Я запускал это 7 раз, один раз на каждый день и экспортировал результаты в CSV. Затем я использовал http://plot.ly и импортировал данные и сделал необходимый график, который (если вам интересно) можно посмотреть здесь: https://plot.ly/~theplankmeister/7/?share_key=FZERWAphDIQsa1swGtixb7

Глядя на график, я легко вижу, что ответ, который я искал в данных четверг 22:45 до пятницы 00:55.

Надеюсь, это поможет кому-то в будущем!