장애 대응 – 모니터링 서비스의 구성

금오사이 운영팀에는 적지 않은 운영진이 함께하고 있지만 그렇다고 매일 24시간을 서버만 바라보고 있을 수는 없는 노릇입니다. (게다가 학생이구요.. 강의는 들어야하지 않겠습니까.. 밥도 먹어야하고)

그래서 금오사이는 언제든지 서비스 장애 알림을 받아 볼 수 있는 다양한 경로를 구축 해 놓았는데 그에대한 이야기를 나누고자 합니다.

 

먼저 현재의 알림 시스템을 구축하기 전에 어떠한 경험을 해왔는지에 대해 이야기를 해보겠습니다.

 

 

관제 솔루션 경험 사례

Mumin 리소스 모니터링

초기에는 munin 이라는 리소스 모니터링 도구를 사용했었습니다. 투박한 디자인에 가벼운 성능, 실시간에 가깝게 CPU, 메모리 상태를 확인 할 수 있다는 점이 장점으로 다가왔었습니다.

하지만, 문제점은 얼마 있지 않아 금오사이의 첫 이벤트를 준비했던날 어김없이 장애가 발생했었습니다. 

운영을 시작하고 다섯달이 넘어가던쯤에 페이스북 좋아요 이벤트를진행하고 상품 당첨자를 발표하자 응모자를 포함해 친구, 동료 모두 금오사이를 찾아 온 날이었습니다.

그 흔적이 여기에 있네요
https://kumoh42.com/loveFacebookPage

발표가 되고 얼마되지 않아 서비스에 접근이 안되는 장애가 발생하였습니다. 최근의 금오사이가 이러한 장애를 겪었다면 정말 많은 학우들이 불편을 겪었겠지만 이때는 동접자 50여명이 서버가 다운되어버린 것 이었습니다.

정작 서비스가 다운된 상황에서 이 모니터링 도구는 쓸모가 없었습니다.
모니터링 서버와 에이전트가 같은 서버였거든요 ㅎㅎㅎ 아무래도 비용이 가장 큰 문제였죠

가장 큰 문제는 장애가 발생하거나 장애 상황에 근접했을 때 알림을 전달할 방법이 없었다는 점에 있었습니다.
그래서 모니터링을 다른 서버에서 하는 방법을 찾아보게 되었습니다.

장점 : 간단한 구축, 실시간에 가까운 수집 속도
단점 : 디자인이 이쁘지 않음, 그래프 활용도의 낮음
실책 : 서비스 서버와 같은 서버에 구축해버림..

 

whatap 모니터링 솔루션

국산 모니터링 솔루션으로 유명한 Whatap 모니터링 솔루션입니다.

간단하게 제공되는 Agent를 설치하기만하면 앱이나 웹 대시보드를 통해 실시간에 근접하게 리소스 사용 상황을 파악 할 수 있고 메일이나 앱으로 알림을 받아 볼 수 있는게 가장 큰 장점이었습니다. 이쁜 대시보드도 한 몫 했구요.

운영팀이 사용하던때에는 Whatap 이 베타서비스(?)를 하던 시기라 무료로 이용 할 수 있었지만 곧 정식 출시를 하고 서버에 Limit 가 걸려 기능 사용에 제한이 걸리게 되었습니다.
물론, 알림은 무료로 받아 볼 수 있지만 아무래도 기능 사용에 제한이 걸리다보니 자유로운 알림 설정이나 확인에 어려움이 생겼고 사용을 포기하게 되는 계기가 되었던 것 같습니다.

상당히 좋은 서비스 였던 것으로 기억합니다. 기능도 다양하고요.. 다만 비용이 가장 큰 문제였습니다..
(역시 학생신분에는 부담스러운 유료 솔루션..)

 

 

안타깝게 Whatap 서버 모니터링은 그만두게 되었지만 PHP 모니터링 솔루션은 현재도 지속적으로 사용하고 있습니다. 알림 서비스는 사용하지 않고 장애가 발생하였을때 후속 조치 용도로 충분히 활용이 가능합니다.

장애가 발생한 시간대에 어떠한 메소드나 쿼리에서 트랜잭션 타임이 길게 발생했는지 파악하는 용도로 활용 중 입니다. 간단한 프로젝트를 기획중이시라면 이기회에 Whatap 을 한번 이용 해 보시는 것도 좋을 것 같네요!

장점 : 간단한 구축, 미려한 디자인, 다양한 기능
단점 : 비용 (너무 아쉽…)

 

Zabbix + Grafana

지금도 운용하고 있는 체계이기에 실제 금오사이에서 운영중인 모니터링 화면을 가져왔습니다 ㅎ_ㅎ

금오사이에 어느정도 자금적 여유가 생기고 서비스 구성에 대한 욕심이 생기던 시기였습니다.
이때 팀 내부에서도 어느정도 안정화가 되고 세부적인 설정이 가능한 관제 도구를 필요로 하기도 했습니다.

Zabbix는 무료 오픈소스 모니터링 솔루션으로 Master 와 Agent 구조로 운영이 가능하고 Agent 별로 수집 데이터를 관리 할 수 있다는게 큰 장점으로 다가왔습니다. 또한, 알림 설정이 가장 큰 매력 포인트였죠
짧지 않은 역사와 많은 기업체에서도 활용하고 있는 만큼의 안정성 또한 선택의 요소 였습니다.

아쉬운 점이 있다면 Zabbix의 대시보드는 그리 이쁘지 않다는 것 이었습니다.
나름 이쁘게 꾸밀 수 있지만 더 아름답게 꾸며보고 싶었고. 이러한 내용들을 사용자들도 함께 활용하면서 학습과 공유의 기회가 되지 않을까 하는 생각에서 이 대시보드를 공개하고 싶었거든요.

 

 

Grafana는 Zabbix와 정말 환상의 짝꿍입니다.

MySQL 기반의 DBMS를 사용하는 Zabbix의 DB만 Grafana에서 연동하면 Grafana는 그 데이터로 이쁘고 다양한 그래프를 그려낼 수 있거든요.
Zabbix는 서버의 데이터를 수집하고, 처리하고 보관하고 Grafana는 그 데이터를 그려서 보여주는 정말 간단한 구조로 좋은 만족도를 만들어 낼 수 있었습니다.

 

Zabbix와 Grafana를 사용하면서 가장 강점이 되는 것은 알람 시스템의 구축이었습니다.
기본적으로 제공되는 Webhook과 이메일, 스크립트를 통한 알람 트리거는 다양하게 활용이 가능하였습니다.

자체적으로 개발한 어플리케이션 알림 발송 API 와 웹훅의 조합으로 장애 발생시 금오사이팀은 앱을 통한 알림을 즉시으로 받아 볼 수 있답니다.

하지만 서비스가 다운된 다음에는 앱을 통한 알림을 받을 수  없습니다. API가 서비스와 연동되어 있기 때문이죠.
이를 위해 정말! 심각한 장애가 발생했을때는 SMS를 통해서도 장애 알림을 받아 볼 수 있도록 구성하고 있답니다.

단점이라면 모니터링을 위한 서버가 필요하다는 정도 되겠네요.
단순히 모니터링을 위한 용도기 때문에 적은 사양의 클라우드 서비스를 이용한다면 일반 상용 모니터링 툴 보다는 저렴한 가격에 구축이 가능하다는 장점이 있어요

장점 : 유연한 장애 관리, 다양한 알림 기능 활용 가능
단점 : 서버 운용 비용 발생

모니터링 시스템은 어떻게 구성되었나요?

모니터링 서버는 서비스가 중단되더라도 관리자에게 알림을 보내 주는 것이 가장 중요합니다.
서비스가 중단되었다고 알림을 못 받아 본다면 관리자는 직접 확인하기 전까지 알아챌 방법이 없기 때문이죠.

간단하게 금오사이의 모니터링 구조도를 그려보았습니다.

Zabbix는 kumoh42.com 에 설치된 에이전트를 통해 데이터를 수집하고 특정 장애가 감지되면 알림을 발생시킵니다. 해당 알림은 Webhook을 통해 kumoh42.com에 FCM (Firebase cloud message) API 를 통해 앱 알림을 전송합니다.
만약 서비스에 API Call 이 불가능한 경우에는 SMS 발송 중계자를 통해 관리자에게 SMS를 발송하는 시스템으로 구성되어 있습니다.

Service 서버와 Monitoring 서버는 각각 다른 호스팅 플랫폼을 사용하여 특정 호스팅 플랫폼 자체의 장애로 서비스가 불가능할 경우 서로의 서버를 감시하여 관리자에게 알림을 전송하도록 구성되어 있습니다. 이렇게 하면 어느 한 플랫폼이 중단되더라도 관리자는 적절히 대응이 가능하게 되죠, 만약 같은 플랫폼을 이용한다면 알림을 보내 줄 수 있는 서버가 모두 중단되므로 또다시 오리무중에 빠지게되겠죠

앱을 통해 발송된 알림은 이렇게 기록으로 남겨지게 됩니다.

 

금오사이의 모니터링 대시보드는 모두에게 공개되어 있습니다.
관심 가시는 분들이 있으면 직접 지켜봐 주시고 개인적으로 한번 구성 해 보시는 걸 추천드립니다. 그리 어렵지 않게 나만의 모니터링 체계를 가질 수 있거든요.

아래 버튼을 누르면 바로 모니터링 대시보드를 보실 수 있어요.
그럼 안녕!

 

댓글 남기기

이메일은 공개되지 않습니다.