[논문 리뷰] DeepLearning-based System Log Analysis for Anomaly Detection
Experience Report: Deep Learning-based System Log Analysis for Anomaly Detection - 2022.01.11
Experience Report: Deep Learning-based System Log Analysis for Anomaly Detection
Logs have been an imperative resource to ensure the reliability and continuity of many software systems, especially large-scale distributed systems. They faithfully record runtime information to facilitate system troubleshooting and behavior understanding.
arxiv.org
1. 목적
현재 로그데이터는 방대하고 복잡한데 로그데이터 분석관련 논문은 종종 있지만 딥러닝 모델 비교에 관련된 연구는 없어서 "비교" 목적으로 시작하였다.
이 논문에서는 2가지의 Dataset과 6개의 딥러닝 모델비교를 통해서 이를 기반으로 미래에는 더 많은 발전이 이루어지길 바란다.
2. 본론 - 로그데이터 이상치 탐지 방법
1) Log Collection
Log Datas는 Label이 없는 경우가 많아서 Unsupervised Learning을 선호한다.
이 논문에서는 HDFS, BGL을 사용하였다.
2) Log Parsing
보통 로그 데이터들은 일정 구조가 있기 때문에 Log Parsing을 하여 Template을 만든다.
[NLP] 텍스트 데이터 전처리 - Log Template
자연어인 로그 데이터를 딥러닝할 때 전처리는 어떻게 할까?보통 로그 데이터는 패턴이 존재한다. 이 패턴에 대해서 알고 있다면 공통 패턴이 되는 템플릿(Template)을 만들어 처리하면 되지만 만
hello-heehee.tistory.com
Template을 만들어주는 방식은 여러가지가 있으나 대체적으로 Drain이 손 쉽게 Template을 만들어준다.
[NLP] Drain3 - Python
1. Drain3자연어로 이루어진 데이터들의 Template을 자동적으로 만들어주는 라이브러리# 라이브러리 설치pip install drain32. CODEGithub GitHub - logpai/Drain3: A robust streaming log template miner based on the Drain algorith
hello-heehee.tistory.com
3) Log Partition and Feature Extraction
Log Partition은 Log 별 Template id를 부여했을 때 Window Size에 따라 데이터를 쪼개는 방식이라고 생각하면 쉽다
보통 Window Size는 홀수 갯수로 사용하는데, 여기 논문에서 window size는 4이다.
Window Size와 관련하여 더 자세한 내용은 Word2Vec의 CBOW쪽 예문을 보면 더 이해가 쉬울 것이다.
[NLP] Word Embedding
자연어처리 공부중입니다. 잘못된 부분은 편히 댓글 부탁드립니다.1. 워드 임베딩이란?단어를 인공신경망 학습을 통해 벡터화하는 하는 것즉 텍스트를 숫자로 변환하는 방법2. 희소 표현(Sparse Re
hello-heehee.tistory.com
- Fixed Partitioning: 한 번 사용한 log는 묶어주지 않는 방식 (No overlap)
- Sliding Partitioning: 한 칸씩 옮겨가면서 window size만큼 묶어주는 방식
- Identifier-based Partitioning: 다른 Template ID가 나오기 전 동일한 Template ID로 묶어주는 방식
Feature Extraction은 Log Partition 후 Machine Learning이나 Deep Learning을 이용하여 특징을 추출한다.
로그데이터들은 복잡하기 때문에 Word2Vec, FastText, GloVe를 사용하여 Embedding 후 단순한 Vector로 만들어 사용한다.
4) Anomaly Detection
Traditional Machine Learning 이나 Deep Learning method를 사용하여 정상 로그 패턴을 학습하여 로그가 Normal인지 Abnomal인지 판별한다.
데이터 특성에 따라 Loss Function을 사용해야하는데, 논문에서는 3가지의 Loss Function에 대해 설명한다.
- Forecasting Loss: 정상로그만을 학습하여 미래의 로그에 대해 예측하는 것을 의미한다.
ex) t시점에 t+1 혹은 t+N시점에 대해 로그가 normal인지 abnormal인지 예측한다. - Reconstrunction Loss: Autoencoder에서 사용한다. 복원된 로그(예측결과)가 정상 로그와 차이가 크다면 Abnormal, 차이가 적다면 Normal을 뜻한다.
- Supervised Loss: Supervised Learning에서 주로 사용하는 Cross Entropy나 MSE(Mean Squared Error)등을 뜻한다.
3. 본론 - 6가지 모델 비교
6가지 모델은 Reference 논문에 나온 모델들이다.
1) Unsupervised Learning
- DeepLog: Forecasting 기반으로 Log Anomaly Detection과 관련한 최초 연구이다. 로그데이터들을 순차적으로 학습하며 Template ID만 학습한 방식(?)이다.
- LogAnomaly: LSTM모델을 사용한 Forecasting기반으로 DeepLog보다 성능이 더 향상 가능한지 평가하였다.
Template2Vec을 이용한 단어의 동의어와 반의어를 고려한 의미기반 학습모델이다. - Logsy: Transformer Model로 정상로그와 비정상로그 데이터를 구분하기 위한 분류기반 학습방법이다.
- Autoencoder: Isolation Forest를 결합한 Autoencoder로 Autoencoder는 특징을 추출하고 Isolation Forest는 추출한 특징으로 이상탐지를 한다. 정상로그만 학습한다.
2) Supervised Learning
- LogRobust: 실제 로그데이터 이상탐지시 예상과 달리 성능이 매우 떨어지는 것을 발견하여 이를 해결하기 위해 제안하였다.
성능이 떨어진 이유는 Noise나 데이터의 불안정성을 배제했기 때문으로 Bi-LSTM과 Attention을 결합한 모델이다. - CNN: CNN모델을 사용하기 때문에 input data가 2차원이어야 한다. 여기서는 2차원 Feature Input을 위해 Logkey2Vec이라는 Embedding 기법을 제안하였다. 로그 시퀀스를 이미지 데이터처럼 처리하여 CNN기반 분류를 수행한다.
위 모델들을 통합한 ToolKit이 없어서 논문 저자들은 OpenSource ToolKit을 제공하고 있다.
해당 ToolKit은 Autoencoder, CNN, LSTM, Transformer를 제공한다.
GitHub - logpai/deep-loglizer: A deep learning toolkit for log-based anomaly detection
A deep learning toolkit for log-based anomaly detection - logpai/deep-loglizer
github.com
4. 본론 - 결과 정리
논문은 3가지 관점으로 모델 성능을 분석하였다.
- Accuracy: 정상로그와 비정상 로그 구별능력이다. Accuracy가 높다면 모델은 정상과 비정상 로그를 잘 분류한다.
- Robustness: 학습데이터에 없던 다른 로그가 생겼을 때 이상탐지 방법능력이다. Robustness가 높을수록 모델이 견고하다.
- Efficiency: 모델의 속도를 의미한다. Efficiency가 높다면 모델 속도가 빨라 효율성이 높다.
데이터 셋에 따라 6가지 모델에 대해 성능평가를 진행하였다.
데이터 셋에 따라 모델 성능이 다르므로 여러가지 모델을 적용해본 후 선택하는 것이 용이하다.
* Log Semantics (로그 의미론)
원래 Log Anomaly Detection은 단순한 Template Matching을 이용한 이상탐지이다. 맥락을 고려하지 않기 때문에 로그 의미 해석능력이 떨어졌고, 새로운 로그 패턴에 취약했다. 이를 위해 Log Semantics가 출현하였다.
Log Semantics는 새로운 로그패턴 처리가 가능해졌고, 유사한 의미를 가진 로그를 효과적으로 그룹화가 가능하여 더욱 정밀한 이상탐지가 가능하게 되었다.
ex) 디스크 공간 부족 ≒ 하드디스크 가득 참
Traditional Machine Learning과 Table2의 Deep Learning에 대한 성능 비교이다.
대체적으로 Deep Learning이 Traditional Machine Learning보다 성능이 높지만 Machine Learning이 높은 경우도 있다고 한다.
이 부분은 참고용으로만 보고 DeepLearning 기법을 사용하는게 더 낫다.
Supervised Learning이 Unsupervised Learning보다 더 성능이 우수하여 Label이 있다면 Supervised Learning을 권장한다.
Log Semantics 유무와 관련 없이 Supervised Learning이 Robustness도 높다.
Forecasting-based method는 학습데이터에 이상치가 있다면 성능이 급격하게 저하되고 Reconsturction-based method가 더 Robustness가 높다.
> Fig2. LSTM, Transformer보다 Autoencoder가 Injection Ratio가 높을수록 Robustness가 더 적게 떨어짐
DeepLearning이 Machine Learning보다 학습 소요시간이 더 오래 걸렸다. 일부 Machine Learning이 Efficiency가 더 뛰어난 경우도 있다. 하지만 Deep Learning을 사용하도록 하자
5. 결론
현재 성능 85% 화웨이에서 사용중이고 연구 초기이기 때문에 이 논문을 base로 더 발전이 이루어 지리라 생각된다.
> Industrial Practices 와 Real-World Challenges 내용은 생략하니, 궁금하다면 논문을 읽어보길 추천한다.
로그데이터 이상치 탐지를 처음 시작하는 사람들에게 논문을 읽기를 추천한다.