目录
目录Readme.md

ATLAS - 面向微服务基准的 Trace 监控数据采集与异常检测工具

项目简介

ATLAS是一个基于深度学习的微服务系统异常检测与根因定位框架。该框架通过融合多源观测数据(日志、指标、链路跟踪),实现对微服务系统的智能监控和故障诊断。

核心功能

  • 异常检测: 自动识别系统是否存在异常
  • 根因定位: 精确定位故障发生的服务节点
  • 多源融合: 整合日志、指标、链路跟踪等多维度数据
  • 实时推理: 支持训练好的模型进行实时异常检测
  • 详细分析: 提供丰富的异常分析报告和可视化结果

功能特点

模型架构

  • 单一模型 (Eadro原模型): 端到端的统一异常检测与根因定位
  • 分离模型 (Split Model): 专门化的异常检测器和根因定位器
    • 独立训练模式 (Independent)
    • 顺序训练模式 (Sequential)
    • 两阶段训练模式 (Two-stage)

多源数据支持

  • 日志数据: 结构化日志事件序列
  • 指标数据: 系统性能指标时间序列
  • 链路数据: 分布式追踪延迟信息
  • 图数据: 服务依赖关系图

丰富的评估指标

  • 异常检测: 精确率、召回率、F1分数、AUC
  • 根因定位: Hit Rate@K、NDCG@K、MRR、MAP
  • 端到端: 综合性能评估

详细的结果输出

  • CSV报告: Excel可打开的异常详情表格
  • JSON数据: 完整的技术数据和概率分布
  • 文本摘要: 人类友好的异常分析报告
  • 可视化图表: 混淆矩阵、ROC曲线等

安装说明

环境要求

  • Python 3.7
  • CUDA 11.6
  • 8GB+ RAM

快速安装

# 克隆项目
git clone <repository-url>
cd Eadro-main

# 创建虚拟环境
conda create -n eadro python=3.7
conda activate eadro

# 安装依赖
pip install -r requirements.txt

# 或使用安装脚本
bash install.sh

依赖包

dgl==0.9.1
torch==1.12.1     
numpy==1.21.5   
pandas==1.4.2    
scikit-learn==1.1.2
matplotlib==3.5.2   
seaborn==0.11.2   

快速开始

1. 数据准备

项目支持两个基准数据集:

  • TT (Train Ticket): 火车票预订系统
  • SN (Social Network): 社交网络系统

在使用之前需要对数据进行预处理,命令如下:

pip install drain3
export ROOT_PATH=path/to/the/downloaded/eadro/dataset
cd codes/preprocess/
python parse_raw_records.py
python parse_raw_metrics.py 
python parse_raw_traces.py
python parse_raw_logs.py
python align.py --name TT
python align.py --name SN

2. 模型训练

单一模型训练

cd single_model
python main.py --data TT --epochs 50 --lr 0.001

分离模型训练

cd split_model
# 独立训练模式
python main.py --data TT --training_mode independent --epochs 50

# 顺序训练模式  
python main.py --data TT --training_mode sequential --epochs 50

# 两阶段训练模式
python main.py --data TT --training_mode two_stage --epochs 50

3. 模型推理

单一模型推理

cd single_model
python inference.py \
  --model_path ../outputs/single_model/best_single_model_xxx.ckpt \
  --config_path ../outputs/single_model/model_config_xxx.json \
  --data TT

分离模型推理

cd split_model
python inference.py \
  --anomaly_model_path ../outputs/split_models/anomaly_detection_xxx.ckpt \
  --localization_model_path ../outputs/split_models/root_cause_localization_xxx.ckpt \
  --config_path ../outputs/split_models/model_config_xxx.json \
  --training_mode independent \
  --data TT

项目结构

Eadro-main/
├── README.md                    # 项目说明文档
├── requirements.txt             # Python依赖包
├── install.sh                   # 安装脚本
│
├── single_model/               # 单一模型模块
│   ├── main.py                 # 训练入口
│   ├── inference.py            # 推理脚本
│   ├── model.py                # 模型定义
│   ├── base.py                 # 基础模型类
│   └── comprehensive_evaluation.py  # 全面评估
│
├── split_model/                # 分离模型模块
│   ├── main.py                 # 训练入口
│   ├── inference.py            # 推理脚本
│   ├── split_models.py         # 分离模型定义
│   ├── split_training.py       # 分离训练器
│   ├── model.py                # 基础组件
│   └── comprehensive_evaluation.py  # 全面评估
│
├── codes/                      # 核心代码
│   ├── model.py                # 共享模型组件
│   ├── utils.py                # 工具函数
│   ├── chunks/                 # 预处理数据
│   │   ├── TT/                 # Train Ticket数据集
│   │   └── SN/                 # Social Network数据集
│   └── preprocess/             # 数据预处理脚本
│       ├── align.py            # 数据对齐
│       ├── parse_raw_logs.py   # 日志解析
│       └── parsed_data/        # 解析后数据
│
├── outputs/                    # 模型输出
│   ├── single_model/           # 单一模型权重
│   ├── split_models/           # 分离模型权重
│   └── evaluation_reports/     # 评估报告
│
├── datasets/                   # 原始数据集
│   ├── TT Dataset/             # Train Ticket原始数据
│   └── SN Dataset/             # Social Network原始数据
│
└── result/                     # 训练结果
    └── {hash_id}/              # 按训练配置分组的结果
        ├── params.json         # 训练参数
        ├── running.log         # 训练日志
        └── evaluation/         # 评估结果

模型介绍

单一模型 (Single Model)

  • 架构: 端到端的统一框架
  • 特点: 同时优化异常检测和根因定位任务
  • 适用场景: 任务相关性强,需要联合优化

分离模型 (Split Model)

异常检测模型

  • 功能: 判断系统是否存在异常
  • 输出: 二分类概率 (正常/异常)
  • 特点: 关注全局异常模式

根因定位模型

  • 功能: 定位具体的故障服务节点
  • 输出: 节点异常概率排序
  • 特点: 关注节点级别的局部特征

训练模式

  1. 独立训练: 两个模型完全独立训练,适用于任务差异大的场景
  2. 顺序训练: 先训练检测器,再训练定位器,定位器可利用检测特征
  3. 两阶段训练: 统一框架同时优化两任务,平衡任务关联和分离

结果说明

推理输出文件

1. 异常详情表格 (anomaly_details_*.csv)

字段 说明
时间窗口ID 数据块标识符
检测到异常 模型是否检测到异常
实际异常 真实标签是否为异常
异常概率 异常检测概率 [0-1]
预测异常节点 模型预测的故障节点
实际异常节点 真实的故障节点
检测正确 异常检测是否正确
定位正确 根因定位是否正确

2. 技术数据 (anomaly_details_*.json)

包含完整的概率分布、节点排名等技术细节。

3. 分析报告 (anomaly_summary_*.txt)

人类友好的文本报告,包含:

  • 整体统计信息
  • 异常时间窗口详情
  • 性能分析总结

评估指标

异常检测指标

  • 准确率 (Accuracy): 整体分类正确率
  • 精确率 (Precision): 预测为异常中真正异常的比例
  • 召回率 (Recall): 真实异常中被正确识别的比例
  • F1分数: 精确率和召回率的调和平均
  • AUC: ROC曲线下面积

根因定位指标

  • HR@K: Hit Rate@K,前K个预测中命中的比例
  • NDCG@K: 归一化折损累积增益@K
  • MRR: 平均倒数排名
  • MAP: 平均精度均值

启动后端

后端使用了Django框架,源代码位于ATLAS_backend文件夹中,使用方法:

进入文件夹,执行python manage.py runserver,服务默认运行在8000端口

启动前端

前端使用了vue3框架,源代码位于ATLAS_frontend文件夹中,使用方法:

如果没有安装依赖包,首先执行npm install

执行npm run dev,服务默认运行在5173端口

使用浏览器进入http://localhost:5173,即可以看到前端页面

关于
72.6 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

©Copyright 2023 CCF 开源发展委员会
Powered by Trustie& IntelliDE 京ICP备13000930号