算法用于从时间序列数据中建立基线

在我的应用程序中,我收集了大量的指标:硬件/原生系统指标(如CPU负载、可用内存、交换内存、网络IO以发送/接收的数据包和字节计数等),以及JVM指标(垃圾回收、堆大小、线程利用率等),还有应用级指标(仅对我应用有意义的仪表,例如每分钟订单数等)。

在一周、一个月、一年中,我在这些指标中看到了趋势/模式。例如,当午夜时分所有定时任务启动时,我会看到CPU和磁盘的剧烈波动,因为报告正在生成等。

我正在寻找一种方法来评估/判断这些指标是健康/正常还是不健康/异常,但这种方法需要考虑这些模式。例如,如果每晚午夜前后(±5分钟)CPU使用率激增,这应该被认为是“正常”的,不应触发警报。但如果在白天的“低潮”期间,例如上午11点到中午之间,CPU使用率持续高企,那肯定应该触发一些警报信号。

我有能力将我的指标存储在时间序列数据库中,如果这有助于启动这个分析过程的话,但我完全不知道可以利用哪些算法、方法和策略来建立这些作为时间函数的周期性“基线”。显然,这样的系统需要预先填充或甚至使用映射到正常/异常值的历史数据进行训练(这就是为什么我倾向于使用时间序列数据库作为底层存储),但这对我来说是新的领域,我甚至不知道从哪里开始搜索,以便在搜索结果中获得有意义/相关/有见地的解决方案候选。有什么想法吗?


回答:

您可以根据日期和时间将每个指标(CPU负载、可用内存、交换内存、网络IO)分类为好或坏。对于给定的时间范围,创建一组包含指标值及其是否为好或坏的数据。使用70%的数据进行训练,其中包含数据中的好坏答案。然后使用剩余30%的数据(不含答案)测试训练好的模型,看看是否能从模型中得到预测结果(好,坏)。您可以使用分类算法。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注