Мониторинг вставки данных временных рядов - PullRequest
0 голосов
/ 28 декабря 2018

Я сталкиваюсь со средой, в которой необходимо "отслеживать" данные временных рядов и проверять, выполняют ли эту работу службы, выполняющие вставки.

Данные поступают из разных источников и имеют структуру

time, source_id, data_id, json_data

Поскольку данные поступают из внешних источников, всегда может быть ситуация, когда некоторые источники не работают или не предоставляют данные длявсе data_ids .

Теперь они могут иметь три вида ошибок:

  • критические : некоторые другие службы данных полагаются на данные, которыедолжен быть доступен для некоторых выбранных data_ids .Они не могут работать без этих данных.
  • ошибка : некоторые службы ожидают данные для некоторых data_ids .Такие услуги не являются критическими.Они также не предоставляют никаких соответствующих данных.Ошибка не появляется немедленно, только если данные временных рядов отсутствуют в течение более длительного периода (несколько часов)

  • слабое влияние : отсутствует источник.Предположим, что служба извлекает данные временного ряда для некоторого data_id .Этот сервис может получать данные только от одного source_id вместо всех доступных source_ids

Так что я не уверен, какое будет лучшее решениеи поиск мудрого выбора для работы с этим environemnet.

Решения, которые я думаю о:

  1. Прикладной уровень.За критические ошибки.Написание журнала сообщений с уровнем Ciritical.Таким образом, они должны быть обнаружены быстро на кибане, например.Для второго типа ошибок я мог бы сделать то же самое и использовать некоторый уровень лога costum, чтобы также были обнаружены виды ошибок.Возврат: некритические ошибки будут обнаружены с небольшим опозданием.

  2. Подход к мониторингу: для каждой ( source_id , data_id ) выборки данныхиз базы данных и проверьте, есть ли какие-либо "аномалии" в том смысле, что данные отсутствуют (больше данных, чем ожидалось, это нормально).Недостатки: думаю, такой подход может быть немного интенсивным.Также есть много data_ids , которые не используются.Таким образом, они могут выдавать ошибку, но на самом деле они не актуальны.Кроме того, data_ids может меняться со временем.

Существует ли какой-либо наилучший подход для решения такой проблемы?Может быть какое-то решение поверх базы данных, поэтому код не нужен.

Надеюсь, что описание проблемы понятно.Ждем вашего опыта и идей!

PS: некоторые технические подробности

В настоящее время большая часть данных находится в базе данных postgresql.Сейчас стек - это python, elk, tableau.

...