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

    View Slide

  2. 카카오톡에서 메시지를 전달하는 기능 담당

    View Slide

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

    View Slide

  4. View Slide

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

    View Slide

  6. “API 호출량은 괜찮은데요.”
    “타임아웃이 늘었네요. 배포 언제 했죠?”
    “HBase 문제 인가요?”
    “혹시 예전 문제 였던 K8s ingress?”
    “Grafana에서는 어때요?”
    “DB 인가?”

    View Slide

  7. 장애발생 인지
    전파
    복구 재발방지
    원인파악
    의심되는 지표를 보면서 확인


    서비스 이해도, 경험에 따라 소요시간이 차이남

    View Slide

  8. “긴급 패치는 했는데,


    MongoDB Query 변경하고


    모니터링 추가도 해야 할 것 같아요”

    View Slide

  9. 장애발생 인지
    전파
    복구 재발방지
    원인파악
    방어코드, 인프라 구축


    지표 알림 추가


    관리기능 추가

    View Slide

  10. 장애발생 인지 복구 재발방지
    원인파악
    “이상이 있으면 더 빨리 알려주면 좋지 않을까?”

    View Slide

  11. 12년
    오.래.된. 소프트웨어

    View Slide

  12. 서비스 성장 하면서


    서버, 컴포넌트 증가


    모니터링 지표도 증가

    View Slide

  13. 20+개 컴포넌트, 500+개 API
    msg open secret team
    papi server
    session info
    media
    drive
    reaction
    push
    other services
    session & relay
    general

    View Slide

  14. 500K
    일 평균 트래픽 (tps)
    6TB
    일 평균 로그 용량
    10B
    일 평균 수발신량

    View Slide

  15. API에 응답 지연, 에러가 있는 지


    Cache가 죽었는 지


    DB 쿼리 수가 증가 했는 지


    서버, 네트워크가 문제 인지

    View Slide

  16. 수집 내역
    대상 수집 내용 관련 지표
    Application API 호출 관련 내용 API 호출 수, 에러 응답 수, 응답시간
    Application 에러 관련 내용 종류별 에러 수
    Memcached, Redis


    DB, Kafka, JVM
    Stats 지표
    k8s Ingress, worker node 시스템 지표 DB 지표
    System CPU, 메모리, 디스크, 네트워크 등 지표 System 상태 지표

    View Slide

  17. logstash Elastic Search kibana
    kafka
    grafana
    Alert System
    logstash

    (consumer)
    Log Flow
    Talk Message Apps

    View Slide

  18. Grafana graph
    API 종류 x 호출양 x 서버 수


    응답시간


    에러종류

    View Slide

  19. Grafana graph
    수 천개 지표

    View Slide

  20. 전통적인 방법

    View Slide

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


    • 기능 변경으로 임계치 변경이 필요한 경우 개입 필요.


    • 지표가 줄어든 경우 탐지가 어려움.


    View Slide

  22. 과거 비교 방법
    • 비교하는 대상 날짜에 장애가 있었던 경우


    • 지표의 추세에 대한 판별은 되지 않음


    View Slide

  23. Grafana graph
    지표가 너무 많다.

    View Slide

  24. “수 천 개의 지표에서


    문제 발생시 알림을 받아보자”
    ( aka 찾아 오는 알림 )

    View Slide

  25. 시계열 모델로 이상 탐지

    View Slide

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


    • Point Anomaly : 정상 데이터 분포로부터 벗어난 데이터


    • Contextual Anomaly : 데이터 흐름이 정상이 아닌 데이터


    • Group Anomaly : 비정상 구간


    https:/
    /github.com/DHI/tsod

    View Slide

  27. 시계열 지표 이상탐지 모델
    • 텍스트나 이미지 관련 학습에 비해 어렵지 않음


    • 전처리 작업도 시계열 데이터라 단순


    • “시간 : 값” 의 데이터


    • 정상 데이터를 학습시킨 뒤 이상 패턴 탐지


    • 라벨링 필요없는 비지도학습기반 많음


    • 인프라의 구축도 간단함


    • 빠르게 학습이 되서, GPU 없이도 가능

    View Slide

  28. 메시징 지표 특징
    API 호출수
    추세성, 계절성, 순환성, 불규칙성 특징


    평일과 휴일이 다름, 주 단위

    View Slide

  29. 메시징 지표 특징
    주말
    추세성, 계절성, 순환성, 불규칙성 특징


    평일과 휴일이 다름, 주 단위

    View Slide

  30. 모델 설명 학습시간
    ARMIA 방식이 단순하고, 이상치를 찾는데 효과적
    ~ 수 분
    Prophet
    직관적이며 사용이 쉽고, 속도가 빠름


    Seasonality, holiday 지원
    RNNModel 딥러닝 LSTM, GRU 사용 예측 기반 모델
    Informer
    transformer기반으로 단점을 해결한 모델,


    AAAI에서 best paper 선정
    AutoEncoder 재구성기반, 이미지간 차이로 이상탐지
    어떤 모델을 써야 할까?

    View Slide

  31. Elastic Search
    Grafana
    Collector
    자동 학습 시스템
    Learner
    Store
    Grafana Data Source


    Proxy

    View Slide

  32. View Slide

  33. Prophet Outliers
    실제 지표 Outliers

    View Slide

  34. Prophet Outliers

    View Slide

  35. 평가방법
    평가 비고
    MAE (Mean Absolute Error)

    평균절대편차
    예측 오차 지점이 많은 지
    MSE (Mean Squared Error)


    평균제곱편차
    예측 오차 차이가 많은 지
    MAPE (Mean Absolute Percentage Error)


    평균절대비오차
    0~100% 사이로 평가 비교를 위함
    RMSE (Root Mean Square Error)

    평균제곱근편차
    오차별 가중치를 두는 방법

    View Slide

  36. 교차검증
    Prophet 에서는 cross_vaildation 함수를 통해 지원


    학습 initial 예측 평가 horizon
    period/2
    학습 initial 예측 평가 horizon
    학습 initial 예측 평가 horizon
    period/2
    학습 initial 예측 평가 horizon
    period/2

    View Slide

  37. 교차검증 분석

    View Slide

  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


    View Slide

  39. Elastic Search
    Grafana
    Collector
    자동 평가 시스템(예정)
    Learner
    Store
    Grafana Data Source


    Proxy
    Tester

    View Slide

  40. 피드백 시스템(예정)

    View Slide

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


    • 중요 지표에만 설정
    • 모든 지표에 자동 적용


    • 여러 학습 모델로 고정값이 아닌 동적인 값의 임계치


    • 하락하는 지표에 대한 확인이 가능
    과거 비교 • 단순 어제, 지난주 비교
    • 지표 추세(trend)를 확인 가능


    • 비교 대상일이 장애인 경우에도 확인 가능
    최적화 • 개발자가 찾아가며 수정 • 자동 평가로 최적화
    기존 방식과 비교

    View Slide

  42. 감사합니다

    View Slide