Azure 를 이용한 서버 장애 파악 방법
서버 장애가 발생했을 때 서버 관리자 혹은 개발자가 먼저 발견하여 고객이 장애를 알아차리기 전에 조치한다면 아무 문제 없겠지만, 대부분의 서버 장애는 예기치 못한 상황에 발생하여 고객으로부터 문제를 전달받는 경우가 많습니다.
이러한 서버 장애를 모니터링 할 수 있는 여러 가지 유료, 무료 서비스가 있지만 그 중에서도 Azure 클라우드 환경에서 모니터링 서비스를 이용하는 방법을 소개하겠습니다.
Azure Function 을 이용한 서버 장애 확인
Azure Function은 서버를 사용하지 않고 간단한 코드나 함수를 실행할 수 있는 솔루션입니다. C#, Node.js, Python, PHP 등 다양한 개발 언어를 지원하고 사용하는 시간만큼 소량의 비용을 지불하면 됩니다.
자세한 내용은 Azure Function 을 참고하시면 됩니다.
Azure Function을 이용해 서버 장애를 확인하는 방법은 Function에서 Url을 호출하여 response 상태에 따라 로그를 남기거나 메일을 발송하는 추가 조치를 구현하는 것입니다.
제가 사용한 방법은 Node.js를 이용하여 urlStatusCode API를 활용하여 response 코드값에 따라 추가 조치를 할 수 있도록 하였습니다.
const urllist = [‘testurl.com’]; -> 서버url 정의
module.exports = function (context, myTimer) { const timeStamp = new Date().toISOString(); const urlStatusCode = require(‘url-status-code’) -> 서버 response code값
for (var i = 0; i < urllist.length; i++) { urlStatusCode(urllist[i], (error, statusCode) => { statusCode = ” + statusCode; var checkStatus = statusCode.substring(0,1); if (checkStatus == ‘4’ || checkStatus == ‘5’) { 추가 조치 넣을 부분
} else { context.log(statusCode) } }); } context.done(); }; |
위의 코드를 Azure Function에 등록하여 Crontab 스케쥴러를 이용해 주기적으로 서버의 response를 받아와 상태를 점검하게 됩니다. 후속조치 부분에는 메일을 이용한 알림이나 장애 로그를 기록하는 등 개발자가 원하는 로직을 구현하면 됩니다.
Azure의 경고 규칙을 이용한 서버 장애 확인
Azure의 경고 규칙은 Azure의 Iaas환경이나 Paas환경의 서버에서 사용할 수 있는 기능입니다. 서버의 설정 부분에서 경고 규칙 메뉴를 통해 쉽게 설정할 수 있습니다.
위의 화면은 실제 Iaas 환경의 서버에서 규칙을 추가하는 화면입니다. 설정한 조건에 따라 임계치를 정해 정한 값보다 작거나 클 경우 알림을 설정할 수 있습니다.
기본으로 제공하는 알림은 메일서비스 이고 추가로 문자나 다른 알림서비스는 사용자가 직접 연결하거나 Azure Function을 통해 연결하면 됩니다.
조건 설정을 하는 부분은 Iaas VM이나 Paas 웹앱, Database 에 따라 세부적으로 나누어져 있어 사용자가 원하는 경고를 설정할 수 있습니다.
기본 알림은 메일뿐만 아니라 Azure Runbook 이나 Logic App을 통해 추가 작업을 할 수 있습니다. Runbook은 Windows Powershell기반으로 자동화된 프로세스를 수행할 수 있도록 도와줍니다. 경고가 발생하면 해당 리소스를 정지하거나 재시작 하는 등의 추가 조치를 취하도록 프로세스를 구성할 수 있습니다.
Logic App은 복잡한 Work Flow를 쉽게 구성할 수 있도록 해줍니다. 이 Logic App을 이용하여 경고 발생 시에 문자를 전송하거나 SNS에 알림을 주거나 하는 프로세스를 구현하여 기본메일에서 추가된 알림을 설정 할 수 있습니다.
Azure Application Insights의 가용성 테스트를 이용한 서버 장애 확인
Application Insights는 여러 플랫폼의 개발자를 위한 확장 가능한 응용 프로그램 성능 관리 서비스 입니다. 다양한 모니터링을 통해 장애를 빠르게 진단하여 원인을 분석할 수 있습니다. 그리고 여러 개발 도구와 연결 지점도 가지고 있습니다.
Application Insights의 가용성 테스트를 이용하면 서버의 상태를 확인 할 수 있습니다.
확인하고자 하는 서버의 url을 일정시간마다 호출하여 HTTP의 응답이 정해진 기준에 미치지 못하면 지정된 관리자에게 메일을 통해 장애 메시지가 보내지게 됩니다.
Application Insights의 장점은 서로 다른 5군데의 지역에서 설정한 url을 호출하여 장애를 확인하기 때문에 다른 방법에 비해 정확한 장애 여부를 파악할 수 있는 것 입니다.
각 방법 별 요금 및 기능 비교
먼저 첫 번째 방법인 Azure Function의 경우는 사용자가 직접 개발을 해야 하고, 알림도 사용자가 직접 연결을 해야 한다는 특징이 있습니다. 직접 개발하는 만큼 사용자가 원하는 기능을 구현하여 이용할 수 있겠지만 개발 시간이 소요되는 단점이 있습니다. 비용은 사용한 양 만큼 청구되는 방식입니다.
두 번째는 Azure 경고 규칙을 이용한 방법으로 Azure 리소스를 지정하여 사용자가 정한 조건이 임계치를 벗어나면 알림이 오게 되는 간단한 방법이지만 실제 이용 시에 서버 장애가 아님에도 네트워크나 회선 문제 등으로 인해 문제로 인식하는 경우가 있습니다. 사용 비용은 무료입니다.
세 번째는 Application Insights의 가용성 테스트를 이용한 방법인데 점검하고자 하는 서버의 url을 등록하면 사용자가 지정한 장소에서 서버에 ping을 보내 response를 받아 상태를 확인하는 방법입니다. 요금은 무료로써 Azure 리소스에 해당하는 서버만 점검하는 것이 아닌 url주소에 따라 장애 여부 판단이 가능합니다.