我面临的环境是必须“监视”时间序列数据并检查执行插入操作的服务是否正在完成工作。
数据来自不同的来源并具有结构
时间,source_id,data_id,json_data
由于数据来自外部来源,因此总有一些情况是某些来源关闭或没有提供所有 data_ids 的数据。
现在他们可能会遇到三种错误:
错误:某些服务需要某些 data_ids 的数据。这类服务并不重要。他们也没有产生任何相关数据。仅当时间序列数据丢失较长时间(几小时)时,错误才会立即出现
影响小:缺少来源。假设服务为某个 data_id 获取时间序列数据。该服务可能仅从一个 source_id 获取数据,而不是所有可用的 source_ids
因此,我不确定最好的解决方案是什么,并且正在寻找明智的选择来处理该环境。
我可以解决的方案:
应用层。对于严重错误。编写日志级别的日志消息。因此,例如应在kibana上快速检测到它们。对于第二种错误,我可以做同样的事情,并使用一些costum loglevel,以便也可以检测到这种错误。 Drowback:非严重错误将被延迟检测到。
监视方法:对于每个( source_id , data_id )从数据库中获取数据,并从数据意义上检查是否存在任何“异常”丢失(可以提供更多的数据,然后可以预期)。缺点:猜测这种方法可能会占用大量CPU。另外,还有许多未使用的 data_ids 。因此,它们可能会产生错误,但它们并不是真正相关的。而且 data_ids 可能会随时间变化。
是否存在针对此类问题的最佳实践方法?可能是数据库之上的一些解决方案,因此不需要代码。
希望问题描述清楚。期待您的经验和想法!
PS:一些技术细节
现在,大多数数据都在postgresql数据库中。 现在堆栈是python,elk,tableau。