홈 서버를 운영하다 보면 CPU 사용률, 메모리 점유율, 디스크 용량, 네트워크 트래픽 등 다양한 정보를 지속적으로 확인해야 합니다. 서버가 갑자기 느려지거나 Docker 컨테이너가 비정상적으로 종료되었을 때 원인을 빠르게 찾으려면 이러한 데이터를 꾸준히 수집하고 기록하는 것이 매우 중요합니다.
이전 글에서는 Grafana를 이용해 서버 정보를 그래프로 시각화하는 방법을 소개했습니다. 하지만 Grafana는 데이터를 직접 수집하는 프로그램이 아니라, 다른 프로그램이 수집한 데이터를 보기 쉽게 표시해 주는 역할을 합니다.
이때 가장 많이 사용하는 데이터 수집 도구가 바로 Prometheus입니다.
Prometheus는 오픈소스 모니터링 시스템으로, 서버와 애플리케이션의 다양한 상태 정보를 주기적으로 수집하고 저장합니다. Grafana와 함께 사용하면 홈 서버의 상태를 실시간으로 확인하고, 장애를 미리 감지할 수 있는 강력한 모니터링 환경을 구축할 수 있습니다.
이번 글에서는 Prometheus가 무엇인지, 어떤 기능을 제공하는지, 그리고 Docker를 이용해 홈 서버에서 운영하는 이유를 자세히 알아보겠습니다.
Prometheus란?
Prometheus는 오픈소스 모니터링 및 시계열 데이터베이스(Time Series Database)입니다.
쉽게 말해 서버의 상태 정보를 일정한 간격으로 수집하고 저장하는 프로그램입니다.
CPU 사용률, 메모리 사용량, 디스크 공간, 네트워크 트래픽, Docker 컨테이너 상태 등 다양한 데이터를 지속적으로 기록하며, 이를 통해 서버의 현재 상태뿐 아니라 과거 변화까지 확인할 수 있습니다.
현재는 개인 홈 서버뿐 아니라 대규모 클라우드 환경과 기업 시스템에서도 널리 사용되고 있는 대표적인 모니터링 솔루션입니다.
Prometheus를 사용하는 이유
홈 서버를 운영하면서 가장 어려운 점은 문제가 발생한 후 원인을 찾는 것입니다.
예를 들어 서버가 새벽에 갑자기 느려졌다면 그 시간에 CPU 사용률이 높았는지, 메모리가 부족했는지, 특정 Docker 컨테이너가 과도한 자원을 사용했는지를 확인해야 합니다.
Prometheus는 이러한 데이터를 지속적으로 저장하기 때문에 과거의 서버 상태를 분석할 수 있습니다.
즉, 단순히 현재 상태를 보는 것이 아니라 시간에 따른 변화까지 확인할 수 있다는 것이 가장 큰 장점입니다.
Prometheus의 주요 기능
Prometheus는 다양한 기능을 제공합니다.
대표적인 기능은 다음과 같습니다.
- CPU 사용률 수집
- 메모리 사용량 수집
- 디스크 사용량 확인
- 네트워크 트래픽 기록
- Docker 컨테이너 모니터링
- 서비스 상태 확인
- 시계열 데이터 저장
- 알림 시스템 연동
- 다양한 Exporter 지원
- Grafana 연동
- 사용자 정의 메트릭 수집
서버 운영에 필요한 대부분의 데이터를 자동으로 수집할 수 있습니다.
시계열 데이터(Time Series Data)란?
Prometheus를 이해하려면 시계열 데이터라는 개념을 알아야 합니다.
시계열 데이터는 시간에 따라 변화하는 데이터를 의미합니다.
예를 들어 CPU 사용률을 1분마다 저장하면 다음과 같은 형태가 됩니다.
- 10:00 → 15%
- 10:01 → 18%
- 10:02 → 25%
- 10:03 → 12%
이처럼 시간과 함께 기록된 데이터를 이용하면 서버의 변화 추이를 쉽게 분석할 수 있습니다.
Grafana가 이러한 데이터를 그래프로 표시해 주는 것입니다.
Prometheus는 어떻게 데이터를 수집할까?
Prometheus는 일정한 주기로 각 서버나 프로그램에 접속하여 정보를 가져옵니다.
이 방식을 Pull 방식이라고 합니다.
즉, Prometheus가 직접 데이터를 요청하고 받아오는 구조입니다.
덕분에 여러 서버와 서비스를 하나의 Prometheus에서 중앙 집중적으로 관리하기 쉽습니다.
Exporter란 무엇인가?
Prometheus와 함께 자주 등장하는 용어가 Exporter입니다.
Exporter는 운영체제나 프로그램의 정보를 Prometheus가 이해할 수 있는 형태로 제공하는 프로그램입니다.
대표적으로 다음과 같은 Exporter가 많이 사용됩니다.
- Node Exporter
- cAdvisor
- Blackbox Exporter
- MySQL Exporter
- PostgreSQL Exporter
- Redis Exporter
예를 들어 Ubuntu Server의 CPU와 메모리 정보를 수집하려면 Node Exporter를 함께 설치하는 것이 일반적입니다.
Docker 환경에서 많이 사용하는 구성
홈 서버에서는 다음과 같은 구성이 가장 많이 사용됩니다.
- Prometheus
- Grafana
- Node Exporter
- cAdvisor
이 조합을 사용하면 운영체제와 Docker 컨테이너의 상태를 모두 모니터링할 수 있습니다.
Docker Compose를 이용하면 네 가지 서비스를 하나의 프로젝트로 관리할 수 있어 설치와 유지보수가 훨씬 편리합니다.
Docker로 Prometheus를 설치하는 이유
Prometheus는 Docker 환경에서 매우 많이 운영됩니다.
Docker를 이용하면 설치가 간단하고 운영체제와 분리된 환경에서 실행되므로 관리가 쉬워집니다.
업데이트도 새로운 이미지를 받아 컨테이너를 다시 실행하는 방식으로 진행할 수 있어 유지보수 부담이 적습니다.
또한 Docker Compose를 사용하면 Grafana와 Exporter까지 함께 관리할 수 있습니다.
Alertmanager와 함께 사용하면 더욱 강력하다
Prometheus는 Alertmanager와 함께 사용하는 경우가 많습니다.
Alertmanager는 Prometheus가 수집한 데이터를 바탕으로 특정 조건이 충족되면 사용자에게 알림을 보내는 프로그램입니다.
예를 들어 다음과 같은 규칙을 설정할 수 있습니다.
- CPU 사용률이 90% 이상이면 알림
- 메모리가 부족하면 알림
- 디스크 용량이 95% 이상이면 알림
- 서버가 응답하지 않으면 알림
이러한 기능을 활용하면 문제가 발생한 후가 아니라 문제가 커지기 전에 대응할 수 있습니다.
Prometheus를 설치하기 전에 준비할 것
원활한 운영을 위해 다음 사항을 준비하는 것이 좋습니다.
- Ubuntu Server
- Docker
- Docker Compose
- Node Exporter
- Grafana
- 안정적인 네트워크 환경
Grafana와 함께 사용하는 것이 일반적이므로 두 서비스를 함께 구축하는 것을 권장합니다.
Prometheus의 장점
1. 실시간 데이터 수집
서버 상태를 일정한 간격으로 자동 수집하여 실시간 모니터링이 가능합니다.
2. 과거 데이터 분석
현재 상태뿐 아니라 과거의 서버 상태도 확인할 수 있어 장애 원인을 분석하는 데 매우 유용합니다.
3. 다양한 Exporter 지원
운영체제뿐 아니라 Docker, 데이터베이스, 웹 서버 등 다양한 서비스를 모니터링할 수 있습니다.
4. Grafana와 완벽한 연동
Prometheus가 수집한 데이터를 Grafana에서 시각화하면 매우 직관적인 모니터링 환경을 구축할 수 있습니다.
5. 오픈소스이며 무료
Prometheus는 오픈소스 프로젝트로 개인 홈 서버 환경에서는 대부분의 기능을 무료로 사용할 수 있습니다.
Prometheus를 사용할 때 주의할 점
Prometheus를 운영할 때는 다음 사항도 함께 고려하는 것이 좋습니다.
- 저장 공간을 주기적으로 관리한다.
- 오래된 데이터를 적절히 삭제한다.
- Prometheus 설정 파일을 백업한다.
- 관리자 접근을 제한한다.
- Docker 이미지를 최신 상태로 유지한다.
모니터링 데이터도 지속적으로 쌓이기 때문에 저장 기간을 적절하게 설정하는 것이 중요합니다.
이런 사용자에게 추천합니다
Prometheus는 다음과 같은 사용자에게 특히 추천합니다.
- 홈 서버를 체계적으로 관리하고 싶은 사용자
- Docker 환경을 운영하는 사용자
- Grafana를 활용하고 싶은 사용자
- 서버 장애를 빠르게 분석하고 싶은 사용자
- 실시간 모니터링 시스템을 구축하고 싶은 사용자
- 서버 운영 경험을 쌓고 싶은 사용자
처음에는 CPU와 메모리 모니터링만으로 시작해도 충분하며, 이후 Docker 컨테이너, 데이터베이스, 스마트홈 기기까지 모니터링 범위를 점차 확장할 수 있습니다.
마무리
Prometheus는 서버와 애플리케이션의 상태 정보를 지속적으로 수집하고 저장하는 대표적인 오픈소스 모니터링 시스템입니다. CPU, 메모리, 디스크, 네트워크, Docker 컨테이너 등 다양한 데이터를 기록할 수 있으며, Grafana와 함께 사용하면 홈 서버의 상태를 직관적인 그래프로 확인할 수 있습니다.
특히 Docker와 Docker Compose를 활용하면 설치와 관리가 간편하며, Node Exporter와 Alertmanager를 함께 구성하면 실시간 모니터링과 장애 알림까지 자동화할 수 있습니다. 홈 서버를 안정적으로 운영하고 문제를 빠르게 해결하고 싶다면 Prometheus는 반드시 익혀둘 가치가 있는 핵심 도구입니다.