Upgrade to Pro — share decks privately, control downloads, hide ads and more …

카카오톡 메시징 지표 이상 감지 시스템의 개선사례

kakao
December 08, 2022

카카오톡 메시징 지표 이상 감지 시스템의 개선사례

#카카오톡

카카오톡에서 메시지를 보내면, 이를 담당하는 메시징 시스템에 수많은 서버들과 어플리케이션의 복잡한 연결과 흐름으로 최종적으로 수신자까지 보내지게 됩니다.
이 수 많은 어플리케이션의 로그들을 수집하여, 서버들 간의 네트워크 문제라던지, OS, 어플리케이션 버그 또는 장애를 탐지하는 방법으로
기존에는 일부 중요 부분에 대해서만 개발자가 판단한 특정 오류의 수보다 더 많이 발생하면, 이를 알림 받는 방식에서
이미 잘 알려진 시계열 지표 학습 모델을 이용하여, 톡메시징 시스템의 모든 지표 이상 감지를 하는 시스템으로 개선한 경험을 공유 합니다.

발표자 : sol.kim
카카오톡 메시징 시스템을 개발 및 운영하는 솔 입니다.

kakao

December 08, 2022
Tweet

More Decks by kakao

Other Decks in Programming

Transcript

  1. 김예솔 sol.kim 카카오 Copyright 2022. Kakao Corp. All rights reserved.

    Redistribution or public display is not permitted without written permission from Kakao. 카카오톡 메시징 지표 이상 감지 시스템의 개선사례 if(kakao)2022
  2. “API 호출량은 괜찮은데요.” “타임아웃이 늘었네요. 배포 언제 했죠?” “HBase 문제

    인가요?” “혹시 예전 문제 였던 K8s ingress?” “Grafana에서는 어때요?” “DB 인가?”
  3. 장애발생 인지 전파 복구 재발방지 원인파악 의심되는 지표를 보면서 확인

    서비스 이해도, 경험에 따라 소요시간이 차이남
  4. 20+개 컴포넌트, 500+개 API msg open secret team papi server

    session info media drive reaction push other services session & relay general
  5. API에 응답 지연, 에러가 있는 지 Cache가 죽었는 지 DB

    쿼리 수가 증가 했는 지 서버, 네트워크가 문제 인지
  6. 수집 내역 대상 수집 내용 관련 지표 Application API 호출

    관련 내용 API 호출 수, 에러 응답 수, 응답시간 Application 에러 관련 내용 종류별 에러 수 Memcached, Redis DB, Kafka, JVM Stats 지표 k8s Ingress, worker node 시스템 지표 DB 지표 System CPU, 메모리, 디스크, 네트워크 등 지표 System 상태 지표
  7. 임계치 설정 방법 • 서비스 이해도와 경험적인 임계치 선정 필요.

    • 기능 변경으로 임계치 변경이 필요한 경우 개입 필요. • 지표가 줄어든 경우 탐지가 어려움.
  8. 과거 비교 방법 • 비교하는 대상 날짜에 장애가 있었던 경우

    • 지표의 추세에 대한 판별은 되지 않음
  9. 이상 탐지란 데이터 세트의 예상치 못한 변경 또는 예상 패턴에서

    편차를 찾아냄 • Point Anomaly : 정상 데이터 분포로부터 벗어난 데이터 • Contextual Anomaly : 데이터 흐름이 정상이 아닌 데이터 • Group Anomaly : 비정상 구간 https:/ /github.com/DHI/tsod
  10. 시계열 지표 이상탐지 모델 • 텍스트나 이미지 관련 학습에 비해

    어렵지 않음 • 전처리 작업도 시계열 데이터라 단순 • “시간 : 값” 의 데이터 • 정상 데이터를 학습시킨 뒤 이상 패턴 탐지 • 라벨링 필요없는 비지도학습기반 많음 • 인프라의 구축도 간단함 • 빠르게 학습이 되서, GPU 없이도 가능
  11. 모델 설명 학습시간 ARMIA 방식이 단순하고, 이상치를 찾는데 효과적 ~

    수 분 Prophet 직관적이며 사용이 쉽고, 속도가 빠름 Seasonality, holiday 지원 RNNModel 딥러닝 LSTM, GRU 사용 예측 기반 모델 Informer transformer기반으로 단점을 해결한 모델, AAAI에서 best paper 선정 AutoEncoder 재구성기반, 이미지간 차이로 이상탐지 어떤 모델을 써야 할까?
  12. 평가방법 평가 비고 MAE (Mean Absolute Error) 
 평균절대편차 예측

    오차 지점이 많은 지 MSE (Mean Squared Error) 평균제곱편차 예측 오차 차이가 많은 지 MAPE (Mean Absolute Percentage Error) 평균절대비오차 0~100% 사이로 평가 비교를 위함 RMSE (Root Mean Square Error) 
 평균제곱근편차 오차별 가중치를 두는 방법
  13. 교차검증 Prophet 에서는 cross_vaildation 함수를 통해 지원 학습 initial 예측

    평가 horizon period/2 학습 initial 예측 평가 horizon 학습 initial 예측 평가 horizon period/2 학습 initial 예측 평가 horizon period/2
  14. Prophet Parameters • seasonality_mode • changepoint_prior_scale • seasonality_prior_scale • holidays_prior_scale

    • yearly_seasonality • weekly_seasonality • daily_seasonality • holidays • growth • changepoint_range • changepoints • n_changepoints • mcmc_samples • interval_width • uncertainty_samples
  15. 기존 예측방식(기대) 임계치 지정 • 개발자가 한 지표씩 설정 •

    중요 지표에만 설정 • 모든 지표에 자동 적용 • 여러 학습 모델로 고정값이 아닌 동적인 값의 임계치 • 하락하는 지표에 대한 확인이 가능 과거 비교 • 단순 어제, 지난주 비교 • 지표 추세(trend)를 확인 가능 • 비교 대상일이 장애인 경우에도 확인 가능 최적화 • 개발자가 찾아가며 수정 • 자동 평가로 최적화 기존 방식과 비교