시스템 성능 측정을 위한 항목에는 CPU, Memory, Disk, Traffic 등이 있습니다. 리눅스 환경에서 이런 리소스들을 확인할 수 있는 다양한 명령어들을 지원하고 있는데요.
각각의 명령어들을 통해 시스템을 모니터링 하는 방법에 대해 알아봅시다.
Uname 명령어를 사용하면 시스템과 커널의 정보를 확인할 수 있습니다. -a 옵션을 사용하면 모든 정보를 확인할 수 있습니다.
각각의 의미는 다음과 같습니다.
사용할 수 있는 옵션은 아래와 같습니다.
$ uname --help [-a, --all] : 전체 내용 출력 [-s, --kernel-name] : 커널 명 출력 [-n, --nodename] : 네트워크 노드의 호스트 명 출력 [-r, --kernel-release] : 커널 릴리즈 정보 출력 [-v, -kernel-version] : 커널 버전 출력 [-m, --machine] : 머신 하드웨어 이름 출력 [-p, --processor] : 프로세서 종류 또는 'unknown' 출력 [-i,- -hardware-platform ] : 하드웨어 플랫폼 또는 'unknown' 출력 [-o, --operating-system ] : 운영체제 'unknown' 출력시스템에 설정된 네트워크 인터페이스의 상태를 확인 및 변경할 수 있습니다.
그럼 이제 ifconfig 명령어를 사용했을 때 나오는 의미를 살펴보겠습니다.
Ifconfig 명령어로는 private ip밖에 확인되지 않습니다. 공인 아이피(Public IP)를 알고 싶다면 Curl을 설치 후에 확인하면 됩니다.
$ curl ifconfig.me
윈도우의 작업관리자와 비슷한 기능을 하는 명령어입니다.
프로세스 작업 명령어로, 시스템 프로세스들의 CPU/Memory 점유율을 실시간으로 볼 수 있습니다. 현재 몇 개의 프로세스가 있는지, CPU의 자세한 사용률은 어떻게 되는지, Memory와 Swap은 얼마나 사용하고 있는지를 확인할 수 있습니다.
% Cpu(s) [us] : 사용자가 사용중인 사용률 [sy] : 시스템이 사용중인 사용률 [ni] : 프로세스 우선순위를 기반으로 사용되는 사용률(사용자 공간에서 사용됨) [id] : 아무 일도 하지 않는 여유률 [wa] : 입출력을 기다리는 프로세스 사용률 [hi] : 하드웨어 인터럽트 사용률 [si] : 소프트웨어 인터럽트 사용률 [st] : 가상화 환경에서 손실률User값이 높다면, 사용자 코드를 수행하는데 시간이 오래 걸린다면 내부적으로 계산을 많이 하고 있다는 것입니다. System값이 높다면, 시스템에 의해 사용되고 있는 시간이 오래 걸린다면 프로세스들이 시스템 호출 또는 I/O가 많다고 할 수 있습니다. idle의 값이 항상 0이라면 CPU를 100% 사용하고 있다는 것을 의미합니다. CPU를 계속 사용하고 있는 프로세스를 찾아 적절하게 대응할 필요가 있습니다.
PROCESS [PID] : 프로세스 ID [USER] : 프로세스를 실행시킨 사용자 ID [PR] : 프로세스의 우선순위 [NI] : NICE 값, 마이너스를 가지는 값이 우선순위가 높음 [VIRT] : 가상 메모리의 사용량(SWAP+RES) [RES] : 현재 페이지가 상주하고 있는 크기 [SHR] : 가상 메모리 중 사용중인 메모리를 제외한 잔여 가상 메모리 [S] : 프로세스의 상태 [%CPU] : 프로세스가 사용하는 CPU의 사용률 [%MEM] : 프로세스가 사용하는 메모리의 사용률 [TIME+] : 프로세스가 CPU를 사용한 시간 [COMMAND] : 실행된 명령어프로세스 목록을 원하는 특정 기준에 따라 정렬할 수 있습니다. top 실행화면에서 Shift 키와 영문자를 누르면 프로세스의 정렬 기준이 변경됩니다.
PROCESS [SHIFT + M] : 메모리 사용률 정렬 [SHIFT + N] : PID 기준 정렬 [SHIFT + P] : CPU 사용률 정렬 [SHIFT + T] : 실행시간 기준 정렬 [SHIFT + R] : 정렬 기준변경 (오름차순인 경우 내림차순으로, 내림차순인 경우 오름차순으로 변경)메모리에 대한 정보를 확인할 수 있습니다. 저는 Memory와 Swap에 대한 값의 총 합을 확인하기 위하여 -t 옵션을 주었습니다.
Buffers와 Cached 둘 다 Free영역의 일부이므로 실제로는 2번째 줄에 보이는 364812가 실 여유 메모리를 말하며 즉, 사용자가 사용 가능한 메모리입니다.
실제 사용률은 1번째 줄에 보이는 used – (buffers + cached)인 2번째 줄에 보이는 used값 인 것이지요.
참고 [$ free -b # or –bytes] : show output in bytes [$ free -k # or –kilo] : show output in kilobytes [$ free -m # or –mega] : show output in megabytes [$ free -g # or –giga] : show output in gigabytes시스템 작업, 하드웨어 및 시스템 정보를 확인할 수 있습니다. 메모리, 페이징, 블록장치의 I/O, CPU상태 등을 볼 수 있습니다.
procs [r] : CPU에서 대기중인 프로세스의 수를 의미한다. r의 개수가 CPU의 개수의 2배를 넘는다면 CPU의 성능을 올려주어야 합니다. [b] : 인터럽트가 불가능한 sleep 상태에 있는 프로세스의 수 (I/O 처리를 하는 동안 블록 처리된 프로세스)이다. b의 수치가 높은 경우라면 CPU가 계속 대기상태로 있다는 의미이므로 디스크 I/O를 확인해 볼 필요가 있습니다. Swap(KB/s) [si(swap in)] : 디스크 swap 공간에 있는 데이터를 메모리로 호출하는 양을 의미합니다. 사용되고 있는 swap 디스크가 해제되는 양(per sec)입니다. [so(swap out)] : 메모리에서 디스크로 보내는 데이터의 양을 의미합니다. 물리적 메모리가 부족할 경우 디스크로부터 사용되는 메모리 양(per sec)입니다. swap out이 지속적으로 발생한다면 메모리 부족을 의심해 볼 수 있습니다. swap out값이 증가하면 메모리가 부족하다는 의미이므로 메모리를 늘려야 합니다. Swap out값은 0에 가까워야 좋고 초당 10블럭 이하가 좋습니다. swap필드의 값이 높다고 해도 free 메모리에 여유가 있다면 메모리가 부족한 것은 아닙니다.-s 옵션을 주면 메모리 통계 항목들을 확인할 수 있습니다.
vmstat [delay [count]]를 사용하면 실시간으로 메모리 상태를 확인할 수 있습니다.
평균 CPU부하 와 디스크 I/O의 세부적인 내용을 확인 할 수 있습니다.
Device [tps] : 디바이스에 초당 전송 요청 건수 [kB_read/s] : 디바이스에서 초당 읽은 데이터 블록 단위 [kB_wrtn/s] : 디바이스에서 초당 쓴 데이터 블록 단위 [kB_read] : 디바이스에서 지정한 간격 동안 읽은 블록 수 [kB_wrtn] : 디바이스에서 지정한 간격 동안 쓴 전체 블록 수-x 옵션을 사용하면 더 자세한 내역을 볼 수 있습니다.
iostat [delay [count]]를 사용하면 실시간으로 디스크의 상태를 확인할 수 있습니다.
현재 시스템에 연결된 네트워크 상태, 라우팅 테이블, 인터페이스 상태 등을 볼 수 있습니다.
2개의 영역으로 나누어져 보여집니다.
옵션은 아래와 같습니다.
State는 아래와 같이 표현됩니다.
옵션에 따라 다른 정보를 확인 할 수 있습니다. 유용하게 쓰이는 옵션들은 알아 두어야 합니다.
현재 디스크의 전체 용량 및 남은 용량을 확인할 수 있습니다.
옵션은 아래와 같습니다.
지금까지 시스템 모니터링을 알아볼 수 있는 명령어들을 살펴보았습니다. 이런 정보들을 통해 인프라에 대한 모니터링을 진행할 수 있습니다. 리눅스 장비에서 기본적으로 제공하는 명령어들이기 때문에 언제든지 사용할 수 있습니다.
그렇다면 와탭 서버 모니터링과 같은 모니터링 서비스는 언제 사용하는 것일까요. 와탭 서버 모니터링 서비스는 단말에 접근하지 않더라도 웹과 앱을 통해 원격에서 살펴볼 수 있으며 지난 과거의 데이터를 살펴볼 수 있습니다. 그리고 주기적으로 상태를 모니터링하다가 문제가 발생했을 때 메일, 앱, 문자 등을 통해 빠른 조치가 가능하도록 도와주는 역할을 합니다.
리눅스의 모니터링 명령어들을 익혀서 자신만의 모니터링 기법들을 만들어 보세요. 그리고 와탭 서버 모니터링과 같은 모니터링 서비스를 사용하여 다양한 인사이트를 얻길 바랍니다.