서버 모니터링을 위한 6가지 자체 호스팅 경량 도구
서버 모니터링은 기업 운영에서 다양한 시스템들이 원활하게 작동하는지 확인하는 데 필수적인 과정입니다.
기업 규모가 커짐에 따라 자원, 인력, 서비스, 시스템, 그리고 IT 인프라 또한 확장됩니다. 따라서, 서버의 상태, 활동, 그리고 기능을 지속적으로 관찰하는 성능 모니터링 솔루션의 중요성이 부각됩니다.
본 글에서는 서버 모니터링에 유용한 여러 가지 경량의 무료 도구들을 소개하고자 합니다.
모든 IT 관리자들은 서버 충돌, 느린 응용 프로그램, 예기치 않은 작동 중단, 의존성 설정 오류, 메모리 누수 등의 문제들을 마주하게 됩니다. 이러한 문제들을 효과적으로 해결하기 위해서는 IT 모니터링 소프트웨어 또는 애플리케이션이 필요합니다.
Nagios와 Zabbix는 전체 인프라를 모니터링하는 데 널리 사용되는 도구들입니다. 이 도구들을 활용하면 서버 성능, 네트워크 상태, 프로토콜, 운영 체제, 애플리케이션, 웹사이트 등 거의 모든 요소를 모니터링할 수 있습니다.
하지만, 만약 인프라 규모가 크지 않거나 단순히 서버 성능 모니터링에만 초점을 맞추고 있다면, 복잡한 엔드투엔드 도구 대신 자체 호스팅이 가능한 경량 소프트웨어를 사용하여 서버를 모니터링하는 것도 좋은 선택입니다.
참고: Linux 환경에서는 내장 명령어를 사용하여 CPU, 메모리, 프로세스 등을 모니터링할 수 있습니다.
Ward
Ward는 서버 관련 최소한의 주요 정보만을 제공하는 도구입니다. 대부분의 운영 체제와 호환됩니다.
Ward는 OSHI라는 무료 Java 라이브러리를 사용하여 운영 체제 및 하드웨어 정보를 수집합니다. OS 버전, 메모리, 프로세서, 디스크, 파티션, CPU 사용률 등의 정보를 제공합니다.

대시보드는 다음과 같은 다섯 가지 섹션으로 구성되어 있습니다.
- 프로세서: 이름, 사용률(%), 코어 수, 비트, 주파수
- 머신: OS 및 버전, RAM 사용률(%), RAM 용량, RAM 유형, 현재 프로세스 수
- 저장소: 이름, 사용률(%), 저장 용량, 디스크 수, 가상 메모리
- 사용률(%): 지난 20초 동안의 프로세서, 메모리, 저장소 사용률을 시각적으로 보여줍니다.
- Ward: Linux에서는 마지막 부팅 시간 이후의 가동 시간을, Windows에서는 하드 리셋 시간을 표시합니다.
Ward를 실행하려면 프로젝트의 jar 파일을 빌드하거나 최신 릴리스 jar 파일을 다운로드하여 실행하면 됩니다. Docker 컨테이너 내에서 Ward를 실행하는 것도 가능합니다.
Netdata
Netdata는 시스템 및 애플리케이션의 실시간 모니터링을 위한 무료 오픈 소스 소프트웨어입니다. Linux, FreeBSD, macOS, Docker 컨테이너, IoT 장치 등 다양한 환경에서 실행할 수 있습니다.
시스템, 애플리케이션, 컨테이너에 Netdata 에이전트를 설치하면 모든 성능 및 상태 정보를 실시간으로 확인할 수 있습니다.

CPU 사용률을 나타내는 그래프에서 특정 부분을 드래그하여 선택한 후 SHIFT 키와 마우스 휠을 함께 사용하여 확대/축소하면 해당 영역에 대한 세부 정보를 확인할 수 있습니다. Prometheus, AWS Kinesis, Graphite, MongoDB 등 다른 도구들과의 통합도 용이합니다.
Netdata의 주요 기능:
- 빠르고 간편한 설치
- 실시간 데이터 제공
- 노드당 1000개 이상의 메트릭 모니터링
- 서버당 최대 10000개의 메트릭 자동 수집
- 1초 간격으로 데이터 기록
- 사용자 친화적인 대시보드 인터페이스
- 최신 메트릭 시각화 도구를 활용한 이상 패턴 식별
- Netdata 실행에 필요한 최소한의 리소스
Prometheus + Grafana
Prometheus는 시스템 메트릭 모니터링을 위한 오픈 소스 도구이며, Grafana는 오픈 소스 시각화 플랫폼입니다. Prometheus와 Grafana를 함께 사용하면 서버를 효과적으로 모니터링할 수 있는 강력한 환경을 구축할 수 있습니다.

Prometheus 서버는 주기적으로 데이터를 수집하며, 이 데이터는 Grafana의 데이터 소스로 활용됩니다. Grafana는 수집된 메트릭을 대시보드에 시각적으로 표시하며, 사용자는 필요한 메트릭을 쿼리할 수도 있습니다.
이 조합은 충분히 시도해 볼 가치가 있습니다!
Glances
Glances는 Python으로 작성된 크로스 플랫폼 모니터링 도구입니다. Python 2.7 또는 Python 3.4 이상 버전만 지원하며, Python 라이브러리(psutil)를 사용하여 시스템 정보를 수집합니다.
인터페이스 크기(모바일, 웹 UI, 터미널)에 따라 UI에 표시되는 정보가 동적으로 조정됩니다.

Glances의 주요 특징:
- 터미널, 웹 UI 또는 API(XML-RPC 서버 및 RESTful JSON)를 통한 원격 모니터링 지원
- 파일 또는 데이터베이스로 내보낼 수 있는 통계 데이터 제공
- pip install glances 명령어로 간편하게 설치
- Glances용 Docker 컨테이너 제공
더욱 정교한 시각화가 필요하다면 Glances에서 InfluxDB로 데이터를 내보내고 Grafana에서 시각화할 수 있습니다.
Linux Dash
Linux Dash는 Linux 시스템을 위한 웹 대시보드입니다. Linux Dash의 UI는 Angular를 기반으로 하며, 서버 측은 다양한 언어를 지원합니다.
시스템 상태 탭에서는 RAM 사용률, CPU 평균 부하, CPU 사용률, CPU 및 RAM 프로세스, 디스크 파티션, 스왑 사용률, CPU 온도, Docker 프로세스 정보를 확인할 수 있습니다.

또한, 네트워크, 계정, 애플리케이션 수준의 정보도 제공합니다.
Linux Dash의 주요 기능:
- WebSocket을 통한 실시간 시스템 데이터 시각화 제공
- 드래그 앤 드롭 UI
- 대시보드에서 사용자 지정 가능한 화면(최소화, 확대, 조정)
- Node.js, Python, Go, PHP 등 다양한 언어로 서버 측 구현 가능
Conky
Conky는 원래 X 윈도우 시스템을 위해 개발된 시스템 모니터입니다. 현재는 다양한 플랫폼에서 작동하며, X, Linux, Mac OS(X Quartz 사용), 대부분의 BSD에서 실행할 수 있습니다.
다양한 글꼴과 색상을 사용하여 단순한 텍스트 또는 버스 진행률 표시줄, 그래프 위젯 등을 통해 정보를 표시합니다.

Conky의 주요 기능:
- 시스템 상태를 표시하는 300개 이상의 내장 객체
- 매우 단순한 사용자 인터페이스
- Audacious, MPD 등의 음악 플레이어 지원
- POP3 및 IMAP 지원
- 스크립트 및 외부 프로그램을 통한 모든 정보 표시 가능
결론
서버 성능 모니터링은 매우 중요한 과정입니다. 제대로 관리되지 않으면 성능 저하 및 작동 중단과 같은 문제가 발생하여 사업 운영에 지장을 초래할 수 있습니다. 하지만 적절한 모니터링 소프트웨어 솔루션을 사용한다면 서버가 원활하게 작동하는지 지속적으로 확인하여 이러한 문제들을 예방할 수 있습니다.
또 다른 방법으로는 모니터링 소프트웨어를 설치하고 관리할 필요가 없는 클라우드 기반 서버 모니터링 솔루션을 고려해 볼 수도 있습니다.