【问题标题】:How to detect anomalous resource consumption reliably?如何可靠地检测异常资源消耗?
【发布时间】:2010-09-28 04:21:05
【问题描述】:

这个问题是关于一整类类似的问题,但我会作为一个具体的例子来问它。

我有一个带有内容波动的文件系统的服务器。我需要监视此文件系统上的可用空间,以确保它不会被填满。为了争论,我们假设如果它填满了,服务器就会宕机。

它是什么并不重要——例如,它可能是一个“工作”队列。

在“正常”操作期间,可用空间在“正常”范围内变化,但可能会出现问题:

  • 其他一些(可能是外部的) 增加工作的组件可能会用完 控制权
  • 某些删除工作的组件卡住了,但仍未检测到

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

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

我很欣赏有其他解决方案,例如在根本问题上投入更多存储空间,但我实际上遇到过 1000 次还不够的情况。

考虑存储历史测量值的算法很好,但最好使用最小化历史数据量的动态算法。


我已经接受了弗兰克的回答,现在我要回到绘图板上深入研究他的参考资料。

我认为有三种情况值得关注,但不按顺序排列:

  1. “Harrods 的促销活动刚刚开始”场景:以一秒的分辨率出现的活动高峰“不在现实中”,但并不代表资源枯竭的真正危险;
  2. “全球变暖”情景:需要规划(相对)稳定增长;和
  3. “Google 主动向我发送了一份索引副本”场景:这将在相对较短的时间内耗尽我的所有资源,除非我采取措施阻止它。

从系统管理员的角度来看,这是(我认为)最有趣和最具挑战性的最后一个。

【问题讨论】:

    标签: algorithm sysadmin false-positive resource-monitor


    【解决方案1】:

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

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

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

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

    【讨论】:

    • +1 弗兰克,感谢您的周到反应。我探索了排队论;以及统计平滑、卡尔曼滤波等。但剩下的一个大问题是如何区分突然爆发的活动和即将发生的灾难。
    • 顺便说一句,Tamino 博客上文章的超级链接
    • 我认为这个问题类似于 tamino 处理的问题。活动的突然爆发就像“天气变化”(短期噪音),而您想要识别的就像“气候变化”(长期趋势)。因此,您可能可以从 GW 问题中继承一些技术。
    • tamino 还描述了一种可能相关的技术 - 但不幸的是,我找不到我想要的帖子。评论长度太短了,无法描述,所以我将添加到我的答案中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-30
    • 1970-01-01
    • 2015-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多