RHEL 실전 #4 모니터링: Cockpit, PCP

10 분 소요

웹 서버, 데이터베이스, 컨테이너 워크로드를 차례로 올렸다면 이제 그 위에서 무슨 일이 벌어지는지 들여다볼 차례입니다. CPU가 어디서 튀는지, 메모리가 어느 프로세스에 묶여 있는지, 디스크가 언제 포화됐는지를 보지 못하면 장애가 터졌을 때 손쓸 곳을 찾지 못합니다. 이번 글에서는 RHEL의 모니터링을 두 축으로 정리하겠습니다. 브라우저로 서버를 관리하는 웹 콘솔 Cockpit과, 성능 메트릭을 수집하고 기록하는 Performance Co-Pilot(PCP)입니다.

두 도구는 역할이 다릅니다. Cockpit은 지금 이 순간의 상태를 한눈에 보고 서비스를 손보는 관리 콘솔이고, PCP는 메트릭을 꾸준히 쌓아 두었다가 과거를 되짚는 기록 장치입니다. RHEL에서는 이 둘이 맞물려 동작하므로, Cockpit 화면 안에서 PCP가 모아 둔 성능 그래프를 그대로 볼 수 있습니다. 먼저 Cockpit부터 올리겠습니다.

Cockpit: 브라우저로 서버를 관리하는 웹 콘솔 #

Cockpit은 Red Hat이 RHEL에 기본으로 실어 둔 웹 기반 관리 콘솔입니다. 터미널 없이 브라우저만으로 서비스 시작,정지, 스토리지 확인, 로그 열람, 네트워크 설정, 심지어 웹 터미널까지 한 화면에서 처리할 수 있습니다. SSH에 익숙하지 않은 동료와 서버를 함께 운영하거나, 여러 대를 한곳에서 묶어 보고 싶을 때 특히 유용합니다.

설치와 서비스 등록 #

최소 설치 RHEL에는 Cockpit이 빠져 있을 수 있으므로 dnf로 설치합니다.

# 설치
sudo dnf install -y cockpit

# 부팅 시 자동 시작 + 즉시 시작 (한 번에)
sudo systemctl enable --now cockpit.socket

# 상태 확인
systemctl status cockpit.socket

여기서 등록하는 단위가 cockpit.service가 아니라 cockpit.socket이라는 점이 중요합니다. Cockpit은 socket activation 방식으로 동작해, 평소에는 소켓만 대기하다가 누군가 9090 포트로 접속하는 순간 서비스가 깨어납니다. 접속이 없을 때는 메모리를 거의 쓰지 않으므로, 관리 콘솔을 상시 띄워 두는 부담이 적습니다.

firewalld로 9090 포트 열기 #

Cockpit은 9090 포트를 씁니다. RHEL 실전 #1에서 다룬 방화벽 흐름 그대로, 서비스 단위로 영구 개방하겠습니다. firewalld에는 cockpit 서비스 정의가 이미 들어 있어 포트 번호를 직접 적지 않아도 됩니다.

# cockpit 서비스 영구 허용
sudo firewall-cmd --add-service=cockpit --permanent

# 반영
sudo firewall-cmd --reload

# 확인
sudo firewall-cmd --list-services

--permanent로 영구 규칙을 만든 뒤 --reload로 런타임에 반영하는 두 단계는 RHEL 방화벽 작업의 기본 흐름입니다. 빠뜨리면 재부팅 후 9090이 다시 막힙니다.

브라우저로 접속 #

이제 다른 PC의 브라우저에서 https://서버주소:9090으로 접속합니다. http가 아니라 https인 점에 주의합니다. Cockpit은 처음에 자체 서명 인증서를 쓰므로 브라우저가 경고를 띄우는데, 내부 망에서는 예외로 진행해도 무방합니다. 외부에 노출하는 경우라면 정식 인증서로 교체하거나 reverse proxy 뒤에 두는 편이 안전합니다.

로그인 화면에서는 서버의 일반 사용자 계정으로 들어갑니다. 로그인 뒤 화면에서 권한이 필요한 작업을 할 때는 상단의 관리자 권한(Administrative access)을 켜면 sudo 권한으로 전환됩니다.

Cockpit으로 무엇을 하는가 #

로그인하면 왼쪽 메뉴에서 다음을 다룰 수 있습니다.

  • 개요(Overview). CPU,메모리,디스크 사용률을 실시간 그래프로 보여 줍니다. 하드웨어 정보와 가동 시간(uptime)도 여기서 확인합니다.
  • 서비스(Services). systemd 단위 목록입니다. 클릭 한 번으로 서비스를 시작,정지,재시작하고, enable 여부를 토글합니다. RHEL 실전 #1에서 명령으로 다룬 systemctl을 화면으로 대신하는 셈입니다.
  • 로그(Logs). journald 로그를 우선순위,시간,단위로 걸러 봅니다. 터미널의 journalctl을 시각화한 화면입니다.
  • 스토리지(Storage). 파일시스템 사용량, 마운트 상태, LVM 볼륨을 확인하고 디스크 입출력 추이를 봅니다.
  • 터미널(Terminal). 브라우저 안에서 곧바로 셸을 띄웁니다. 화면으로 처리되지 않는 작업은 여기서 명령으로 마무리합니다.

애드온으로 기능 확장 #

Cockpit은 패키지를 더 얹어 기능을 넓힐 수 있습니다. 앞선 글에서 다룬 컨테이너와 가상화를 화면으로 관리하려면 다음을 설치합니다.

# Podman 컨테이너를 Cockpit에서 관리
sudo dnf install -y cockpit-podman

# 가상 머신(KVM)을 Cockpit에서 관리
sudo dnf install -y cockpit-machines

cockpit-podman을 설치하면 RHEL 실전 #3에서 올린 Podman 컨테이너를 Cockpit 화면에서 보고, 이미지를 받거나 컨테이너를 시작,정지할 수 있습니다. cockpit-machines는 같은 방식으로 KVM가상 머신을 다룹니다. 애드온은 설치 즉시 왼쪽 메뉴에 항목으로 나타나므로 별도의 등록 작업이 필요 없습니다. 다만 애드온을 깔수록 Cockpit이 다룰 수 있는 범위가 넓어지는 만큼, 외부에 노출하는 콘솔이라면 실제로 쓰는 애드온만 골라 설치하는 편이 공격 면을 줄이는 길입니다.

여러 대의 RHEL을 운영한다면 한 대의 Cockpit에서 다른 서버를 끌어와 함께 관리할 수도 있습니다. 좌측 상단의 호스트 선택에서 다른 서버를 SSH로 등록하면, 그 서버에도 Cockpit이 떠 있을 경우 화면을 전환하며 여러 대를 한 콘솔에서 오갈 수 있습니다.

PCP: 성능을 기록하는 Performance Co-Pilot #

Cockpit이 지금을 보여 준다면, PCP는 과거를 되짚게 해 줍니다. Performance Co-Pilot은 시스템 곳곳의 메트릭을 일정 간격으로 수집하고 디스크에 아카이브로 쌓아 두는 성능 모니터링 프레임워크입니다. 새벽 3시에 CPU가 튀었다는 신고를 다음 날 아침에 받았을 때, PCP 아카이브가 있으면 그 시각으로 되돌아가 무슨 일이 있었는지 확인할 수 있습니다.

설치와 서비스 등록 #

# 설치
sudo dnf install -y pcp

# 메트릭 수집 데몬과 로깅 데몬을 함께 시작
sudo systemctl enable --now pmcd
sudo systemctl enable --now pmlogger

# 상태 확인
systemctl status pmcd pmlogger

PCP는 두 개의 핵심 서비스로 나뉩니다. pmcd(Performance Metrics Collector Daemon)는 메트릭을 모으는 수집 데몬이고, pmlogger는 그렇게 모은 메트릭을 주기적으로 디스크에 기록하는 로깅 데몬입니다. 실시간 조회만 한다면 pmcd만으로 충분하지만, 과거를 되짚으려면 pmlogger까지 켜서 아카이브를 남겨야 합니다.

실시간 메트릭 조회 #

PCP는 명령으로 메트릭을 곧장 뽑아 볼 수 있습니다. 자주 쓰는 셋을 정리하겠습니다.

# vmstat 스타일의 시스템 요약을 주기적으로 출력
pmstat

# 지정한 메트릭을 표 형태로 출력 (2초 간격, 5회)
pmrep -t 2 -s 5 kernel.all.load mem.util.free

# 단일 메트릭의 값만 간단히 확인
pmval -t 1 -s 3 kernel.all.cpu.user

pmstat은 시스템 전반을 vmstat처럼 한 줄에 요약해 빠르게 훑을 때 씁니다. pmrep은 원하는 메트릭을 골라 표로 뽑는 도구로, CPU,메모리,디스크를 한 화면에 나란히 보고 싶을 때 유용합니다. pmval은 메트릭 하나의 값만 추적하므로 특정 지표를 좁혀 들여다볼 때 적합합니다. 사용 가능한 메트릭 이름은 pminfo 명령으로 전체 목록을 확인할 수 있습니다.

과거 데이터 아카이브 #

pmlogger가 남기는 아카이브는 /var/log/pcp/pmlogger 아래에 호스트 이름별 디렉터리로 쌓입니다. 하루 단위 파일로 보관되며, 같은 조회 명령에 -a 옵션으로 아카이브를 지정하면 그 시점의 데이터를 다시 읽어 옵니다.

# 아카이브 디렉터리 확인
ls /var/log/pcp/pmlogger/$(hostname)/

# 어제 아카이브에서 특정 시간대의 부하를 다시 조회
pmrep -a /var/log/pcp/pmlogger/$(hostname)/20260505 \
      -S @03:00 -T @04:00 kernel.all.load

-S는 시작 시각, -T는 종료 시각을 뜻합니다. 이렇게 하면 실시간이 아니라 기록된 과거 구간을 그대로 재생하듯 들여다볼 수 있습니다. 아카이브가 디스크를 너무 차지한다면 PCP에 딸린 정리 작업이 오래된 파일을 자동으로 압축하고 보관 기간이 지난 것을 지우므로, 보관 정책만 설정에 맞춰 두면 됩니다. 기본값으로도 며칠치는 무난히 쌓이지만, 장기 추세를 봐야 하는 서버라면 보관 기간을 늘리고 그만큼 디스크 여유를 확보해 두겠습니다.

여러 대를 운영한다면 한 대를 중앙 수집 서버로 두고 다른 서버의 pmlogger가 그쪽으로 메트릭을 보내도록 묶을 수도 있습니다. 다만 처음부터 중앙화에 손대기보다, 우선 각 서버에서 로컬 아카이브를 남기는 기본 구성으로 시작해 운영에 익숙해진 뒤 확장하는 편이 안전합니다.

Cockpit과 연동해 성능 그래프 보기 #

PCP의 진가는 Cockpit과 연동할 때 드러납니다. 두 도구를 잇는 패키지를 설치하면, Cockpit 화면 안에서 PCP가 모아 둔 메트릭을 그래프로 볼 수 있습니다.

# Cockpit과 PCP를 잇는 패키지
sudo dnf install -y cockpit-pcp

설치한 뒤 Cockpit에 다시 접속하면 개요 화면의 그래프가 단순한 실시간 표시를 넘어, 과거 구간으로 시간을 거슬러 올라가며 CPU,메모리,디스크,네트워크 추이를 보여 줍니다. 명령으로 아카이브를 직접 읽는 대신 화면에서 시간 막대를 끌어 원하는 시점을 짚을 수 있어, 장애 시각을 시각적으로 빠르게 좁힐 때 편합니다.

기본 모니터링 명령은 여전히 손에 익혀 둡니다 #

Cockpit과 PCP를 갖춰도 터미널의 기본 명령은 여전히 가장 빠른 진단 도구입니다. SSH로 막 들어간 서버에서 무언가 이상할 때, 추가 설치 없이 곧장 쓸 수 있기 때문입니다. top은 CPU,메모리를 많이 쓰는 프로세스를 실시간 순위로 보여 주고, ss -tlnp는 어떤 포트가 어느 프로세스에 열려 있는지 확인하며, journalctl -u 서비스명 -f는 특정 서비스의 로그를 실시간으로 따라갑니다. 그리고 sar은 PCP를 들이기 전에 가장 가볍게 과거 데이터를 보는 도구로, sysstat 패키지가 수집해 둔 CPU,메모리,디스크 통계를 시간대별로 돌아보게 해 줍니다.

이 명령들을 언제 꺼내 쓰는지 정리하면 이렇습니다. 장애 신고를 받고 막 접속한 직후에는 top으로 부하의 주범을, ss로 포트 상태를, journalctl로 직전 로그를 1차로 훑습니다. 그 자리에서 원인이 보이지 않고 과거를 되짚어야 할 때 PCP 아카이브나 sar로 넘어가며, 여러 지표를 한 화면에서 시각적으로 비교하고 싶을 때 Cockpit으로 올라가는 흐름이 자연스럽습니다. 도구가 많다고 한꺼번에 다 켜는 것이 아니라, 가벼운 명령부터 무거운 콘솔로 단계를 밟아 좁혀 가는 순서가 진단을 빠르게 만듭니다.

운영 포인트 #

  • Cockpit은 socket activation. cockpit.socket을 enable하면 접속이 있을 때만 서비스가 깨어나므로 평소 부담이 적습니다.
  • 9090은 https. 브라우저에서 https://서버:9090으로 접속하고, 외부 노출 시에는 정식 인증서나 reverse proxy를 둡니다.
  • PCP는 pmcd와 pmlogger 둘 다. 실시간만 보려면 pmcd로 충분하지만, 과거를 되짚으려면 pmlogger까지 켜서 아카이브를 남깁니다.
  • 아카이브는 -a로 재생. /var/log/pcp/pmlogger 아래의 아카이브를 조회 명령의 -a 옵션으로 지정하면 과거 시점을 그대로 들여다봅니다.
  • 연동은 cockpit-pcp. 이 패키지를 깔면 Cockpit 화면에서 PCP 그래프를 시간 막대로 거슬러 보며 장애 시각을 빠르게 좁힙니다.
  • 기본 명령은 늘 우선. top,ss,journalctl,sar은 추가 설치 없이 즉시 쓰는 1차 진단 도구입니다.

정리 #

이번 글에서 잡은 것을 정리하겠습니다. Cockpit으로 브라우저에서 서비스,스토리지,로그,터미널을 한 화면에 다루고, 애드온으로 컨테이너와 가상 머신까지 끌어왔습니다. PCP로는 메트릭을 실시간으로 조회하고 pmlogger 아카이브로 과거를 되짚었으며, cockpit-pcp로 둘을 이어 화면에서 성능 그래프를 시간순으로 살펴봤습니다. 마지막으로 top,ss,journalctl,sar 같은 기본 명령이 여전히 가장 빠른 1차 진단 수단이라는 점을 확인했습니다. 지금을 보는 도구와 과거를 기록하는 도구를 함께 갖추면, 장애가 터졌을 때 손쓸 곳을 비로소 찾을 수 있습니다.

모니터링은 한 번 설정하고 잊는 작업이 아니라, 평소에 정상 상태가 어떤 모습인지를 눈에 익혀 두는 일에 가깝습니다. 부하가 평소 어느 선을 오가는지 알아 둬야, 그 선을 벗어났을 때 비로소 이상을 알아챌 수 있기 때문입니다. PCP 아카이브를 며칠치 쌓아 두고 Cockpit 그래프를 가끔 들여다보는 습관이, 막상 장애가 닥쳤을 때 가장 든든한 기준선이 됩니다.

다음: Ansible로 RHEL 자동화 #

여기까지 웹,DB,컨테이너,모니터링을 한 대씩 손으로 올리며 RHEL 운영의 한 사이클을 익혔습니다. 그런데 서버가 한 대가 아니라 열 대, 백 대로 늘어나면 같은 작업을 손으로 반복하는 것은 곧 한계에 부딪힙니다.

#5 Ansible로 RHEL 자동화: RHCE 트랙으로 연결에서는 지금까지 손으로 한 설치,서비스 등록,방화벽,SELinux 작업을 Ansible 플레이북으로 옮겨, 여러 대의 RHEL을 한 번에 일관되게 구성하는 법을 정리하겠습니다. 더불어 이 흐름이 Red Hat의 RHCE 자격증과 어떻게 이어지는지도 함께 짚겠습니다.

X