서비스 장애, 예측할 수 있을까? (이벤트 패턴 탐지를 통한 장애 사전 감지 기술)

NAVER Cloud
NAVER Cloud
Published in
7 min readApr 19, 2019

이벤트 패턴 감지를 통한 장애 사전 감지 기술

NBP(NAVER Business Platform)에서는 네이버의 검색, 카페, 블로그, 뉴스와 LINE, SNOW 등 국내 및 글로벌 대상 서비스 600여 개를 위한 십 여 만대의 서버와 네트워크로 구성된 인프라를 운영하고 있습니다. 이러한 서비스 인프라 운영에 있어 모니터링은 중요한 핵심 기술 중 하나입니다.

NBP의 여러 장애 모니터링 시스템에서는 하루에도 수십만 개 이상의 모니터링 이벤트가 지속적으로 감지되고 있습니다. 네이버 서비스의 품질을 보장하기 위해 서비스 장애를 경험하기 전 대응할 수 있도록 통합 모니터링을 수행하고 있으며, 이벤트 간의 상관관계를 분석해 원인 추적에도 활용하고 있는데요.

단순 서비스 모니터링에 그치지 않고 수집한 모니터링 이벤트들을 분석하여 장애 패턴을 정의하고 이를 통해 장애를 사전 감지 할 수 있는 기술을 개발 중입니다. 본 글에서는 NBP의 통합 모니터링 시스템의 구성과 장애 사전 감지 및 대응을 위한 패턴 탐지 기술을 어떻게 적용하고 있는지 소개합니다.

1단계 : 이벤트 통합

이벤트 패턴 탐지를 위해서는, 먼저 이벤트 데이터를 의미 있게 통합하는 작업이 필요합니다. 단순히 하나의 저장소에 모으는 것이 아니라, 원인 추적과 장애 분석에 맞는 모니터링 항목의 정의가 필요합니다.

예를 들어, 서버 한 대의 리소스 모니터링은 호스트 명과 CPU, Memory 값으로 구성하면 되지만 모바일 웹 서비스의 접속 장애가 있다면, 모바일 웹 서버 다수 대의 리소스 모니터링 지표를 즉각 확인할 수 있도록 모니터링 항목을 구성해야 합니다.

이 이벤트들 중에서 어떤 것이 중요할 지를 찾아내는 것이 중요하며, 여기에 NBP의 데이터 분석 기술이 사용되고 있습니다.

2단계 : 장애와 이벤트

“구슬이 서 말이라도 꿰어야 보배”라는 말처럼, 이미 있던 이벤트들인데 장애와 엮어보니 새로운 정보가 보이기 시작했습니다. 아래는 서비스 장애 시 통합 이벤트 수집 현황입니다.

NBP에서 사용하고 있는 서비스 모니터링 툴인 WMS(Web-service Monitoring System)에서 홈 접속 시간이 지연되는 현상이 감지되었고, 서비스에 장애 현상도 있었습니다. 이때 인프라 상태와 배포 현황을 시계열로 분석해보니 배포가 진행될 때는 특이사항이 없었지만, 위의 표의 ‘이벤트 대상’에서 ‘session01’ 서버의 ping fail이 발생한 후에 서비스 장애가 발생한 것을 확인할 수 있습니다. 이렇게 이벤트 통합 뷰만 가지고도, 장애 원인 추적에 활용할 수 있습니다.

3단계 : 서비스와 인프라 모니터링, 통합하면 패턴이 보인다

이렇게 서비스와 인프라 통합 이벤트 뷰를 통해 장애 분석을 하다 보니, 재미있는 것을 발견하였습니다.

서비스에 장애가 발생을 했을 때, DB 서버에서 슬로우 쿼리가 발생하여 DB 조치가 필요한 상황이라는 것은 판단 가능합니다. 그런데, 서비스 장애가 발생하기 이전 시간을 거슬러 올라가다 보니 서비스에 장애 현상이 있기 전인 장애 발생 4시간전부터 슬로우 쿼리와 커넥션 증가 이벤트가 발생을 하고 있었습니다. (아래 이미지 참조)

이 구간을 장애 사전 감지 구간이라고 할 수 있고, 사전 감지 구간을 인지할 수 있는 특정 이벤트의 패턴을 찾을 수 있었습니다. 예시에서는 DB 하나의 영역에서만 패턴이 반복되었지만, 네트워크와 서버 등 복수개의 영역에서 패턴이 발생하는 경우에 사전 감지 효과는 더 커질 수 있습니다.

4단계 : 장애, 예측할 수 있다

수많은 이벤트 중에서 장애 원인 추적을 할 수 있고, 사전 감지 구간을 찾을 수 있는 이벤트 패턴을 찾아냈고, 이를 인지하기 위해서 패턴 탐지 엔진을 개발하여 적용했습니다.

패턴 탐지 엔진의 핵심 기술은 CEP (Complex Event Processing) 입니다. CEP는 실시간 이벤트를 처리하는 기술로, EPL (Event Processing Language) 라는 SQL 과 유사한 구문을 통해 이벤트를 필터링할 수 있습니다. EPL 구문이 바로, 패턴 탐지 룰이라고 할 수 있습니다.

① 장애 사례 분석을 통해 탐지하고자 하는 조건을 정의하고
② 그 조건을 EPL 구문의 패턴 탐지 룰을 만들어냅니다.

1) 탐지조건

① 한 호스트에서
② 2분 이내에
③ {슬로우쿼리 발생, 커넥션 증가}
이벤트가 동시에 발생한 경우

2) 패턴 탐지 룰

Select
window(*)
From

DBEvent(event_data.tool_type=’db’)
.win:time(2 min )
Where
event_data.type_code
IN (‘슬로우쿼리 발생’, ‘커넥션 증가’ )
group by
event_data.hostname
having count(DISTINCT (event_data.type_code))=3

실시간 이벤트 분석 대시보드에서는 인입 -> 분석 -> 탐지결과 를 도식화하여 모니터링합니다. 탐지 룰 레벨에 따라 분석한 이벤트는 건강 > 경미 > 주의 > 위험 > 심각 수준으로 분류하여 탐지 이벤트는 Actionable List로 분류하여 모니터링합니다.

글을 마무리하며..

네이버 클라우드 플랫폼 상품은 네이버와 LINE 등 국내 최대 글로벌 인터넷 서비스를 위해 사용되는 인프라 기술들과 NBP만의 서비스 운영 노하우가 포함되어 있습니다. 클라우드 인프라 뿐만 아니라 그 위에서 실행되는 고객의 서비스도 성공적으로 운영될 수 있도록 하는 기술들도 함께 제공하고 있는데요. 지금까지 소개한 장애 분석과 예측을 위한 기술 역시 곧 네이버 클라우드 플랫폼 상품으로 만나 볼 수 있도록 하겠습니다.

실제 네이버의 서비스 장애를 모니터링하는 데 사용하고 있는
Web service Monitoring System(WMS)를 네이버 클라우드 플랫폼을 통해
여러분의 서비스에도 활용해 보세요!

고객의 웹 서비스를 1분 단위로 모니터링하고,
이벤트 장애 발생 시 메일과 SMS로 신속하게 알려드립니다.

[NBP 기술 & 경험] 데이터 센터 서버실 환경 모니터링 기술의 진화

--

--

NAVER Cloud
NAVER Cloud

We provide cloud-based information technology services for industry leaders from startups to enterprises.