如何可靠地检测异常资源消耗?

时间:2008-12-23 13:35:09

标签: algorithm sysadmin false-positive resource-monitor

这个问题是关于一类类似的问题,但我会以此为例。

我的服务器文件系统内容有波动。我需要监视此文件系统上的可用空间,以确保它不会填满。为了论证,让我们假设如果填满,服务器就会崩溃。

它究竟是什么并不重要 - 例如,它可能是“工作”的队列。

在“正常”操作期间,可用空间在“正常”范围内变化,但可能存在病理:

  • 其他一些(可能是外部的) 添加工作的组件可能会耗尽 控制
  • 删除工作的某个组件会占用,但仍未检测到

该过程的统计特征基本上是未知的。

我正在寻找的是一种算法,它可以作为输入,定时测量可用空间(欢迎输入的替代建议),并产生输出,当事情“异常”时报警和文件系统“可能会填满”。避免假阴性显然很重要,但几乎同样重要的是避免误报,以避免麻痹引起警报的系统管理员的大脑。

我很欣赏有其他解决方案,例如在底层问题上投入更多存储空间,但实际上我经历过1000次不足的实例。

考虑存储的历史测量结果的算法很好,尽管最小化历史数据量的实时算法是首选。


我接受了弗兰克的回答,现在回到绘图板深入研究他的参考文献。

我认为有三种情况感兴趣,而不是按顺序:

  1. “Harrods'销售刚刚开始”的情景:在一秒钟的分辨率“离开表盘”的活动高峰期,但并不代表资源枯竭的真正危险;
  2. “全球变暖”情景:需要规划(相对)稳定的增长;和
  3. “Google正在向我发送未经请求的指数副本”方案:除非我采取措施阻止它,否则会耗费相对较短的所有资源。
  4. 从系统管理员的角度来看,这是(我认为)最有趣,最具挑战性的最后一个......

1 个答案:

答案 0 :(得分:1)

如果它实际上与工作队列有关,那么排队理论可能是回答问题的最佳途径。

对于一般情况,您可以尝试对历史数据进行(多次?)线性回归,以检测资源使用中是否存在统计上显着的上升趋势,如果它继续存在则可能导致问题(您可能也能够预测它必须继续导致这种技术出现问题的时间 - 只需为'问题'设置一个阈值,并使用趋势的斜率来确定它需要多长时间。你不得不玩这个和你收集的变量,看看你是否有可以发现的任何统计上显着的关系。

虽然它涵盖了一个完全不同的主题(全球变暖),但我发现tamino的博客(tamino.wordpress.com)是一个非常好的资源,对数据的统计分析充满了知识和未知。例如,请参阅this发布。

编辑:根据我的评论,我认为问题有点类似于GW问题。你有短期的活动爆发,平均为零,长期趋势叠加你感兴趣。也可能有不止一个长期趋势,并且它会不时变化。 Tamino描述了一种可能适用于此的技术,但遗憾的是我无法找到我想到的帖子。它涉及沿数据滑动回归(想象多条线适合噪声数据),并让数据选择拐点。如果你能做到这一点,那么你或许可以确定趋势的重大变化。不幸的是,它可能只能在事后识别,因为您可能需要积累大量数据才能获得重要性。但它可能仍然及时阻止资源枯竭。至少它可以为您提供一种强有力的方法来确定您将来需要哪种安全边际和资源。