본문 바로가기

# Development/DevOps

[Ubuntu] 리눅스 메모리 사용량 모니터링: sysstat sar

리눅스 메모리 사용량 모니터링: sysstat sar

AWS EC2 서버가 Out of memory 메시지를 띄우며 장렬히 전사했다. 인스턴스 모니터링 페이지에서 CPU 사용량은 확인 할 수 있지만, 메모리 사용량은 확인할 수 없다. 메모리 사용량 모니터링을 할 수 있는 별도의 방법이 필요하다. 언제 어떤 상황에서 시스템이 메모리를 많이 사용하는지 추적할 필요가 있다.

 

sysstat 이란?

리눅스 성능을 측정하는 패키지

sar (system activity reporter)

cpu, memory, network, disks io 등의 지표를 수치화하여 파일로 저장해주는 분석 툴이다.

 

sar 구성요소

sadc (system activity data collector)

  • 지표 데이터를 수집하며, 이를 /var/log/sa/sa~ 형태의 이진 데이터 파일로 저장하는 도구

 

sadf (display data collected bysar in multiple formats)

  • 이진 형태의 지표 데이터를 csv, xml, svg 등의 포맷으로 변환하는 도구

 

sal (collect and store binary data in the system activity daily data file)

  • sadc로 추출한 모든 데이터를 /var/log/sa(날짜) 파일에 파이너리 형식으로 저장하는 bash 스크립트

 

sa2 (Create a report from the current standard system activity daily data file)

  • sal으로 생성된 데이터 파일을 기반으로 지표 옵션을 선탁해 저장하는 bash 스크립트

 

sysstat 설치

1. sysstat 설치

$ sudo apt install sysstat

 

2. sysstat 모니터링 활성화

ubuntu에서 nano를 이용해 sysstat파일을 열어서

$ sudo nano /etc/default/sysstat

ENABLED를 true로 변경

#
# Default settings for /etc/init.d/sysstat, /etc/cron.d/sysstat
# and /etc/cron.daily/sysstat files
#

# Should sadc collect system activity informations? Valid values
# are "true" and "false". Please do not put other values, they
# will be overwritten by debconf!
ENABLED="true"

 

3. sysstat 서비스 활성화

$ sudo systemctl enable sysstat
$ sudo systemctl start sysstat

 

4. 지표 데이터 수집 주기 설정

지표 데이터 수집 주기는 아래의 파일에서 contab에서 작업을 설정할 때 사용하는 방법과 동일하게 설정할 수 있다.

$ sudo nano /etc/cron.d/sysstat
# The first element of the path is a directory where the debian-sa1
# script is located
PATH=/usr/lib/sysstat:/usr/sbin:/usr/sbin:/usr/bin:/sbin:/bin

# 여기 수정!!
# Activity reports every 10 minutes everyday
5-55/10 * * * * root command -v debian-sa1 > /dev/null && debian-sa1 1 1

# Additional run at 23:59 to rotate the statistics file
59 23 * * * root command -v debian-sa1 > /dev/null && debian-sa1 60 2

 

 

sysstat sar 사용법

$ sar [옵션] [인터벌] [횟수]

 

메모리 사용 정보 조회

-r 옵션을 이용하면 메모리 사용량 정보를 출력할 수 있다.

$ sar -r

메모리 데이터 지표 정의

  • kbmemfree
    • 물리 메모리 중 남은 용량
  • kbmemused
    • 물리 메모리 중 사용한 용량
  • %memused
    • 물리 메모리 사용률
  • kbbuffers
    • 버퍼 캐시로 사용되고 있는 물리 메모리 용량
  • kbcached
    • 페이지 캐시로 사용되고 있는 물리 메모리 용량
  • kbcommit
    • 현재 시스템에 할당된 메모리의 크기
  • %commit
    • kbcommit의 점유 백분율
  • kbactive
    • 사용 중인 메모리에서 최근 사용된 메모리 정보
  • kbinact
    • 사용중인 메모리 중 최근에 사용되지 않은 영역 크기
  • kbdirty
    • 대기중인 메모리 크기

 

지날 날짜 메모리 데이터 조회

$ sar -f /var/log/sysstat/sa${dd} -r

 

특정 시간대, 특정 Interval로 데이터 조회

$ sar -f /var/log/sa/sa${dd} -s ${start time in hh:mm:ss} -e ${end time in hh:mm:ss} -i ${interval in seconds} # past records

 

Swap 발생 정보 조회

-W 옵션을 사용하면 스왑 메모리가 사용 정보를 출력할 수 있다.

$ sar -W
  • pswpin/s
    • 1초 동안 swap-in 되고 있는 페이지의 수
  • pswpout/s
    • 1초 동안 swap-out 되고 있는 페이지의 수

 

sysstat 제거

$ sudo apt remove sysstat

 

 

<참조>