从时间序列数据建立基线的算法
Algorithms for establishing baselines from time series data
在我的应用程序中,我收集了很多 指标:hardware/native 系统指标(例如CPU 负载、可用内存、交换内存、网络 IO在数据包和字节 sent/received 等方面)以及 JVM 指标(垃圾收集器、堆大小、线程利用率等)以及应用程序级指标(仅对我的应用程序有意义的工具,例如,每分钟订单数等)。
在整个一周、一个月、一年中,我在这些指标中看到 trends/patterns。例如,当 cron 作业都在午夜开始时,我看到 CPU 并且在生成报告时磁盘抖动等
我正在寻找一种将 assess/evaluate 指标作为 healthy/normal 与 unhealthy/abnormal 相比的方法,但这需要考虑这些模式。例如,如果 CPU 每晚午夜左右(+/- 5 分钟)出现峰值,则应将其视为“正常”并且不会触发警报。但是,如果 CPU 在一天的 "low tide" 期间固定,比如在 11:00 上午和中午之间,那肯定会触发一些危险信号。
我有能力将我的指标存储在时间序列数据库中,如果这有助于启动此分析过程,但我对我可以利用的算法、方法和策略一无所知建立这些作为时间函数的周期性 "baselines"。显然,这样的系统需要预先播种,甚至需要使用映射到 normal/abnormal 值的历史数据进行训练(这就是为什么我正在学习将时间序列数据库作为底层存储的原因),但这是对我来说是新领域,我什至不知道从什么开始谷歌搜索,以便在搜索结果中返回 meaningful/relevant/educated 候选解决方案。有什么想法吗?
您可以根据日期和时间将每个指标(CPU 负载、可用内存、交换内存、网络 IO)分类为好或坏。
为给定的时间范围提出一组数据,其中包含指标值以及它们是好是坏。使用 70% 的数据以及数据中的好和坏答案来训练模型。
然后使用另外 30% 的没有答案的数据测试训练好的模型,看看你是否从模型中得到了预测结果(好,坏)。您可以使用分类算法。
在我的应用程序中,我收集了很多 指标:hardware/native 系统指标(例如CPU 负载、可用内存、交换内存、网络 IO在数据包和字节 sent/received 等方面)以及 JVM 指标(垃圾收集器、堆大小、线程利用率等)以及应用程序级指标(仅对我的应用程序有意义的工具,例如,每分钟订单数等)。
在整个一周、一个月、一年中,我在这些指标中看到 trends/patterns。例如,当 cron 作业都在午夜开始时,我看到 CPU 并且在生成报告时磁盘抖动等
我正在寻找一种将 assess/evaluate 指标作为 healthy/normal 与 unhealthy/abnormal 相比的方法,但这需要考虑这些模式。例如,如果 CPU 每晚午夜左右(+/- 5 分钟)出现峰值,则应将其视为“正常”并且不会触发警报。但是,如果 CPU 在一天的 "low tide" 期间固定,比如在 11:00 上午和中午之间,那肯定会触发一些危险信号。
我有能力将我的指标存储在时间序列数据库中,如果这有助于启动此分析过程,但我对我可以利用的算法、方法和策略一无所知建立这些作为时间函数的周期性 "baselines"。显然,这样的系统需要预先播种,甚至需要使用映射到 normal/abnormal 值的历史数据进行训练(这就是为什么我正在学习将时间序列数据库作为底层存储的原因),但这是对我来说是新领域,我什至不知道从什么开始谷歌搜索,以便在搜索结果中返回 meaningful/relevant/educated 候选解决方案。有什么想法吗?
您可以根据日期和时间将每个指标(CPU 负载、可用内存、交换内存、网络 IO)分类为好或坏。 为给定的时间范围提出一组数据,其中包含指标值以及它们是好是坏。使用 70% 的数据以及数据中的好和坏答案来训练模型。 然后使用另外 30% 的没有答案的数据测试训练好的模型,看看你是否从模型中得到了预测结果(好,坏)。您可以使用分类算法。