识别导致结构化日志文件中错误的模式

数据挖掘 机器学习
2022-03-04 06:20:38

我目前正在处理来自 IoT 设备的解析日志数据(日志条目每 15 分钟批处理一次)。所有info_*/err_*是相关日志事件的计数:

| machine_id | timestamp           | os_ver | days_since_reboot | cpu_load | info_featA | info_featB | err_badrequests | err_timeoutrequests |
|------------|---------------------|--------|-------------------|----------|------------|------------|-----------------|---------------------|
| 1          | 2020-09-18 12:25:00 | 0.01   | 12                | 0.59     | 12         | 543        | 0               | 0                   |
| 1          | 2020-09-18 12:40:00 | 0.01   | 12                | 0.83     | 1          | 23         | 1               | 0                   |
| ...        | ...                 | ...    | ...               | ...      | ...        | ...        | ...             | ...                 |
| 2          | 2020-10-28 11:40:00 | 0.02   | 2                 | 0.12     | 43         | 54         | 0               | 1                   |
| 2          | 2020-10-28 11:55:00 | 0.02   | 2                 | 0.43     | 32         | 54         | 3               | 5                   |
| 2          | 2020-10-28 12:10:00 | 0.02   | 2                 | 0.23     | 0          | 4          | 0               | 23                  |

我的任务是找到一些可能导致错误事件的常见模式(例如,info_featA条目的增加先于 的正数err_badrequests)。出于这个原因,我曾考虑将错误列重新编码为布尔值(True如果err_*> 0),但我对进行序列分析或查找可能导致错误的条件的正确方法相当迷茫。

此外,错误类型对我的问题不是很重要,因为我只关心是否存在正错误计数(无论其类型如何):

| machine_id | timestamp           | os_ver | days_since_reboot | cpu_load | info_featA | info_featB | has_err |
|------------|---------------------|--------|-------------------|----------|------------|------------|---------|
| 1          | 2020-09-18 12:25:00 | 0.01   | 12                | 0.59     | 12         | 543        | 0       |
| 1          | 2020-09-18 12:40:00 | 0.01   | 12                | 0.83     | 1          | 23         | 1       |
| ...        | ...                 | ...    | ...               | ...      | ...        | ...        | ...     |
| 2          | 2020-10-28 11:40:00 | 0.02   | 2                 | 0.12     | 43         | 54         | 0       |
| 2          | 2020-10-28 11:55:00 | 0.02   | 2                 | 0.43     | 32         | 54         | 1       |
| 2          | 2020-10-28 12:10:00 | 0.02   | 2                 | 0.23     | 0          | 4          | 0       |

目前,我已经创建了滞后变量(最多 2 小时前),以通过相关矩阵检查是否有任何滞后变量与错误计数有某种关联。我很确定这不是解决此类问题的方法。


主要目标是识别(如果有的话)观察到的指标中导致错误的一些常见模式。

1个回答

有几种不同的方法可以对此进行建模。

一种选择是简化问题而忽略时间。拟合机器学习模型,找出与存在错误相关的特征。

另一种选择是将其视为时间序列数据中的事件预测在这种情况下,它将是多元时间序列。