본문 바로가기

서버운영 (TA, ADMIN)/인프라

[인프라] 서버 모니터링

실제 실행 환경이 구동되면 장애 탐지나 각종 인프라 리소스 상태를 파악하기 위해 시스템을 모니터링해야 합니다. 서버 모니터링에 대한 개요와 클라우드 서비스로 Docker 컨테이너를 모니터링하는 방버에 대하여 알아봅니다.



서버 모니터링의 종류


시스템 운영에서 가장 큰 목표는 시스템의 안정적인 구동입니다. 이를 위해 시스템을 구성하는 서버와 네트워크 상태를 모니터링하고 적절하게 관리해야 합니다. 다음은 가장 일반적인 서버 모니터링 항목입니다.


1. 장비 모니터링

시스템을 구성하는 장비에 문제가 있는지 체크하여 하드웨어나 네트워크 장애 발생 유무를 확인합니다. 클라우드로 시스템을 구축한 경우에는 클라우드 서비스 정상 여부를 클러스터 밖에서 모니터링해야 한다.


2. 서비스 모니터링

서비스에 문제가 있는지 체크합니다. 만약 문제가 있는 경우에는 로그를 확인하고 프로세스를 재기동하는 등 필요한 조치를 취해야 합니다.


3. 서버 및 네트워크 리소스 모니터링

서버의 CPU, 메모리, 스토리지 등의 리소스 사용률과 네트워크 대역을 모니터링하여 병목현상이 발생할 수 있는 지점이 있는지를 체크합니다. 또한 단기간의 리소스 증감뿐만 아니라 중장기적인 관점에서의 증감에 대해서도 모니터링을 수행하며, 시스템 부하에 따라 장비나 회선을 증설할 수 있도록 검토해야 합니다.

클라우드 시스템인 경우, 리소스에 따라 과금되므로 불필요한 리소스가 있는지도 모니터링 하여 운영비를 절감할 수 있도록 해야합니다.


4. JOB 모니터링

시스템은 업무 시간 중의 온라인 처리뿐만 아니라 집계, 전표 처리 등 업무 시간 외에 배치로 동작하는 경우도 있습니다. 이를 위해 JOB도 적절하게 모니터링해야 합니다.


대규모 시스템인 경우에는 이러한 모니터링을 통합 운영 관리 툴로 수행합니다. 통합 운영 관리 툴이란 대상이 되는 서버 및 장비의 상태를 모니터링하고 미리 설정한 임계치를 넘어서면 정해진 액션을 취하는 툴입니다. 서버 상태를 그래프나 맵으로 시각화하는 GUI 기능도 갖고 있습니다. 또한 시스템에 장애가 발생한 경우, 관리자에게 메일을 보내거나 알람이 울리는 등 Alert를 보내는 기능도 있습니다. 대상 서버에 Agent를 설치하여 모니터링하는 경우도 있으며 Agentless로 모니터링 가능한 툴도 있습니다.


물리서버가 중심인 온프레미스 환경에서는 통합 운영 모니터링을 위한 서버와 스토리지를 별도로 두는 것이 일반적입니다. 이러한 통합 운영 모니터링 시스템을 도입하기 위해서는 인프라에 관련된 폭넓은 지식뿐만 아니라 시스템 운영에 관한 실무적인 노하우와 경험도 필수적입니다. 또한 Docker 컨테이너는 필요에 따라 생성 및 삭제가 반복되어 모니터링 대상이 동적으로 변하므로 이에 대응하기 위해서는 기존의 모니털이 방식과는 다른 지식도 필요합니다.


통합 모니터링을 위한 환경을 처음부터 만드는 대신, 컨테이너 모니터링 서비스를 제공하는 SaaS를 이용하는 것도 하나의 방법입니다.



Health Check

Active 장비에 장애가 발생하였을 때 신속하게 교체하기 위해서는 빠른 장애 탐지가 필요합니다. 이 때 필요한 것이 바로 'Health Check'입니다. Health Check는 서버에 일정한 간격으로 신호를 보내고 응답이 오는지 체크하여 정상 가동 중인지를 판단합니다. Health Check 종류는 다음과 같으며 레이어가 높을수록 정확도는 높아지지만 서버에 대한 부하도 커집니다.


Health Check 종류

ICMP 체크(레이어 3): Ping 등으로 응답 확인

포트 체크(레이어 4): 웹 서비스인 경우, 80번 포트로 응답 확인

서비스 체크(레이어 7): HTTP 통신을 확인하는 경우, 특정 페이지가 제대로 표시되는지 확인