♥️7분 빠른 소식 전달해 드립니다♥️

[리눅스] 시스템 모니터링 유틸리티 본문

IT

[리눅스] 시스템 모니터링 유틸리티

핫한연예뉴스 2019. 7. 10. 11:47

서버관리, 애플리케이션의 기본은 문제의 식별(모니터링), 문제의 해결(튜닝)에 있습니다.

리눅스 서버관리시 모니터링 유틸에 대해 정리해 보았습니다.

 

1. STAT 시리즈의 완결판, DSTAT ( http://www.smallake.kr/?p=19241 )

 

 

디스크별 I/O 사용량 확인, I/O 부하 유발 프로세스 확인, read/write 속도 확인하는 방법입니다.

 

> dstat --time --disk-util --disk-tps -p -g --top-io-adv --top-cputime-avg --top-latency

 

 

 

2. top 유틸로 시스템 상황 모니터링 하기 ( https://www.conory.com/note_linux/11789 )

 

리눅스에서는 top라는 유틸리티로 시스템상황을 모니터링 할 수 있습니다. (ex. 윈도우의 "작업관리자")

아래 명령어로 top을 실행시키면 시스템 상황이 5초마다 실시간으로 표시 됩니다.

 

> top [option]

 

[option]

-d [시간] : 지정한 시간마다 시스템 상황이 업데이트되어 표시됩니다. (기본값 : 5, 단위 : 초)

-p [PID] : 해당 PID의 프로세스만 보여줍니다.

-c : 프로세스들의 전체 경로를 표시합니다.

 

 

* top의 단축키입니다.

q : top을 종료합니다.

shift + P : CPU 사용률이 높은 순서대로 프로세스들을 정렬합니다.

shift + M : 메모리 사용률이 높은 순서대로 프로세스들을 정렬합니다.

shift + T : 실행시간이 가장 오래된 순서대로 프로세스들을 정렬합니다.

shift + N : PID를 오름차순대로 프로세스들을 정렬합니다.

shift + A : PID를 내림차순대로 프로세스들을 정렬합니다.

u [사용자명] : 해당 사용자가 실행시킨 프로세스를 보여줍니다.

k [PID] : 해당 PID의 프로세스를 종료합니다.

 

 

3. MyTop, 리눅스의 top처럼 MySQL 상태 모니터링 ( http://coffeenix.net/board_view.php?bd_code=57 )

 

 

 

 

표시

의미

관련 show status 변수명

MySQL on localhost (3.23.49a)

호스트명과 MySQL 버전

 

up 11+23:04:23 [17:17:46]

MySQL uptime과 현재 시간

Uptime

Query : 947.4k

uptime중의 총 쿼리 개수

Questions

qps: 1 Slow: 0.0

초당 쿼리 수 평균과 slow 쿼리 수

Questions, Slow_queries

* Slow_queries이란 MySQL 서버 설정값이 long_query_time(default는 10초)보다 더 긴 시간동안 질의된 쿼리 수를 의미합니다.

Se/In/Up/De(%): 70/21/04/00

총 쿼리 중 각각 Select,
Insert+Replace,

Update,

Delete 비율

Com_select,

Com_insert, Com_replace

Com_update,

Com_delete

qps now: 2 Slow qps: 0.0

현재 쿼리 수와

현재 slow 쿼리 수

Questions

Slow_queries

* Slow qps가 자주 나오면 SQL문 최적화가 필요합니다.

Threads: 11 ( 3 / 0 )

11은 쓰레드 총 개수

3은 동작중인 쓰레드

0은 캐시된 쓰레드

Thread_connected

Thread_running

Threads_cached

62/12/00/00

각각 현재의 Select, ... 비율

Com_select, ...

Key Efficiency: 100.0%

Key 캐시 히트율

Key_reads, Key_read_requests

* Key Efficiency 높을수록 키 버퍼에서 읽어들인 것입니다. 수치가 99%보다 낮다면 key_buffer_size 조정이 필요합니다.

Bps in/out: 77.0/537.7

초당 주고받은 평균 bytes

Bytes_received
Bytes_send
Now in/out: 8.4/569.6

현재 주고받은 bytes

Bytes_received

Bytes_send

 

myTop 실행옵션 입니다.

c ( command별 사용 비율과 건수 )

p ( 일시 정지 )

s ( 화면 업데이트 간격 변경 )

q ( 종료 )

i ( sleeping 상태의 쓰레드 표시 여부 변경 )

 

mytop을 실행시키는데에는 두가지 방법이 있습니다.

 

1) 커맨드 명령 실행

> mytop -uDB계정 -p패스워드 -d데이터베이스이름 -s1

 

2) 사용자 설정파일 설정

> vi .mytop


db=mysql
user=root
pass=xxxxx
host=localhost
port=3306
socket=/tmp/mysql.sock
delay=2
color=1
idle=1
header=1
batchmode=0

 

 

4. Garbage Collection 모니터링, jstat

( http://d2.naver.com/helloworld/6043, http://blog.naver.com/solvage/10038025715 )

jstat은 HotSpot JVM에 있는 모니터링 도구입니다. jstat 이외에 Hotspot JVM 모니터링 도구로는 jps와 jstatd가 있습니다. Java 애플리케이션을 모니터링할 때에는 이 세 개의 도구를 모두 사용해야 할 경우도 있습니다.

 

옵션

기능

gc

각 힙(hep) 영역의 현재 크기와 현재 사용량(Eden 영역, Survivor 영역, Old 영역 등), 총 GC 수행 횟수, 누적 GC 소요 시간을 보여 준다.

gccapacity

각 힙 영역의 최소 크기(ms), 최대 크기(mx), 현재 크기, 각 영역별 GC 수행 횟수를 알 수 있는 정보를 보여준다. 단, 현재 사용량과 누적 GC 소요 시간은 알 수 없다.

gccause

-gcutil 옵션이 제공하는 정보와 함께 마지막 GC 원인과 현재 발생하고 있는 GC의 원인을 알 수 있는 정보를 보여준다.

gcnew

New 영역에 대한 GC 수행 정보를 보여준다.

gcnewcapacity

New 영역의 크기에 대한 통계 정보를 보여준다.

gcold

Old 영역에 대한 GC 수행 정보를 보여 준다.

gcoldcapacity

Old 영역의 크기에 대한 통계 정보를 보여 준다.

gcpermcapacity

Permanent 영역에 대한 통계 정보를 보여 준다.

gcutil

각 힙 영역에 대한 사용 정도를 백분율로 보여 준다. 아울러 총 GC 수행 횟수와 누적 GC 시간을 알 수 있다.

 

 

> jstat -gcutil -h20 -t ${pid} 3000 3000

 

jstat은 GC 수행 정보를 보는 기능만 제공하지 않습니다. 클래스로더 수행 정보나 Just-in-Time 컴파일러 수행 정보 등도 jstat으로 알 수 있습니다. 해당 링크에서는 GC 수행 정보 모니터링에 대해서만 나와 있습니다.

 

컬럼

설명

jstat 옵션

S0C

Survivor 0 영역의 현재 크기를 KB 단위로 표시

-gc -gccapacity -gcnew -gcnewcapacity

S1C

Survivor 1 영역의 현재 크기를 KB 단위로 표시

-gc -gccapacity -gcnew -gcnewcapacity

S0U

Survivor 0 영역의 현재 사용량을 KB 단위로 표시

-gc -gcnew

S1U

Survivor 1 영역의 현재 사용량을 KB 단위로 표시

-gc -gcnew

EC

Eden 영역의 현재 크기를 KB 단위로 표시

-gc -gccapacity -gcnew -gcnewcapacity

EU

Eden 영역의 현재 사용량을 KB 단위로 표시

-gc -gcnew

OC

Old 영역의 현재 크기를 KB 단위로 표시

-gc -gccapacity -gcold -gcoldcapacity

OU

Old 영역의 현재 사용량을 KB 단위로 표시

-gc -gcold

PC

Permanent 영역의 현재 크기를 KB 단위로 표시

-gc -gccapacity -gcold -gcoldcapacity -gcpermcapacity

PU

Permanent 영역의 현재 사용량을 KB 단위로 표시

-gc -gcold

YGC

Young Generation의 GC 이벤트 발생 횟수

-gc -gccapacity -gcnew -gcnewcapacity -gcold -gcoldcapacity -gcpermcapacity -gcutil -gccause

YGCT

Young Generation의 GC 수행 누적 시간

-gc -gcnew -gcutil -gccause

FGC

Full GC 이벤트가 발생한 횟수

-gc -gccapacity -gcnew -gcnewcapacity -gcold -gcoldcapacity -gcpermcapacity -gcutil -gcutil -gccause

FGCT

Full GC 수행 누적 시간

-gc -gcold -gcoldcapacity -gcpermcapacity -gcutil -gccause

GCT

전체 GC 수행 누적 시간

-gc -gcold -gcoldcapacity -gcpermcapacity -gcutil -gccause

NGCMN

New Generation의 최소 크기를 KB단위로 표시

-gccapacity -gcnewcapacity

NGCMX

New Generation의 최대 크기를 KB단위로 표시

-gccapacity -gcnewcapacity

NGC

New Generation의 현재 크기를 KB단위로 표시

-gccapacity -gcnewcapacity

OGCMN

Old Generation의 최소 크기를 KB단위로 표시

-gccapacity -gcoldcapacity

OGCMX

Old Generation의 최대 크기를 KB단위로 표시

-gccapacity -gcoldcapacity

OGC

Old Generation의 현재 크기를 KB단위로 표시

-gccapacity -gcoldcapacity

PGCMN

Permanent Generation의 최소 크기를 KB단위로 표시

-gccapacity -gcpermcapacity

PGCMX

Permanent Generation의 최대 크기를 KB단위로 표시

-gccapacity -gcpermcapacity

PGC

현재 Permanent Generation의 크기를 KB단위로 표시

-gccapacity -gcpermcapacity

PC

Permanent 영역의 현재 크기를 KB단위로 표시

-gccapacity -gcpermcapacity

PU

Permanent 영역의 현재 사용량을 KB단위로 표시

-gc -gcold

LGCC

지난 GC의 발생 이유

-gccause

GCC

현재 GC의 발생 이유

-gccause

TT

Tenuring threshold. Young 영역 내에서 이 횟수만큼 복사되었을 경우(S0->S1, S1->S0) Old 영역으로 이동

-gcnew

MTT

최대 Tenuring threshold. Young 영역 내에서 이 횟수만큼 복사되었을 경우 Old 영역으로 이동

-gcnew

DSS

적절한 Survivor 영역의 크기를 KB 단위로 표시

-gcnew

 

 

 

5. 트래픽 모니터링 ( http://blog.naver.com/PostView.nhn?blogId=red31431&logNo=220867870316 )

 

6. pinpint ( http://javaworld.co.kr/81, https://github.com/naver/pinpoint )

 

7. 가비아 자체 서버 모니터링 ( https://event.gabia.com/s_event_170221 )



출처: https://12bme.tistory.com/50?category=682900 [길은 가면, 뒤에 있다.]

Comments