sakura0106/system-log-anomaly-detection
GitHub: sakura0106/system-log-anomaly-detection
基于 BiGRU 多任务神经网络的分布式存储系统日志异常检测项目,能够识别异常事件、定位异常行范围并分类故障类型。
Stars: 0 | Forks: 0
# 系统日志异常检测
这是一个端到端的数据科学与网络安全项目,旨在用于检测、定位和分类分布式存储系统日志中的异常事件。
## 概述
系统日志通常包含服务降级、资源压力、状态冲突和异常执行流的早期信号。本项目将每条日志样本视为一个多行序列,并构建了一个神经序列模型,以在样本级别和行跨度级别识别异常事件。
该模型可预测:
- 日志样本是否包含异常
- 主要异常跨度的起止行
- 异常类别,例如超时重试、资源耗尽、状态冲突、步骤缺失或重复事件
该实现结合了轻量级的日志特征工程与基于 BiGRU 的多任务模型。它被设计为一个兼具数据科学与网络安全双重特性的紧凑且可复现的项目。
## 仓库结构
```
.
+-- data/
| +-- train.csv # 100-row sample
| +-- test.csv # 100-row sample
| +-- README.md
+-- scripts/
| +-- train.py # cross-validation and model fitting
| +-- predict.py # inference with a trained checkpoint
+-- src/log_anomaly_detection/
| +-- __init__.py
| +-- constants.py # labels, regex patterns, keyword dictionaries
| +-- preprocessing.py # log normalization and feature extraction
| +-- dataset.py # PyTorch dataset and batch collation
| +-- model.py # BiGRU model definition
| +-- training.py # training, scoring, decoding, submission writing
| +-- modeling.py # compatibility exports
+-- requirements.txt
+-- README.md
```
遗留的分析脚本、图表和生成的模型输出被特意排除在版本控制之外。
## 数据
本仓库包含一个精简的 100 行样本,用于代码演示和仓库审查。
预期的训练集列:
- `id`
- `log_text`
- `has_anomaly`
- `primary_start_idx`
- `primary_end_idx`
- `primary_anomaly_type`
- `all_spans`
预期的测试集列:
- `id`
- `log_text`
## 快速开始
在 `requirements.txt` 中安装依赖,或者使用已启用 CUDA 的 PyTorch 的现有 Conda 环境。在原始工作区中,该项目使用名为 `deeplearning` 的 Conda 环境运行。
对包含的样本运行快速的 CUDA 冒烟测试:
```
conda run -n deeplearning python scripts/train.py --mode cv --epochs 1 --batch-size 8 --device cuda
```
训练一个 checkpoint 并生成示例提交结果:
```
conda run -n deeplearning python scripts/train.py --mode fit --epochs 1 --batch-size 8 --device cuda
```
从保存的 checkpoint 运行推理:
```
conda run -n deeplearning python scripts/predict.py --device cuda
```
如果在另一台机器上不可用 CUDA,请将 `--device cuda` 替换为 `--device cpu`。
生成的产出文件会写入 `models/` 和 `outputs/` 目录,这两个目录均被 Git 忽略。
## 模型
该模型使用的行级表示构建自以下内容:
- 标准化的字符 n-gram 特征
- 来自 INFO、WARN 和 ERROR 行的日志严重性信号
- 异常类型关键词指示符
- segment-ID 计数特征
- 每个日志序列内的相对位置特征
这些特征被传入一个双向 GRU 编码器,该编码器具有四个预测头:
- 起始行分类
- 结束行分类
- 异常跨度评分
- 样本级别的异常类型分类
这种结构允许模型在同一个训练 pipeline 中检测异常、定位其主要跨度并对其故障模式进行分类。
## 输出
预测脚本会生成一个提交格式的 CSV 文件,包含以下字段:
- `id`
- `has_anomaly`
- `primary_start_idx`
- `primary_end_idx`
- `primary_anomaly_type`
- `all_spans`
## 许可证
本项目基于 MIT License 授权。
标签:PyTorch, 凭据扫描, 序列模型, 异常检测, 数据科学, 深度学习, 网络安全, 资源验证, 逆向工具, 隐私保护