В моем приложении я собираю много метрик: метрики аппаратного обеспечения / собственной системы (такие как загрузка ЦП, доступная память, память подкачки, сетевой ввод-вывод в виде пакетов и байтов, отправленных / полученных и т. Д.)), а также метрики JVM (сборщик мусора, размер кучи, использование потоков и т. д.), а также метрики уровня приложения (инструментарии, которые имеют значение только для моего приложения, например, # заказов в минуту и т. д.).
В течение недели, месяца, года я вижу тенденции / закономерности в этих показателях.Например, когда все задания cron запускаются в полночь, я вижу, как ЦП и диск трескаются при создании отчетов и т. Д.
Я ищу способ оценить / оценить показатели как здоровые / нормальные по сравнению с нездоровыми / ненормальнымино это принимает эти модели во внимание.Например, если центральный процессор каждую ночь всплывает (+/- 5 минут), это следует считать « нормальным », а не отключать оповещения.Но если центральный процессор во время «отлива» в течение дня, скажем, между 11:00 и полуднем, это определенно должно вызвать срабатывание некоторых красных флажков.
У меня есть возможность хранить свои метрики за раз-серии базы данных, если это вообще помогает запустить этот аналитический процесс, но я не имею ни малейшего понятия о том, какие алгоритмы, методы и стратегии я мог бы использовать, чтобы установить эти циклические "базовые показатели", которые действуют как функция времени.Очевидно, что такая система должна была бы быть предварительно отобранной или даже обученной с историческими данными, которые были сопоставлены с нормальными / ненормальными значениями (именно поэтому я учусь к базе данных временных рядов в качестве основного хранилища), но это новая территориядля меня, и я даже не знаю, с чего начать Google, чтобы вернуть значимых / релевантных / образованных кандидатов решения в результатах поиска.Есть идеи?