이 상세 가이드는 dstat을 사용하여 리눅스(또는 유닉스) 서버를 모니터링하는 과정을 단계별로 안내합니다.
dstat이 필요한 이유
회사나 데이터 센터에서 관리하는 리눅스 서버가 있다면, 가능한 한 100%에 가까운 가동률(uptime)을 유지하고 싶을 것입니다. 그러기 위해서는 시스템이 원활하게 작동하도록 기여하는 모든 시스템 자원을 지속적으로 확인해야 합니다. 메모리, CPU, 디스크 사용량 등이 대표적인 모니터링 대상입니다.
일반적으로 리눅스나 유닉스에 기본 포함된 도구들을 조합하여 사용하는데, 예를 들어 "free", "top", "vmstat" 등이 있습니다. 하지만 오늘 소개할 Dstat은 이러한 도구들이 제공하는 거의 모든 정보를 하나의 명령어로 통합해 보여주는 강력한 유틸리티입니다.
이 커맨드라인 도구의 개발자인 Dag Wieers는 Dstat을 "vmstat, iostat, netstat, ifstat을 대체할 수 있는 다재다능한 도구"라고 소개하며, "기존 도구들의 한계를 극복하고 추가적인 기능도 제공한다"고 덧붙였습니다. 실제로 Dstat은 설치가 간단하고 사용법이 쉬우며, 다양하게 조정할 수 있을 뿐만 아니라 그래프로 시각화할 수 있는 보고서까지 생성해 주는 만능 시스템 모니터링 도구입니다.
Dstat 설치하기
먼저 Dstat 설치 파일을 내려받아야 합니다. 웹 브라우저에서 Dstat 프로젝트 홈페이지(https://dag.wieers.com/home-made/dstat/)로 접속하세요. 페이지 아래쪽으로 스크롤하면 다운로드 목록이 나타납니다. 애플리케이션을 설치할 리눅스 배포판에 맞는 패키지를 선택하여 다운로드 링크를 클릭하고, 사용 중인 배포판 버전에 맞는 최신 버전의 Dstat을 받으면 됩니다.
예를 들어 Red Hat Enterprise Linux 4 머신에 설치하는 경우는 다음과 같습니다:
# wget https://dag.wieers.com/rpm/packages/dstat/dstat-0.6.6-1.el4.rf.noarch.rpm
다음 명령으로 Dstat을 설치합니다:
# rpm -Uvh dstat-0.6.6-1.el4.rf.noarch.rpm
설치가 오류 없이 완료되었다면 준비 끝입니다. 설치 중 의존성 문제가 발생하면 필요한 패키지를 추가로 설치한 후 다시 시도하면 됩니다. 다행히 Dstat은 의존성이 많지 않아 큰 어려움 없이 설치할 수 있을 것입니다.
Dstat 사용하기
Dstat이 설치되었다면 바로 사용할 수 있습니다. 터미널에서 다음 명령을 실행해 보세요:
# dstat
출력 결과는 대략 아래와 같습니다. 종료하려면 ctrl+c 키 조합을 누르면 됩니다.
# dstat
---total-cpu-usage--- -disk/total -net/total- --paging-- --system--
usr sys idl wai hiq siq|_read write|_recv _send|__in_ _out_|_int_ _csw_
7 1 91 1 0 0| 0 0 | 0 0 | 0 0 | 0 0
1 0 99 0 0 0| 0 0 | 0 0 | 0 0 |1051 1945
0 0 100 0 0 0| 0 12k|2269B 11.2k| 0 0 |1031 1923
1 0 99 0 0 0| 0 40k| 0 0 | 0 0 |1078 2235
0 0 100 0 0 0| 0 16k|6027B 21.5k| 0 0 |1008 2219
Dstat에는 다양한 옵션이 제공됩니다. 앞서 언급했듯이 Dstat은 매우 유연하게 조정할 수 있는데, 예를 들어 CPU, 디스크, 네트워크 데이터만 표시하고 싶다면 다음 명령을 실행하면 됩니다:
# dstat -CDN
더 많은 옵션은 애플리케이션의 도움말 문서에서 확인할 수 있습니다:
# dstat -h
각 옵션을 직접 실행해 보면서 익숙해지는 것을 추천합니다. 데이터를 읽어오는 기본 간격은 2초인데, 필요에 따라 변경할 수 있습니다. 간격을 10초로 늘리려면 다음과 같이 입력하세요:
# dstat 10
또 하나 유용한 기능은 누적 업데이트입니다. 예를 들어 10초마다 새로운 줄에 업데이트를 표시하면서, 동시에 매 초마다 현재 줄의 값이 실시간으로 갱신되도록 설정할 수 있습니다.
3초 간격으로 5번의 업데이트를 받고 싶다면 다음과 같이 실행하면 됩니다:
# dstat 3 5
CSV 출력으로 그래프 생성하기
Dstat의 가장 유용한 기능 중 하나는 출력 기능입니다. 세션의 결과를 쉼표로 구분된(CSV) 파일로 저장할 수 있으며, 이후 Microsoft Excel 같은 스프레드시트 프로그램으로 불러와 데이터를 그래프로 시각화할 수 있습니다.
# dstat --output /tmp/dstat_data.csv -CDN
위 명령을 백그라운드로 실행해 두고 해당 머신에서 애플리케이션을 구동하거나 테스트를 진행하세요. 작업이 끝나면 ctrl+c를 눌러 종료합니다. 그런 다음 dstat_data.csv 파일을 Excel이나 OpenOffice Calc 같은 스프레드시트 프로그램으로 열고, 그래프로 그릴 열을 선택하면 나머지는 스프레드시트 프로그램이 알아서 처리해 줍니다.
메일로 보고서 받기
일정 기간 동안 서버 성능을 관찰하고 싶은 경우도 있을 것입니다. 이럴 때는 리눅스에서 백그라운드 프로세스를 설정하여 일정 간격으로 측정값을 수집하고, 보고서를 생성한 후 파일을 이메일로 전송하도록 할 수 있습니다. 스트레스 테스트 중에 특히 유용합니다.
아래 스크립트는 Dstat을 3시간 동안 실행하며 30초마다 데이터를 수집하고, 그 결과를 me@myemailid.com으로 메일로 발송합니다:
#!/bin/bash
dstat --output /tmp/dstat_data_mail.csv -CDN 30 360
mutt -a /tmp/dstat_data_mail.csv -s "Dstat Report for 3 hour run" me@myemailid.com < /dev/null
위 스크립트를 서버에 dstat_script.sh라는 이름으로 저장하고, 실행 권한을 부여한 후 백그라운드 프로세스로 실행합니다:
# chmod +x dstat_script.sh
# nohup ./dstat_script.sh &
이것으로 끝입니다. 정말 간단하죠? 스크립트가 완료되면 보고서가 이메일로 전송됩니다. 원한다면 이 스크립트를 cron 작업으로 매일 등록하여 매일 데이터를 받아볼 수도 있습니다.
마무리
이제 아셨겠지만, Dstat은 성능 모니터링과 디버깅에 활용하기 좋은 훌륭한 도구입니다. 수집되는 데이터의 세분화 수준, 빈도, 종류를 모두 사용자가 직접 결정할 수 있습니다. Dstat을 활용하면 서버에서 무슨 일이 일어나고 있는지 정확히 파악할 수 있고, 현명하게 사용하면 잠 못 이루는 밤을 훨씬 줄일 수 있을 것입니다.