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

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

kakao
PRO
December 08, 2022

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

#카카오톡

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

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

kakao
PRO

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. 카카오톡에서 메시지를 전달하는 기능 담당

  3. “말풍선 좋아요가 안돼요?!”

  4. None
  5. 장애발생 인지 원인파악 전파 복구 재발방지 지표 이상 알림, CS

  6. “API 호출량은 괜찮은데요.” “타임아웃이 늘었네요. 배포 언제 했죠?” “HBase 문제

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

    서비스 이해도, 경험에 따라 소요시간이 차이남
  8. “긴급 패치는 했는데, MongoDB Query 변경하고 모니터링 추가도 해야 할

    것 같아요”
  9. 장애발생 인지 전파 복구 재발방지 원인파악 방어코드, 인프라 구축 지표

    알림 추가 관리기능 추가
  10. 장애발생 인지 복구 재발방지 원인파악 “이상이 있으면 더 빨리 알려주면

    좋지 않을까?”
  11. 12년 오.래.된. 소프트웨어

  12. 서비스 성장 하면서 서버, 컴포넌트 증가 모니터링 지표도 증가

  13. 20+개 컴포넌트, 500+개 API msg open secret team papi server

    session info media drive reaction push other services session & relay general
  14. 500K 일 평균 트래픽 (tps) 6TB 일 평균 로그 용량

    10B 일 평균 수발신량
  15. API에 응답 지연, 에러가 있는 지 Cache가 죽었는 지 DB

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

    관련 내용 API 호출 수, 에러 응답 수, 응답시간 Application 에러 관련 내용 종류별 에러 수 Memcached, Redis DB, Kafka, JVM Stats 지표 k8s Ingress, worker node 시스템 지표 DB 지표 System CPU, 메모리, 디스크, 네트워크 등 지표 System 상태 지표
  17. logstash Elastic Search kibana kafka grafana Alert System logstash 


    (consumer) Log Flow Talk Message Apps
  18. Grafana graph API 종류 x 호출양 x 서버 수 응답시간

    에러종류
  19. Grafana graph 수 천개 지표

  20. 전통적인 방법

  21. 임계치 설정 방법 • 서비스 이해도와 경험적인 임계치 선정 필요.

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

    • 지표의 추세에 대한 판별은 되지 않음
  23. Grafana graph 지표가 너무 많다.

  24. “수 천 개의 지표에서 문제 발생시 알림을 받아보자” ( aka

    찾아 오는 알림 )
  25. 시계열 모델로 이상 탐지

  26. 이상 탐지란 데이터 세트의 예상치 못한 변경 또는 예상 패턴에서

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

    어렵지 않음 • 전처리 작업도 시계열 데이터라 단순 • “시간 : 값” 의 데이터 • 정상 데이터를 학습시킨 뒤 이상 패턴 탐지 • 라벨링 필요없는 비지도학습기반 많음 • 인프라의 구축도 간단함 • 빠르게 학습이 되서, GPU 없이도 가능
  28. 메시징 지표 특징 API 호출수 추세성, 계절성, 순환성, 불규칙성 특징

    평일과 휴일이 다름, 주 단위
  29. 메시징 지표 특징 주말 추세성, 계절성, 순환성, 불규칙성 특징 평일과

    휴일이 다름, 주 단위
  30. 모델 설명 학습시간 ARMIA 방식이 단순하고, 이상치를 찾는데 효과적 ~

    수 분 Prophet 직관적이며 사용이 쉽고, 속도가 빠름 Seasonality, holiday 지원 RNNModel 딥러닝 LSTM, GRU 사용 예측 기반 모델 Informer transformer기반으로 단점을 해결한 모델, AAAI에서 best paper 선정 AutoEncoder 재구성기반, 이미지간 차이로 이상탐지 어떤 모델을 써야 할까?
  31. Elastic Search Grafana Collector 자동 학습 시스템 Learner Store Grafana

    Data Source Proxy
  32. None
  33. Prophet Outliers 실제 지표 Outliers

  34. Prophet Outliers

  35. 평가방법 평가 비고 MAE (Mean Absolute Error) 
 평균절대편차 예측

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

    평가 horizon period/2 학습 initial 예측 평가 horizon 학습 initial 예측 평가 horizon period/2 학습 initial 예측 평가 horizon period/2
  37. 교차검증 분석

  38. 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
  39. Elastic Search Grafana Collector 자동 평가 시스템(예정) Learner Store Grafana

    Data Source Proxy Tester
  40. 피드백 시스템(예정)

  41. 기존 예측방식(기대) 임계치 지정 • 개발자가 한 지표씩 설정 •

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