Glances는 무료 오픈소스이며, 크로스플랫폼 실시간 시스템 모니터링 도구입니다. htop과 유사하면서도 더 많은 고급 기능을 제공하며, 독립 실행 모드, 클라이언트/서버 모드, 웹 서버 모드 등 다양한 방식으로 실행할 수 있습니다.
웹 서버 모드를 활용하면 SSH로 원격 서버에 접속할 필요 없이, 웹 브라우저를 통해 리눅스 서버를 원격으로 모니터링할 수 있습니다. 아래에서 그 방법을 설명하겠습니다.
Glances 설치하기
웹 서버 모드로 Glances를 실행하려면 Python Bottle 모듈(빠르고 가벼운 WSGI 마이크로 웹 프레임워크)과 함께 설치해야 합니다. 각 리눅스 배포판에 맞는 명령어를 사용하세요.
# Debian, Ubuntu, Mint
$ sudo apt install glances python-bottle
# RHEL/CentOS/Fedora, Rocky/AlmaLinux
$ sudo yum install glances python-bottle
# Gentoo Linux
$ sudo emerge -a sys-apps/glances python-bottle
# Alpine Linux
$ sudo apk add glances python-bottle
# Arch Linux
$ sudo pacman -S glances python-bottle
# OpenSUSE
$ sudo zypper install glances python-bottle
또는 pip 명령어를 사용하여 Bottle만 설치할 수도 있습니다.
$ sudo pip install bottle
웹 서버 모드로 실행하기
설치가 완료되면 -w 플래그를 사용하여 Glances를 웹 서버 모드로 실행합니다. 기본적으로 61208번 포트에서监听합니다.
$ glances -w
# 또는 백그라운드에서 실행
$ glances -w &
방화벽 설정
firewalld 서비스를 사용하는 경우, 61208번 포트를 열어 인바운드 트래픽을 허용해야 합니다.
$ sudo firewall-cmd --permanent --add-port=61208/tcp
$ sudo firewall-cmd --reload
UFW 방화벽을 사용하는 경우:
$ sudo ufw allow 61208/tcp
$ sudo ufw reload
웹 인터페이스 접근
웹 브라우저에서 http://서버_IP:61208/ 주소로 접속하여 Glances UI를 사용할 수 있습니다.
systemd 서비스로 실행하기
systemd를 사용하는 시스템에서는 Glances를 서비스로 실행하여 더 효율적으로 관리할 수 있습니다. 먼저 서비스 유닛 파일을 생성하세요.
$ sudo vim /usr/lib/systemd/system/glancesweb.service
다음 내용을 파일에 추가합니다.
[Unit]
Description=Glances Web Server Service
After=network.target
[Service]
ExecStart=/usr/bin/glances -w -t 5
Type=simple
[Install]
WantedBy=multi-user.target
위 설정에서 -t 5는 5초 간격으로 실시간 업데이트를 수행함을 의미합니다. WantedBy=multi-user.target은 시스템이 다중 사용자 모드로 실행될 때 이 서비스가 필요함을 나타냅니다.
서비스를 활성화하고 시작합니다.
$ sudo systemctl daemon-reload
$ sudo systemctl enable glancesweb.service
$ sudo systemctl start glancesweb.service
$ sudo systemctl status glancesweb.service
인터페이스 사용하기
이제 웹 브라우저에서 http://서버_IP:61208/로 접속하여 스마트폰, 태블릿, 컴퓨터 등 어떤 디바이스에서든 리눅스 서버를 원격으로 모니터링할 수 있습니다.
페이지 새로고침 간격을 조정하려면 URL 끝에 초 단위로 숫자를 추가하세요. 예를 들어 8초 간격으로 새로고침하려면:
http://서버_IP:61208/8
제한사항
웹 서버 모드로 Glances를 실행할 때의 단점은 인터넷 연결이 불안정할 경우 클라이언트가 서버와 연결이 끊어질 수 있다는 것입니다.