10. Ubuntu Server용 시스템 모니터링 도구: 종합 가이드

Ubuntu Server용 시스템 모니터링 도구를 마스터하는 것은 최적의 성능 보장, 문제 진단 및 시스템 안정성 유지에 필수적입니다. 이 튜토리얼에서는 실시간 리소스 모니터링, 디스크 I/O, 네트워크 활동 및 서버 대시보드를 포함하여 Ubuntu 서버에서 사용할 수 있는 최고의 시스템 모니터링 도구를 살펴봅니다.


이전 글:

01. Ubuntu Server 소개 – SysOSX: AI & Cloud

02. 첫 Ubuntu Server 설정 방법: 초보자 가이드 – SysOSX: AI & Cloud

03.Ubuntu Server용 Linux 명령줄 마스터하기 – SysOSX: AI & Cloud

04. Ubuntu Server에서 사용자 및 권한 관리: 종합 가이드 – SysOSX: AI & Cloud

05. Ubuntu Server 네트워킹 기초: 종합 가이드 – SysOSX: AI & Cloud

06. Ubuntu Server에 소프트웨어 설치 및 관리: 완전 가이드 – SysOSX: AI & Cloud

07.Ubuntu Server 패치 및 업데이트: 종합 가이드 – SysOSX: AI & Cloud

08. Ubuntu Server 보안 강화: 하드닝 및 보호를 위한 실용적인 단계 – SysOSX: AI & Cloud

09. Ubuntu 서버 감사 및 로깅



사용: htop 및 top 을 사용한 실시간 리소스 모니터링

소개: htop 및 top

다음 두 도구, htop 및 top 은(는) 실시간으로 시스템 리소스를 모니터링하는 데 필수적인 명령줄 도구입니다. CPU 사용량, 메모리 소비량, 실행 중인 프로세스 등의 정보를 표시합니다.

설치 및 실행: htop (기본적으로 설치되어 있음)

다음을 설치합니다: htop, 설치 명령:

sudo apt update
sudo apt install htop

실행하려면 htop, 입력하기만 하면 됩니다:

htop

주요 기능 및 사용 시나리오: htop

htop 은(는) 다음 용도에 이상적입니다:

  1. 리소스를 많이 사용하는 프로세스 식별: CPU 또는 메모리 사용량 기준으로 프로세스를 정렬하여 리소스를 많이 사용하는 프로세스를 빠르게 찾을 수 있습니다.
  2. 프로세스 종료: F9 을(를) 사용하여 응답하지 않거나 문제가 있는 프로세스를 htop 인터페이스에서 직접 종료합니다.
  3. 스레드 모니터링: 프로세스를 확장하여 개별 스레드와 리소스 사용량을 볼 수 있습니다.
  4. 열 사용자 지정: F2 을(를) 눌러 디스플레이를 구성하고 디스크 I/O 또는 네트워크 사용률과 같은 메트릭을 추가/제거합니다.

사용: top

top 은(는) 더 간단한 도구로, Ubuntu 서버에 미리 설치되어 있습니다. 실행하려면:

top

주요 명령: top:

  • 키: Shift + p 을(를) 누르면 CPU 사용량 기준으로 정렬됩니다.
  • 키: Shift + m 을(를) 누르면 메모리 사용량 기준으로 정렬됩니다.
  • 키: q 을(를) 누르면 종료됩니다.

성능 메트릭을 위한 sysstat 설치 및 구성

란 무엇인가: sysstat?

sysstat 은(는) 시간이 지남에 따라 시스템 성능 메트릭을 수집하고 보고하는 도구 모음입니다. 다음과 같은 유틸리티가 포함되어 있습니다: iostat, vmstat, 및 sar.

설치: sysstat

다음을 설치합니다: sysstat:

sudo apt update
sudo apt install sysstat

구성: sysstat

구성 파일을 편집하여 데이터 수집을 활성화합니다:

sudo nano /etc/default/sysstat

다음 값을 변경합니다: ENABLED="false" 을(를) ENABLED="true". 으로 변경합니다. 저장하고 종료한 후 서비스를 다시 시작합니다:

sudo systemctl restart sysstat

사용: sysstat 도구

  • iostat: 디스크 I/O 성능을 모니터링합니다.iostat
  • vmstat: 메모리, CPU 및 I/O 통계를 모니터링합니다.vmstat
  • sar: 시스템 활동에 대한 기록 보고서를 생성합니다. sar -u 5 10 # CPU usage every 5 seconds for 10 intervals

디스크 I/O 및 네트워크 활동 모니터링

디스크 I/O 모니터링: iotop

다음과 같은 도구를 사용합니다: iostat (출처: sysstat) 또는 iotop 을(를) 사용하여 실시간 디스크 I/O를 모니터링합니다.

다음을 설치합니다: iotop:

sudo apt update
sudo apt install iotop

실행: iotop :

sudo iotop

그러나 다음 도구를 실행할 때 다음과 같은 오류가 발생할 수 있습니다. 도구: iotop:

CONFIG_TASK_DELAY_ACCT not enabled in kernel, cannot determine SWAPIN and IO %

오류 수정: iotop .

이 문제는 커널에 CONFIG_TASK_DELAY_ACCT 기능이 없기 때문에 발생합니다. 이 기능은 iotop 이(가) SWAPIN 및 IO 백분율을 표시하는 데 필요합니다. 다행히 GRUB 구성을 업데이트하면 해결할 수 있습니다.

오류 수정 단계

  • GRUB 구성 파일을 편집합니다:
sudo nano /etc/default/grub
  • 추가할 옵션: delayacct 을(를) GRUB_CMDLINE_LINUX_DEFAULT 항목에 추가합니다. 줄이 처음에 비어 있는 경우(GRUB_CMDLINE_LINUX_DEFAULT="")에는 다음과 같이 업데이트합니다: GRUB_CMDLINE_LINUX_DEFAULT="delayacct" 줄에 이미 다른 옵션이 포함된 경우, delayacct 을(를) 기존 옵션에 추가하고 공백으로 구분합니다. 예:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash delayacct"
  • 변경 사항을 적용하려면 GRUB을 업데이트합니다:
sudo update-grub
  • 서버를 다시 시작합니다:
 sudo reboot

    다시 시작한 후 오류가 해결되고, iotop 이(가) 올바르게 작동합니다.

    사용: `iotop

    문제가 해결되면, iotop 을(를) 실행하여 디스크 I/O를 모니터링할 수 있습니다:

    sudo iotop
    
    

    으로 할 수 있는 작업: iotop

    • 높은 디스크 I/O를 유발하는 프로세스를 식별합니다.
    • 읽기/쓰기 작업을 실시간으로 모니터링합니다.
    • 프로세스를 디스크 사용량 기준으로 정렬합니다.

    네트워크 활동 모니터링

    사용: iftop

    다음을 설치합니다: iftop:

    sudo apt update
    sudo apt install iftop
    

    실행: iftop :

    sudo iftop
    
    

    사용: nload

    다음을 설치합니다: nload:

    sudo apt update
    sudo apt install nload
    

    실행: nload :

    nload
    
    

    Cockpit을 사용한 서버 대시보드 설정

    Cockpit이란 무엇인가?

    Cockpit은 서버를 모니터링하고 관리하기 위한 웹 기반 그래픽 대시보드입니다. CPU, 메모리, 디스크 사용량 및 네트워크 활동에 대한 실시간 인사이트를 제공합니다.

    Cockpit 설치

    Cockpit을 설치하려면:

    sudo apt update
    sudo apt install cockpit
    

    Cockpit 액세스

    Cockpit 서비스를 시작합니다:

    sudo systemctl start cockpit.socket
    sudo systemctl enable cockpit.socket
    

    다음 주소로 이동하여 대시보드에 액세스합니다:

    https://<your-server-ip>:9090
    
    

    Cockpit 기능

    • 시스템 성능을 시각적으로 모니터링합니다.
    • 서비스, 로그 및 사용자 계정을 관리합니다.
    • 디스크 사용량과 네트워크 활동을 봅니다.

    다음과 같은 도구는 htop, sysstat, 및 Cockpit 은(는) 대부분의 서버 모니터링 요구 사항에 매우 적합하지만, 복잡한 환경에 더 깊은 인사이트와 더 나은 시각화를 제공할 수 있는 다른 고급 도구도 있습니다. 고려할 수 있는 몇 가지 추가 모니터링 도구는 다음과 같습니다:

    Prometheus 및 Grafana

    Prometheus

    Prometheus는 안정성과 확장성을 위해 설계된 오픈 소스 모니터링 및 알림 도구 모음입니다. 클라우드 네이티브 환경에서 널리 사용되며 분산 시스템과 마이크로서비스 모니터링에 특히 적합합니다.

    주요 기능:

    • 시계열 데이터베이스: 타임스탬프와 함께 메트릭을 효율적으로 저장합니다.
    • 강력한 쿼리 언어(PromQL)를 사용하여 메트릭을 분석합니다.
    • 알림 시스템: 알림을 위해 Alertmanager와 같은 도구와 통합됩니다.
    • 풀 기반 아키텍처: Prometheus가 대상에서 메트릭을 능동적으로 스크랩합니다.

    사용 사례:

    • 여러 서버에서 CPU, 메모리 및 디스크 사용량을 모니터링합니다.
    • 애플리케이션별 메트릭(HTTP 요청 지연 시간, 오류율 등)을 추적합니다.
    • 비정상적인 메트릭이나 시스템 장애에 대한 알림을 생성합니다.

    설치 지침:
    Ubuntu에 Prometheus를 설치하려면:

    sudo apt update
    wget https://github.com/prometheus/prometheus/releases/download/v2.44.0/prometheus-2.44.0.linux-amd64.tar.gz
    tar xvf prometheus-2.44.0.linux-amd64.tar.gz
    cd prometheus-2.44.0.linux-amd64
    ./prometheus
    

    다음 주소로 이동하여 Prometheus에 액세스합니다:

    http://<your-server-ip>:9090
    
    

    Prometheus와 Cockpit 모두 기본 포트가 9090이라는 점에 유의하세요. 두 도구를 동시에 사용하는 경우 기본 포트를 변경하는 것이 좋습니다:
    Prometheus와 Cockpit 간의 포트 충돌 해결

    옵션 1: Prometheus 포트 변경

    구성 파일을 수정하여 Prometheus가 다른 포트를 사용하도록 구성할 수 있습니다.

    • Prometheus 구성 파일을 엽니다:
     nano prometheus.yml
    
    • Prometheus 시작 명령 또는 서비스 파일에서 --web.listen-address 플래그를 추가하거나 수정하여 다른 포트를 지정합니다(예: 9091):
    --web.listen-address=:9091
    
    • 변경 사항을 적용하려면 Prometheus를 다시 시작합니다:
     sudo systemctl restart prometheus
    
    • 새 포트를 사용하여 Prometheus에 액세스합니다:
     http://<your-server-ip>:9091
    

      옵션 2: Cockpit 포트 변경

      Prometheus를 포트 9090에 그대로 두려면 Cockpit의 기본 포트를 변경할 수도 있습니다.

      • Cockpit용 사용자 지정 구성 파일을 만듭니다:
      sudo nano /lib/systemd/system/cockpit.socket
      
      • 새 포트를 지정하려면 다음 줄을 추가합니다(예: 9092): ListenStream=9092
      • Cockpit 서비스를 다시 시작합니다:
      systemctl daemon-reload
      systemctl restart cockpit.socket
      
      • 새 포트를 사용하여 Cockpit에 액세스합니다: https://<your-server-ip>:9092

      옵션 3: 리버스 프록시 사용

      포트를 변경하는 것이 이상적이지 않은 경우, 리버스 프록시를 사용할 수 있습니다(예: Nginx 또는 Apache)를 사용하여 기본 포트를 유지하면서 두 서비스를 서로 다른 URL에 매핑할 수 있습니다.

      예:

      • Prometheus: 
      http://<your-server-ip>/prometheus
      
      • Cockpit: 
      http://<your-server-ip>/cockpit
      

        권장 사항

        두 도구를 자주 사용하는 경우:

        나중에 참조하거나 다른 관리자를 위해 포트 변경 사항을 문서화합니다.

        다음 값을 변경합니다: Prometheus 의 포트를 9091 으로 변경합니다. Cockpit은 일반적으로 기본 포트 9090.


        Grafana

        Grafana는 Prometheus와 원활하게 통합되는 강력한 시각화 플랫폼입니다. 동적 대시보드를 만들어 메트릭과 추세를 시각화할 수 있습니다.

        주요 기능:

        • 다중 소스 지원: Prometheus, Elasticsearch, MySQL 등과 함께 작동합니다.
        • 사용자 지정 대시보드: 대화형 그래프, 히트맵 및 테이블을 만듭니다.
        • 알림: 주요 메트릭의 임계값을 기준으로 알림을 설정합니다.
        • 공유: 팀과 대시보드를 쉽게 공유합니다.

        사용 사례:

        • Prometheus에서 수집한 서버 성능 메트릭을 시각화합니다.
        • 시간이 지남에 따른 추세를 모니터링하여 용량 계획을 개선합니다.
        • 여러 소스의 데이터를 통합 대시보드에 표시합니다.

        설치 지침:
        Ubuntu에 Grafana를 설치하려면:

        sudo apt update
        sudo apt install -y software-properties-common
        sudo wget -q -O - https://packages.grafana.com/gpg.key | gpg --dearmor | sudo tee /usr/share/keyrings/grafana.gpg > /dev/null
        sudo echo "deb [signed-by=/usr/share/keyrings/grafana.gpg] https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
        sudo apt update
        sudo apt install grafana
        sudo systemctl start grafana-server
        sudo systemctl enable grafana-server
        sudo systemctl status grafana-server
        

        다음 주소로 이동하여 Grafana에 액세스합니다:

        http://<your-server-ip>:3000
        
        

        Nagios

        Nagios는 가장 인기 있는 인프라 모니터링 도구 중 하나입니다. 서버, 네트워크 장치 및 애플리케이션에 대한 포괄적인 모니터링과 알림을 제공합니다. 고도로 사용자 지정할 수 있으며 확장 기능을 위한 플러그인을 지원합니다.

        주요 기능:

        • 서버 상태 모니터링: CPU, 메모리, 디스크 사용량 등을 추적합니다.
        • 네트워크 모니터링: 라우터, 스위치 및 방화벽의 문제를 감지합니다.
        • 알림: 이메일, SMS 또는 Slack과의 통합을 통해 알림을 보냅니다.
        • 광범위한 플러그인 라이브러리: 데이터베이스, 웹 서버 및 기타 서비스를 모니터링합니다.

        사용 사례:

        • 프로덕션 환경의 중요한 서버와 애플리케이션을 모니터링합니다.
        • 디스크 공간 부족이나 높은 CPU 사용률에 대한 알림을 받습니다.
        • 네트워크 장치의 가동 시간과 가용성을 모니터링합니다.

        설치 지침:
        Ubuntu에 Nagios를 설치하려면:

        sudo apt install nagios4 nagios-plugins
        sudo a2enmod rewrite cgi
        systemctl restart apache2
        sudo systemctl status nagios4
        sudo systemctl enable nagios4
        sudo systemctl start nagios4
        
        

        Nagios는 모니터링 대상을 설정하기 위해 추가 구성이 필요합니다. 자세한 구성은 다음 문서를 참조하세요: Nagios 문서.


        Netdata: 실시간 시스템 모니터링 도구

        Netdata는 시스템 성능에 대한 자세한 인사이트를 제공하는 가벼운 실시간 모니터링 도구입니다. 설치가 쉽고 메트릭을 시각화할 수 있는 멋진 웹 인터페이스가 함께 제공됩니다.


        1단계: 시스템 패키지 업데이트

        터미널에서 다음 명령을 실행하여 시스템이 최신 상태인지 확인합니다:

        sudo apt update
        sudo apt upgrade
        

        2단계: Netdata 설치

        기본 Ubuntu 리포지토리에서 Netdata를 설치합니다:

        sudo apt install netdata
        
        

        3단계: Netdata 구성

        원격 액세스를 허용하려면 Netdata 구성 파일을 편집합니다:

        sudo nano /etc/netdata/netdata.conf
        
        

        다음 필드를 찾습니다: bind socket to IP 필드에서 127.0.0.1 을(를) 서버의 IP 주소로 바꿉니다:

        [global]
        bind socket to IP = <your-server-ip>
        
        

        파일을 저장하고 Netdata 서비스를 다시 시작합니다:

        sudo systemctl restart netdata
        
        

        4단계: 방화벽 구성

        Netdata의 기본 포트(19999)에 대한 액세스를 허용하고 방화벽을 활성화합니다:

        sudo ufw allow 19999
        sudo ufw allow OpenSSH
        sudo ufw enable
        sudo ufw status
        

        5단계: Netdata 웹 인터페이스 액세스

        웹 브라우저를 열고 다음 주소로 이동합니다:

        http://<your-server-ip>:19999
        


        도구 비교

        도구적합한 용도사용 편의성시각화알림
        Prometheus대규모 메트릭 수집보통제한적예
        Grafana고급 대시보드쉬움우수예
        Nagios인프라 모니터링보통기본예
        Netdata가벼운 실시간 모니터링쉬움우수예

        결론

        Ubuntu 서버를 모니터링하는 것은 성능 유지, 문제 진단 및 다운타임 방지에 매우 중요합니다. 다음과 같은 도구, htop, top, sysstat, Cockpit 및 기타 도구는 관리자가 리소스를 효과적으로 모니터링할 수 있게 해줍니다. 명령줄 도구를 선호하든 그래픽 대시보드를 선호하든, 이 가이드에서는 강력한 모니터링 시스템을 설정하는 데 필요한 모든 내용을 다룹니다.

        다음: 중앙 집중식 로깅 및 모니터링

        다음 글에서는 중앙 집중식 로깅 및 모니터링 에 중점을 두어 서버 관리 및 성능 추적을 더욱 간소화할 예정입니다. 다룰 주제는 다음과 같습니다:

        • 중앙 집중식 로깅을 위한 rsyslog 또는 syslog-ng 설정.
        • 더 나은 구성과 분석을 위해 로그를 원격 로깅 서버로 전달합니다.
        • Ubuntu 서버를 다음과 같은 강력한 모니터링 플랫폼과 통합: Nagios, Zabbix, 또는 Prometheus 을(를) 통해 시스템 상태 및 성능에 대한 더 깊은 인사이트를 얻습니다.

        로깅 인프라를 중앙 집중화하고 모니터링 도구를 활용하여 서버 운영을 효과적으로 최적화하는 방법을 알아보려면 계속 지켜봐 주세요!

        2 thoughts on “10. System Monitoring Tools for Ubuntu Server: A Comprehensive Guide”

        댓글 남기기