Я сталкиваюсь со средой, в которой необходимо "отслеживать" данные временных рядов и проверять, выполняют ли эту работу службы, выполняющие вставки.
Данные поступают из разных источников и имеют структуру
time, source_id, data_id, json_data
Поскольку данные поступают из внешних источников, всегда может быть ситуация, когда некоторые источники не работают или не предоставляют данные длявсе data_ids .
Теперь они могут иметь три вида ошибок:
- критические : некоторые другие службы данных полагаются на данные, которыедолжен быть доступен для некоторых выбранных data_ids .Они не могут работать без этих данных.
ошибка : некоторые службы ожидают данные для некоторых data_ids .Такие услуги не являются критическими.Они также не предоставляют никаких соответствующих данных.Ошибка не появляется немедленно, только если данные временных рядов отсутствуют в течение более длительного периода (несколько часов)
слабое влияние : отсутствует источник.Предположим, что служба извлекает данные временного ряда для некоторого data_id .Этот сервис может получать данные только от одного source_id вместо всех доступных source_ids
Так что я не уверен, какое будет лучшее решениеи поиск мудрого выбора для работы с этим environemnet.
Решения, которые я думаю о:
Прикладной уровень.За критические ошибки.Написание журнала сообщений с уровнем Ciritical.Таким образом, они должны быть обнаружены быстро на кибане, например.Для второго типа ошибок я мог бы сделать то же самое и использовать некоторый уровень лога costum, чтобы также были обнаружены виды ошибок.Возврат: некритические ошибки будут обнаружены с небольшим опозданием.
Подход к мониторингу: для каждой ( source_id , data_id ) выборки данныхиз базы данных и проверьте, есть ли какие-либо "аномалии" в том смысле, что данные отсутствуют (больше данных, чем ожидалось, это нормально).Недостатки: думаю, такой подход может быть немного интенсивным.Также есть много data_ids , которые не используются.Таким образом, они могут выдавать ошибку, но на самом деле они не актуальны.Кроме того, data_ids может меняться со временем.
Существует ли какой-либо наилучший подход для решения такой проблемы?Может быть какое-то решение поверх базы данных, поэтому код не нужен.
Надеюсь, что описание проблемы понятно.Ждем вашего опыта и идей!
PS: некоторые технические подробности
В настоящее время большая часть данных находится в базе данных postgresql.Сейчас стек - это python, elk, tableau.