RHEL 고급 #7 Cockpit으로 GUI 관리와 web console — 시리즈 마무리
여기까지 RHEL 고급 시리즈는 6편 모두 CLI 중심이었습니다. 마지막 한 편은 그 위에 GUI 한 층을 얹습니다. Red Hat이 공식 권장하는 web console Cockpit 입니다. SSH로 접속해서 vi /etc/...로 일일이 고치지 말고, 브라우저에서 한 번에 보는 게 더 빠른 경우들이 있습니다. 이 글에서는 Cockpit의 쓰임, 자주 쓰는 모듈, 다중 머신 관리, 그리고 시리즈 7편을 한 묶음으로 마무리합니다.
RHEL 고급 시리즈에서 이번 글의 위치:
- #1 부팅 프로세스 — GRUB2, dracut, 복구 모드
- #2 커널 튜닝 — sysctl, tuned, kdump
- #3 성능 분석 — sar, top/htop, iostat, vmstat, perf
- #4 SELinux 고급 — 정책 직접 작성과 audit2allow
- #5 보안 강화 — auditd, OpenSCAP, FIPS
- #6 Subscription, Satellite, Insights — 운영 인프라
- #7 Cockpit으로 GUI 관리와 web console — 시리즈 마무리 ← 이번 글
Cockpit의 위치 #
CLI (ssh + vi) | Cockpit | |
|---|---|---|
| 학습 곡선 | 높음 | 낮음 |
| 자동화 | 우수 (스크립트화 가능) | 어려움 (수동 작업 중심) |
| 한 화면에서 보기 | 어려움 (htop, journalctl, ss 등 따로) | 우수 (대시보드에 다 모여 있음) |
| 다중 머신 | Ansible 등 별도 | Cockpit 자체에 dashboard |
| RHEL 표준 | 네 (모든 운영자) | 네 (RHEL 8부터 web console 공식) |
CLI를 못 한다는 뜻이 아니라, CLI가 강력하지만 시야가 좁다는 부분에 Cockpit을 두는 게 표준입니다. 처음 접속한 머신의 큰 그림(서비스가 뭐가 떠 있는지, 디스크가 어떻게 잡혀 있는지, 컨테이너가 몇 개 도는지)을 잡을 때 가장 빠른 도구입니다.
설치와 활성화 #
RHEL 9에는 보통 이미 설치돼 있습니다.
$ sudo systemctl status cockpit.socket
○ cockpit.socket - Cockpit Web Service Socket
Loaded: loaded (/usr/lib/systemd/system/cockpit.socket; disabled; preset: disabled)
# 활성화
$ sudo systemctl enable --now cockpit.socket
# 방화벽 — Cockpit은 9090/tcp 사용
$ sudo firewall-cmd --add-service=cockpit --permanent
$ sudo firewall-cmd --reload중요한 점: cockpit.service가 아닌 cockpit.socket을 활성화. socket activation 패턴이라 평소엔 데몬이 안 떠 있다가 9090 포트에 접속이 들어오면 그 시점에 깨어납니다. 평소 자원 사용이 거의 0.
접속 #
브라우저에서:
https://<host>:9090기본 인증서가 self-signed이므로 첫 접속에서 경고가 뜹니다. 운영 머신에는 Let’s Encrypt 인증서나 사내 CA 인증서를 /etc/cockpit/ws-certs.d/에 두는 게 표준.
/etc/cockpit/ws-certs.d/0-self-signed.cert # 기본 self-signed
/etc/cockpit/ws-certs.d/1-fullchain.pem # 커스텀 (알파벳 순으로 마지막이 우선)로그인 #
PAM으로 인증하므로 시스템 사용자 그대로 로그인합니다. sudo 권한이 있는 사용자라면 좌상단 “Limited access” 토글로 관리자 모드 전환.
브라우저 → https://<host>:9090
│
▼
PAM 인증 (passwd / SSH key / FreeIPA ...)
│
▼
세션 시작 → 권한이 있으면 "관리자 액세스" 활성기본 모듈 — 무엇을 볼 수 있나 #
설치 시점에 따라오는 핵심 모듈.
| 메뉴 | 무엇을 |
|---|---|
| Overview | CPU/메모리/디스크/네트워크 실시간 그래프, 시스템 정보 |
| Logs | journalctl의 GUI — 우선순위/시간/식별자 필터 |
| Networking | NetworkManager 통합 — 인터페이스, bonding, VLAN, firewalld |
| Storage | LVM, 파일시스템, NFS, iSCSI, RAID, Stratis (RHEL 8/9 전용) |
| Accounts | 사용자 / 그룹 관리, 비밀번호 정책, SSH key 관리 |
| Services | systemd 서비스 — start/stop/enable/disable, 로그 조회 |
| Software Updates | dnf upgrade GUI, 자동 업데이트 설정 |
| Terminal | 브라우저 안의 SSH 셸 |
추가 모듈 (별도 설치) #
$ sudo dnf install -y \
cockpit-podman \ # 컨테이너 관리
cockpit-machines \ # KVM/libvirt VM 관리
cockpit-pcp \ # 성능 분석 (PCP 통합)
cockpit-files \ # 파일 매니저
cockpit-storaged \ # 고급 스토리지 (Stratis 등)
cockpit-selinux \ # SELinux 거부 분석
cockpit-packagekit # 패키지 관리설치하면 메뉴에 자동으로 추가됩니다.
자주 쓰는 흐름 #
1. 새 머신 첫 점검 #
Overview → CPU/메모리/디스크 큰 그림
Networking → 인터페이스 IP, 라우팅, 방화벽
Storage → 디스크 파티션, LVM 구성, 마운트
Services → 떠 있는 서비스, 활성화 상태
Logs → 최근 에러5분이면 머신의 전체 상태를 손에 잡을 수 있습니다. SSH로 들어가 df -h && free -h && ss -tlnp && systemctl list-units --state=failed && journalctl -p err -n 50을 도는 것과 동일하지만 시각적으로 한 화면에 모입니다.
2. 컨테이너 운영 — cockpit-podman #
중급 #7에서 본 Podman을 GUI로:
- 실행 중인 컨테이너 목록
- 이미지 풀/빌드/제거
- 컨테이너 시작/중지/재시작
- 로그 실시간 조회
- 환경 변수, 마운트, 포트 매핑 시각화
- Pod 그룹 관리
podman ps, podman logs -f가 익숙해도 처음 접속한 머신에서 컨테이너 구성 전체를 한 번에 보려면 GUI가 빠릅니다. 운영 사이클에서 둘을 같이 쓰는 게 표준.
3. 성능 분석 — cockpit-pcp #
#3 성능 분석에서 본 sar/iostat의 데이터를 GUI 그래프로. Performance Co-Pilot (PCP)를 백엔드로 쓰는 시계열 그래프입니다.
$ sudo dnf install -y cockpit-pcp pcp
$ sudo systemctl enable --now pmcd pmlogger설치 후 Cockpit Overview에서 CPU/메모리/디스크/네트워크의 시계열 그래프를 볼 수 있습니다 — sar가 로그 파일로 남기는 데이터를 GUI로 시각화한 것.
4. SELinux 거부 분석 — cockpit-selinux #
#4 SELinux 고급에서 본 sealert의 GUI. AVC 거부 목록과 각 거부의 해설, 자동 제안되는 수정 명령 (semanage fcontext -a ... && restorecon ...)까지 GUI에서 한 번에.
권장 흐름:
- Cockpit SELinux 메뉴에서 거부 발견
- 자동 제안 검토
- 명령을 직접 적용하거나, 정책 모듈(#4)로 모듈화
GUI가 사람이 읽기 쉬운 형태로 거부를 모아주는 영역.
5. 가상머신 관리 — cockpit-machines #
KVM 위에서 VM을 운영한다면 GUI로:
- VM 목록, 상태, 자원 사용
- 시작/중지/재시작/스냅샷
- 콘솔 (VNC/SPICE) 접속
- 네트워크/스토리지 설정
- 새 VM 생성 (ISO 또는 cloud image)
virsh로 다 할 수 있지만 학습 비용이 큽니다. Cockpit으로는 5분이면 첫 VM을 띄울 수 있습니다.
다중 머신 관리 — Dashboard #
Cockpit의 다른 머신을 추가 기능. SSH로 다른 RHEL 머신에 연결해 한 브라우저에서 여러 머신을 전환합니다.
Cockpit (https://main:9090) → Dashboard → "Add new host"
│
▼
ssh other-host
(자동으로 cockpit-bridge 띄움)다른 머신은 Cockpit 자체가 설치돼 있을 필요는 없습니다 — cockpit-bridge (또는 python3으로 부트스트랩)가 SSH 너머에서 동작합니다.
dashboard의 쓰임 #
다중 머신 관리가 필요한 영역은 보통 Satellite 나 Ansible의 몫입니다. Cockpit dashboard는 그 사이 — 수십 대 미만, 임시적, 시각적 점검 이 필요할 때.
| 규모 | 도구 |
|---|---|
| 1 ~ 10 대, 시각적 점검 | Cockpit dashboard |
| 10 ~ 100 대, 자동화 | Ansible |
| 100 대 이상 | Satellite |
진단 도구 통합 — sosreport #
기술 지원에 케이스를 열 때 Red Hat이 요구하는 표준 진단 자료가 sosreport 입니다. Cockpit의 Diagnostic Reports 메뉴에서 GUI로 한 번에:
$ sudo dnf install -y sos
$ sudo sos report
Press ENTER to continue, or CTRL-C to quit.
...
Your sos report has been generated and saved in:
/var/tmp/sosreport-host-2026-05-02-abc123.tar.xzGUI에서는 클릭 한 번 → 진행 표시 → 결과 다운로드. Red Hat 케이스에 첨부.
sosreport가 모으는 것 #
/etc/의 주요 설정 파일들journalctl로그dmesgrpm -qa(설치 패키지 목록)- 네트워크 상태 (
ip,ss,routes) - systemd unit 상태
- SELinux 상태
- 메모리/CPU 정보
- 그 외 60+ 플러그인이 모듈별로 진단 자료 수집
비밀번호 같은 민감 정보는 스크럽되지만, 항상 Red Hat에 보내기 전 직접 검토 권장.
Cockpit과 RHEL 운영 도구의 관계 #
| 도구 | 같이 쓰는 부분 |
|---|---|
| systemd | Services 메뉴 — systemctl의 GUI |
| journalctl | Logs 메뉴 — 시간/우선순위/식별자 필터링 |
| NetworkManager | Networking — nmcli의 GUI |
| firewalld | Firewall (Networking 안) — firewall-cmd의 GUI |
| LVM / Stratis | Storage — 시각적 디스크 구성 |
| Podman | cockpit-podman — podman 명령의 GUI |
| PCP | cockpit-pcp — sar/iostat의 그래프 시각화 |
| SELinux | cockpit-selinux — sealert의 GUI |
| virsh / libvirt | cockpit-machines — virsh의 GUI |
| sosreport | Diagnostic Reports — 한 번 클릭 |
각 모듈은 결국 같은 백엔드 명령을 호출합니다. Cockpit은 새 도구가 아니라 익숙한 RHEL 도구의 시각적 한 층.
흔한 함정 #
cockpit.service활성화 —cockpit.socket이 정답. service를 직접 활성화하면 socket activation의 이점이 사라집니다.- 9090 포트가 방화벽에 막힘 —
firewall-cmd --add-service=cockpit --permanent누락. 외부에서 접속 안 됨. - self-signed 인증서로 운영 — 브라우저 경고가 매번 뜨고, 일부 브라우저는 클립보드 등 일부 기능을 제약. 운영은 정식 인증서로.
- SELinux 거부 무시 — Cockpit 자체도 SELinux 정책 안에서 동작. 사용자 정의 인증서 위치를 옮기면 라벨이 안 맞아 안 보일 수 있음.
restorecon항상 짝으로. - Cockpit만으로 자동화 — Cockpit은 사람이 클릭하는 GUI. 자동화는 Ansible / Satellite /
dnf스크립트로. GUI 작업을 일관성 있게 재현해야 한다면 GUI가 아닌 CLI로 옮기는 게 표준. - 다중 머신 dashboard를 운영 표준으로 — 수십 대 미만의 임시적 도구. 본격 다중 머신 운영은 Satellite 또는 Ansible.
- 방화벽 외부 노출 — 9090을 인터넷에 직접 노출하면 공격 표면. VPN 또는 SSH 터널 너머에서만 접근.
기억해 둘 명령 #
| 작업 | 명령 |
|---|---|
| 활성화 | sudo systemctl enable --now cockpit.socket |
| 방화벽 | sudo firewall-cmd --add-service=cockpit --permanent && sudo firewall-cmd --reload |
| 추가 모듈 | sudo dnf install -y cockpit-podman cockpit-machines cockpit-pcp ... |
| 인증서 변경 | /etc/cockpit/ws-certs.d/에 *.cert, *.key 두기 + restorecon |
| 비활성화 | sudo systemctl disable --now cockpit.socket |
| 진단 자료 (CLI) | sudo sos report |
| 접속 URL | https://<host>:9090 |
정리 #
- Cockpit의 위치 — CLI의 시야가 좁은 부분에 시각적 한 층. 새 도구가 아니라 systemd, NetworkManager, journalctl, podman 등 익숙한 도구의 GUI.
- 활성화 —
cockpit.socket만. service가 아닌 점에 주의. 9090/tcp 방화벽 + 정식 인증서. - 자주 쓰는 흐름 — 첫 점검 (Overview → Networking → Storage → Services → Logs), 컨테이너 (cockpit-podman), 성능 (cockpit-pcp), SELinux 거부 (cockpit-selinux), 가상머신 (cockpit-machines).
- 다중 머신 dashboard — 수십 대 미만 환경의 임시 도구. 본격 다중 운영은 Satellite 또는 Ansible.
- sosreport — Red Hat 케이스 표준 진단 자료. GUI 한 번 클릭 또는
sos report. - 자동화는 항상 별도 — Cockpit은 사람이 보는 도구, 자동화는 Ansible / Satellite / 스크립트로.
시리즈 마무리 #
이걸로 RHEL 고급 시리즈 7 편을 닫습니다. 부팅 단계의 분해부터 시작해서 커널 튜닝, 성능 분석, SELinux 정책 작성, 보안 강화, 다중 머신 운영 인프라, 그리고 GUI 한 층까지 — 한 머신을 깊이 다루는 도구와 여러 머신을 운영하는 도구를 한 사이클로 정리했습니다.
여기까지 따라온 독자는 RHEL 9 운영의 일상적인 도구들을 거의 다 손에 잡았다고 봐도 됩니다. 다음 단계로 넘어간다면:
- 자격증 트랙 — RHCSA (EX200) → RHCE (EX294, Ansible 자동화). 시리즈 #6의 Satellite, #5의 보안 강화가 시험 도메인의 일부.
- 실전 트랙 — 한 도메인에 깊이 들어가는 별개 시리즈. 웹 서버 운영, DB 운영, Podman + systemd quadlet, Ansible 자동화 등.
- Linux 깊이 — RHEL 외의 Linux와 비교, 커널 자체의 깊이, eBPF 같은 모던 도구.
여기까지 따라와 주셔서 감사합니다. RHEL 9가 손에 잡히는 머신이 되길 바랍니다.