#time-series
Вопрос:
Я использую базу данных временных рядов для представления некоторых сетевых показателей, таких как время загрузки или время поиска DNS для некоторых конечных точек. Однако иногда мера дает сбой, например, если конечная точка не работает или если возникла проблема с сетью. В этих случаях, что следует делать в соответствии с лучшими практиками? Должен ли я сообщить о невозможном значении, например -1
, или просто вообще ничего не записывать в базу данных?
Проблема, которую я вижу, когда ничего не пишу, заключается в том, что я не могу знать, работает ли мой тест больше или это проблема с конечной точкой/сетью.
Комментарии:
1. Я не знаю, применимо ли это к вашей проблеме. Но если у вас есть такая ситуация в Swift, вы можете просто установить неизвестное значение
nil
, что означает, что допустимого значения нет (я попробовал, но не получил допустимого ответа). То же самое, конечно, можно сделать и в других случаях, если для некоторых возможных значений задано специальное значение, например -1, если ясно, что означает это специальное значение.2. Если вы обнаружите, что у вас возникнет несколько различных проблем/проблем, то лучшая практика, которую я видел, — это создать маску флага качества. Вы можете сохранить его в виде 1 байта, где каждый из 8 битов (2^8 = 256) может представлять некоторое качество. Таким образом, 1 или 00000001 может быть в порядке, и все, что выше 200, может быть вашими кодами ошибок. Таким образом, 11001000 может быть всеми различными кодами ошибок, такими как — процесс запущен, но значение x отсутствует и т. Д. Вы можете установить диапазоны в своей документации для того, каким может быть каждый диапазон, т. Е. Сеть и оборудование. Затем сохраните этот байт, и у вас будет легко хранимый (пробел) и очень подробный (до 256 значений)
Ответ №1:
Наилучшая практика заключается в том, чтобы фиксировать сбои в их собственных временных рядах для отдельного анализа.
Сбои или плохие показания приведут к искажению ряда, поэтому их следует отфильтровать или заменить прогнозируемым значением для «нормальных» событий. Прелесть временного ряда заключается в том, что одна мера (время) является общепринятой во всем мире, поэтому легко проецироваться между двумя известными точками, когда одна из них отсутствует.
Информация об отказе также важна, так как она является ранним индикатором проблем или сбоев в работе вашей цели. Вы можете записать сетевую ошибку и другую диагностическую информацию, чтобы определить тенденции и убедиться, что проблема возникла у клиента, а не у вашего сервера. Кроме того, может быть развернуто несколько экземпляров для мониторинга одной и той же цели, чтобы они подавляли шум друг друга.
Вы также можете отслеживать известную конечную точку, такую как страница Google 204, чтобы обеспечить подключение к сети. Если все мониторы сообщают об ошибке подключения к вашему сайту, но не к известной конечной точке, ваш сервер действительно не работает.