카테고리 없음

서버 모니터링 시스템 구축 기초: Prometheus와 Grafana로 서버 상태 확인하기

14722 2026. 8. 24. 21:50

리눅스 서버를 운영하다 보면 서버가 느려지는 순간을 미리 발견하고 싶을 때가 있습니다.

CPU 사용량이 갑자기 높아지거나 메모리가 부족해지고, 디스크 공간이 빠르게 줄어드는 문제는 서비스 장애로 이어질 수 있습니다. 그런데 문제가 발생한 뒤에만 서버 상태를 확인한다면 원인을 찾는 데 많은 시간이 걸릴 수 있습니다.

이럴 때 활용할 수 있는 것이 Prometheus와 Grafana를 이용한 서버 모니터링 시스템입니다.

Prometheus는 서버에서 발생하는 다양한 상태 정보를 수집하고 저장하는 역할을 하며, Grafana는 수집된 데이터를 그래프와 대시보드 형태로 보기 쉽게 보여주는 도구입니다.

이번 글에서는 리눅스 서버 모니터링의 기본 개념부터 Prometheus와 Grafana를 이용해 CPU, 메모리, 디스크 사용량을 확인하는 기본적인 방법까지 초보자도 이해하기 쉽게 알아보겠습니다.


1. 서버 모니터링이 필요한 이유

서버는 24시간 실행되는 경우가 많기 때문에 사용자가 직접 계속 상태를 확인하기 어렵습니다.

다음과 같은 문제가 발생하면 서비스 속도가 느려지거나 서버 장애가 발생할 수 있습니다.

CPU 사용량 급증
메모리 부족
디스크 공간 부족
서버 응답 시간 증가
특정 프로세스의 자원 과다 사용
네트워크 사용량 증가

예를 들어 서버의 디스크 사용량이 90%를 넘어가도 관리자가 알지 못한다면 로그 파일이나 새로운 데이터를 저장하지 못하는 상황이 발생할 수 있습니다.

따라서 서버 운영에서는 현재 상태를 확인하는 것뿐만 아니라 변화 추이를 지속적으로 관찰하는 것이 중요합니다.

2. Prometheus란 무엇인가?

Prometheus는 서버와 애플리케이션에서 발생하는 메트릭(metric)을 수집하고 저장하는 모니터링 시스템입니다.

여기서 메트릭은 서버 상태를 숫자로 표현한 데이터라고 생각하면 쉽습니다.

예를 들어 다음과 같은 정보를 수집할 수 있습니다.

CPU 사용률
메모리 사용량
디스크 사용량
네트워크 트래픽
시스템 부하
애플리케이션 상태

Prometheus는 수집한 데이터를 시간에 따라 저장하기 때문에 특정 시점의 상태뿐만 아니라 시간이 지나면서 서버 상태가 어떻게 변했는지도 확인할 수 있습니다.

3. Grafana란 무엇인가?

Grafana는 Prometheus와 함께 많이 사용하는 시각화 도구입니다.

Prometheus가 데이터를 수집하고 저장한다면 Grafana는 그 데이터를 사람이 보기 편하도록 그래프와 대시보드로 표시해 줍니다.

예를 들어 다음과 같은 화면을 만들 수 있습니다.

┌────────────────────────────────────┐
│       Linux Server Monitoring      │
├──────────────┬─────────────────────┤
│ CPU 사용률   │      32%            │
├──────────────┼─────────────────────┤
│ 메모리       │      58%            │
├──────────────┼─────────────────────┤
│ 디스크       │      71%            │
├──────────────┴─────────────────────┤
│ CPU 사용량 변화 그래프             │
│      ╱╲      ╱╲                    │
│  ───╯  ╲────╯  ╲────               │
└────────────────────────────────────┘

이처럼 서버 상태를 한 화면에서 확인할 수 있기 때문에 장애 상황을 빠르게 파악하는 데 도움이 됩니다.

4. Prometheus와 Grafana의 역할 차이

두 도구의 역할을 간단하게 구분하면 다음과 같습니다.

도구 주요 역할
Prometheus 서버 상태 데이터 수집 및 저장
Grafana 수집된 데이터를 그래프로 시각화
Node Exporter 리눅스 서버의 시스템 메트릭 제공

즉 전체적인 구조는 다음과 같습니다.

리눅스 서버
     ↓
Node Exporter
     ↓
Prometheus
     ↓
Grafana
     ↓
모니터링 대시보드

이 구조를 이해하면 Prometheus와 Grafana가 어떤 방식으로 함께 작동하는지 쉽게 이해할 수 있습니다.

5. Node Exporter란?

리눅스 서버의 CPU, 메모리, 디스크 등의 정보를 Prometheus가 수집하려면 데이터를 제공해 주는 구성 요소가 필요합니다.

대표적으로 사용하는 것이 Node Exporter입니다.

Node Exporter는 리눅스 시스템에서 다양한 하드웨어 및 운영체제 관련 메트릭을 제공하는 역할을 합니다.

예를 들어 다음과 같은 데이터를 확인할 수 있습니다.

CPU 사용량
메모리 사용량
디스크 사용량
파일 시스템 상태
네트워크 관련 정보

따라서 기본적인 리눅스 서버 모니터링을 구성할 때는 Prometheus + Node Exporter + Grafana 조합을 많이 사용합니다.

6. 모니터링 시스템의 전체 구조

간단한 서버 모니터링 환경을 구성하면 다음과 같은 형태가 됩니다.

[Linux Server]
      │
      │ 서버 상태 정보
      ▼
[Node Exporter]
      │
      ▼
[Prometheus]
      │
      │ 메트릭 조회
      ▼
[Grafana]
      │
      ▼
[그래프 / 대시보드]

각 프로그램의 역할을 기억해 두면 좋습니다.

Node Exporter → 정보를 제공

Prometheus → 정보를 수집하고 저장

Grafana → 정보를 보기 좋게 표시

7. Prometheus 설치 전 서버 확인하기

모니터링 시스템을 설치하기 전에 리눅스 서버의 기본 상태를 먼저 확인하는 것이 좋습니다.

CPU와 메모리는 다음 명령어로 확인할 수 있습니다.

top

디스크 공간은 다음 명령어로 확인합니다.

df -h

메모리는 다음 명령어로 확인할 수 있습니다.

free -h

이렇게 현재 서버의 상태를 먼저 확인해 두면 모니터링 시스템을 구성한 이후 수집되는 데이터와 비교하기도 쉽습니다.

8. Prometheus 설정의 기본 개념

Prometheus는 설정 파일을 통해 어떤 대상에서 데이터를 수집할지 지정합니다.

대표적인 설정 파일은 다음과 같습니다.

prometheus.yml

기본적인 구조는 다음과 같은 형태입니다.

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: "linux-server"
    static_configs:
      - targets: ["localhost:9100"]

여기에서 scrape_interval은 데이터를 수집하는 간격을 지정합니다.

9100 포트는 일반적으로 Node Exporter가 메트릭을 제공할 때 사용하는 포트입니다.

실제 운영 환경에서는 서버 구성과 보안 정책에 맞게 설정해야 합니다.

9. Prometheus가 데이터를 수집하는 방식

Prometheus의 중요한 특징 중 하나는 대상 서버의 메트릭을 주기적으로 가져오는 방식입니다.

예를 들어 Node Exporter가 다음과 같은 데이터를 제공한다고 가정해 보겠습니다.

CPU 사용률
메모리 사용량
디스크 사용량
네트워크 사용량

Prometheus가 일정한 간격으로 해당 데이터를 가져와 저장합니다.

시간이 지나면서 데이터가 쌓이면 Grafana를 이용해 다음과 같은 질문에 답할 수 있습니다.

"현재 CPU 사용량은 얼마나 되는가?"

뿐만 아니라

"지난 1시간 동안 CPU 사용량이 어떻게 변했는가?"

와 같은 분석도 가능합니다.

10. Grafana에서 서버 상태 확인하기

Grafana에서는 Prometheus를 데이터 소스로 연결한 후 원하는 대시보드를 구성할 수 있습니다.

예를 들어 다음과 같은 항목을 한 화면에 배치할 수 있습니다.

CPU 사용량

현재 CPU 사용률과 시간에 따른 변화를 확인합니다.

메모리 사용량

전체 메모리 중 얼마나 사용하고 있는지 확인합니다.

디스크 사용량

디스크 공간이 얼마나 남아 있는지 확인합니다.

네트워크 사용량

서버의 네트워크 트래픽 변화를 확인합니다.

이렇게 구성하면 서버에 직접 접속하지 않아도 대시보드에서 서버의 상태를 빠르게 파악할 수 있습니다.

11. 서버 장애를 예방하는 데 어떻게 도움이 될까?

모니터링 시스템의 가장 큰 장점은 문제가 발생한 후 확인하는 것이 아니라 이상 징후를 미리 발견할 수 있다는 점입니다.

예를 들어 평소 CPU 사용량이 20~30%인 서버가 갑자기 90% 이상을 계속 유지한다면 문제가 발생했을 가능성을 확인할 수 있습니다.

또한 디스크 사용량이 다음과 같이 증가한다고 가정해 보겠습니다.

월요일   60%
화요일   65%
수요일   72%
목요일   81%
금요일   89%

이런 변화가 보인다면 디스크가 가득 차기 전에 로그 파일이나 불필요한 데이터를 확인할 수 있습니다.

따라서 모니터링은 단순한 그래프 표시가 아니라 서버 장애를 예방하기 위한 관리 도구라고 볼 수 있습니다.

12. Prometheus와 Grafana를 사용할 때 주의할 점

모니터링 시스템 자체도 서버 자원을 사용합니다.

따라서 모니터링 서버를 구성할 때는 다음 사항을 고려해야 합니다.

메트릭 수집 주기
데이터 보관 기간
모니터링 대상 서버 수
Grafana 대시보드 개수
Prometheus 저장 공간
접근 권한 및 네트워크 보안

특히 Prometheus가 수집하는 데이터가 계속 증가하면 저장 공간도 필요합니다.

따라서 디스크 용량과 데이터 보관 정책을 함께 관리하는 것이 중요합니다.

13. 초보자를 위한 서버 모니터링 구성 순서

처음 Prometheus와 Grafana를 사용한다면 다음 순서로 접근하는 것이 좋습니다.

1단계
리눅스 서버 상태 확인
        ↓
2단계
Node Exporter 설치
        ↓
3단계
Prometheus 설치 및 설정
        ↓
4단계
메트릭 수집 확인
        ↓
5단계
Grafana 설치
        ↓
6단계
Prometheus 연결
        ↓
7단계
대시보드 구성
        ↓
8단계
CPU·RAM·디스크 상태 확인

처음부터 모든 기능을 구성하기보다 CPU, 메모리, 디스크 모니터링부터 시작하는 것을 추천합니다.

14. 기존 리눅스 명령어와 함께 사용하기

Prometheus와 Grafana를 설치했다고 해서 기존 리눅스 명령어가 필요 없어지는 것은 아닙니다.

오히려 두 가지를 함께 사용하면 서버 장애 원인을 찾는 데 도움이 됩니다.

예를 들어 Grafana에서 CPU 사용량이 갑자기 높아진 것을 확인했다면 서버에 접속해 다음 명령어를 사용할 수 있습니다.

top

또는 CPU 사용량이 높은 프로세스를 확인합니다.

ps aux --sort=-%cpu | head

메모리 상태를 확인할 때는:

free -h

디스크 상태를 확인할 때는:

df -h

즉 Grafana는 전체적인 상태를 확인하고, 리눅스 명령어는 실제 원인을 분석하는 데 활용할 수 있습니다.

마무리

리눅스 서버를 안정적으로 운영하려면 문제가 발생한 후 해결하는 것뿐만 아니라 서버 상태를 지속적으로 확인하고 이상 징후를 빠르게 발견하는 것이 중요합니다.

Prometheus는 서버와 애플리케이션의 메트릭을 수집하고 저장하며, Grafana는 수집된 데이터를 그래프와 대시보드로 보여주는 역할을 합니다.

여기에 Node Exporter를 함께 사용하면 리눅스 서버의 CPU, 메모리, 디스크, 네트워크 등의 상태를 모니터링할 수 있습니다.

처음 서버 모니터링을 구축한다면 Prometheus + Node Exporter + Grafana의 기본 구조부터 이해하는 것이 좋습니다.

그리고 Grafana에서 이상 현상을 발견했다면 top, ps, free, df 같은 리눅스 명령어를 활용해 실제 원인을 분석하면 됩니다.

결국 좋은 서버 모니터링의 핵심은 "문제가 발생한 뒤 찾는 것"에서 "문제가 커지기 전에 발견하는 것"으로 관리 방식을 바꾸는 것입니다.

함께 알아두면 좋은 리눅스 서버 관리 명령어
top : CPU·메모리와 프로세스 상태 확인
ps : 실행 중인 프로세스 확인
free -h : 메모리 사용량 확인
df -h : 디스크 사용량 확인
df -i : inode 사용량 확인
du -sh : 디렉터리별 디스크 사용량 확인
journalctl : 시스템 로그 확인