我已经建立了一个带有服务器的实验室,它使用 LibreNMS 每 5 分钟提取一些网络设备(主要是 Juniper 和 Brocades)的统计信息,并将收集到的数据转发到 influxdb。我每 5 分钟就会收到很多数据,但我想关注的是接口带宽使用情况。我有 ifOutOctets_rate 和 ifInOctets_rate 数据点,这些数据点似乎是从 LibreNMS 以及原始接口计数器计算的字节/秒。
我最初的目标是设置 influxdb 和 Kapacitor 来了解每个接口的使用历史,并检测任何异常情况。我希望检测到的异常情况是接口上的流量“最大”,或者在工作时间下降到零。当一个接口达到或超过过去 7 天看到的最大使用带宽并保持该速率至少 15 分钟(3 个轮询周期)时,该接口被视为“最大化”。
我是 influxdb/kapacitor 的新手,从来没有做过任何异常检测,所以我想我会边做边学。现在我已经建立了实验室并让组件工作和数据流动,我不知道下一步该去哪里。
我曾尝试在 Kapacitor 中使用 Holt-Winter 函数,但我想我陷入了“预测”。似乎我必须有一个“预测”来比较我的实时数据。但它似乎只能在 24 小时范围内工作,即便如此,当我更多地了解算法以及如何将其应用于数据时,也需要进行一些调整。
那时我想我应该看看是否有人有任何指示。我很难找到有关 influxdb 和网络流量数据的任何示例。这是我第一次涉足这些工具以及如此复杂的“数学”。我怀疑我需要执行一个 TICK 脚本来将输入/输出八位字节数据(分批?)分流到外部进程,该进程将对其进行处理并可能将结果保存回 influxdb 以进行可视化。(至少在我学习的时候。)
我的主要问题是,是否有人可以引用“网络带宽”特定示例来说明如何设置 kapacitor 来处理历史并了解 7 天的 24 小时周期。(因为周末/节假日的模式与正常工作日明显不同。)我不反对使用其他工具/方法,但更愿意在学习这个工具时坚持使用 Kapacitor 和 Influxdb 来帮助学习理论。当系统检测到带宽异常并且检测到它已经结束时,TICK 脚本只会被写入文件。
最后,我还要问我上面描述的方法是否实用?从某种意义上说,我并没有过度估计这些工具的能力,也没有不必要地过度复杂化我的学习场景?