일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 내심정
- RabbitMQ
- 예약
- JAVA #객체지향 #프로그래밍 #언어 #IT #기초
- JAVA #언어 #프로그래밍 #IT #개발 #코딩
- 겨울
- IT
- 배낭여행
- 유럽여행
- #DB#SQLD#자격증
- 추억
- 영국
- 인프라
- ip
- 준비
- 여행
- 경험
- 1달살기
- 실비용
- 파이썬
- JAVA #언어 #프로그래밍 #코딩 #static #정적함수 #정적변수 #클래스
- 리눅스
- 이탈리아
- 메시지 큐
- 여행 #
- 서버
- 일정
- 유럽
- 계획
- 샐러리
- Today
- Total
YoonWould!!
리눅스 명령어를 이용한 시스템 모니터링하기 본문
uname: 시스템과 커널의 정보
Uname 명령어를 사용하면 시스템과 커널의 정보를 확인할 수 있습니다. -a 옵션을 사용하면 모든 정보를 확인할 수 있습니다.
각각의 의미는 다음과 같습니다.
- [Linux] : 커널 명
- [Localhost] : 호스트 명
- [3.13.0-24-generic] : 커널 릴리즈 정보
- [#47-Ubuntu SMP Fri May 2 23:30:00 UTC 2014] : 커널 버전
- [x86_64] : 머신 하드웨어 이름
- [x86_64] : 프로세서 종류
- [x86_64] : 하드웨어 플랫폼
- [GNU/Linux] : 운영체제
사용할 수 있는 옵션은 아래와 같습니다.
- $ 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 명령어를 사용했을 때 나오는 의미를 살펴보겠습니다.
- [eth0, eth1] : 흔히 랜 카드라고 불리는 유선 네트워크 인터페이스입니다. 위 예제는 랜 카드가 2개있는 경우입니다.
- [lo] : 루프 백 인터페이스로 자기자신과 통신하는데 사용하는 가상 장치입니다. IP가 127.0.0.1 입니다. IP주소는 서버에 하나씩 부여되는 것이 아니라 네트워크 인터페이스에 할당되기 때문에 각 네트워크 인터페이스마다 다른 IP주소를 가지고 있습니다.
- [HWaddr] : 네트워크 인터페이스의 하드웨어 주소(MAC Address)
- [inetaddr] : 네트워크 인터페이스에 할당된 IP 주소
- [Bcast] : 브로드캐스트 주소
- [Mask] : 넷마스크
- [MTU] : 네트워크 최대 전송 단위(Maxium Transfer Unit)
- [RX packets] : 받은 패킷 정보
- [TX packets] : 보낸 패킷 정보
- [collision] : 충돌된 패킷 수
- [Interrupt] : 네트워크 인터페이스가 사용하는 인터럽트 번호
Ifconfig 명령어로는 private ip밖에 확인되지 않습니다. 공인 아이피(Public IP)를 알고 싶다면 Curl을 설치 후에 확인하면 됩니다.
$ curl ifconfig.me
top: 운영체제 작업 내역 모니터링
윈도우의 작업관리자와 비슷한 기능을 하는 명령어입니다.
프로세스 작업 명령어로, 시스템 프로세스들의 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 키와 영문자를 누르면 프로세스의 정렬 기준이 변경됩니다.
SHIFT + M 메모리 사용률 정렬 SHIFT + N PID 기준 정렬 SHIFT + P CPU 사용률 정렬 SHIFT + T 실행시간 기준 정렬 SHIFT + R 정렬 기준변경 (오름차순인 경우 내림차순으로, 내림차순인 경우 오름차순으로 변경)
free: 메모리 모니터링
메모리에 대한 정보를 확인할 수 있습니다. 저는 Memory와 Swap에 대한 값의 총 합을 확인하기 위하여 -t 옵션을 주었습니다.
- [MEM] : 실제 메모리
- [Swap] : 일종의 가상 메모리
- [Buffers] : 일부 프로세스에 의해 발생한 임시 메모리
- [Cached] : 기존에 실행된 프로그램들이 사용했던 메모리로 실행 중이거나 새로 시작될 프로그램들이 필요할 때 빠르게 재 사용할 수 있는 메모리 영역
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
vmstat: 시스템 정보 모니터링
시스템 작업, 하드웨어 및 시스템 정보를 확인할 수 있습니다. 메모리, 페이징, 블록장치의 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]]를 사용하면 실시간으로 메모리 상태를 확인할 수 있습니다.
- [$ verstat 3 5] : 3초 간격으로 모니터링 정보를 5번 출력
iostat: CPU, 디스크 입출력 상태 모니터링
평균 CPU부하 와 디스크 I/O의 세부적인 내용을 확인 할 수 있습니다.
- Device
- [tps] : 디바이스에 초당 전송 요청 건수
- [kB_read/s] : 디바이스에서 초당 읽은 데이터 블록 단위
- [kB_wrtn/s] : 디바이스에서 초당 쓴 데이터 블록 단위
- [kB_read] : 디바이스에서 지정한 간격 동안 읽은 블록 수
- [kB_wrtn] : 디바이스에서 지정한 간격 동안 쓴 전체 블록 수
-x 옵션을 사용하면 더 자세한 내역을 볼 수 있습니다.
iostat [delay [count]]를 사용하면 실시간으로 디스크의 상태를 확인할 수 있습니다.
- [$ iostat 3 5] : 3초 간격으로 모니터링 정보를 5번 출력하게 됩니다.
netstat: 네트워크 상태 모니터링
현재 시스템에 연결된 네트워크 상태, 라우팅 테이블, 인터페이스 상태 등을 볼 수 있습니다.
2개의 영역으로 나누어져 보여집니다.
- [Active Internet connections] : TCP, UDP, raw로 연결된 목록만 보여집니다.
- [Active UNIX domain sockets] : 도메인 소켓으로 연결된 목록만 보여집니다.
옵션은 아래와 같습니다.
- [-n] : 호스트명, 포트명을 lookup하지 않고(도메인으로 보이지 않고) IP, Port번호를 보여줍니다.
- [-a] : 모든 네트워크상태를 보여줍니다.
- [-t] : TCP 프로토콜만 보여줍니다.
- [-u] : UDP 프로토콜만 보여줍니다.
- [-p] : 해당 포트를 사용하는 프로그램과 프로세스ID(PID)를 보여줍니다.
- [-r] : 라우팅 테이블 출력
- [-s] : 프로토콜 별(IP, ICMP, TCP, UDP 등)로 통계를 보여줍니다.
- [-c] : 연속적으로 상태를 보여줍니다.
- [-l] : 대기중인 소켓 목록을 보여줍니다.
State는 아래와 같이 표현됩니다.
- [공백] : 연결되어 있지 않음
- [FREE] : socket은 존재하지만 할당되어 있지 않다.
- [LISTENING] : 연결요청에 대한 응답준비가 되어 있는 상태
- [CONNECTING] : 연결이 막 이루어진 상태
- [DISCONNECTING] : 연결해제 되고 있는 상태
- [UNKNOWN] : 알 수 없는 연결, 알려지지 않은 연결 상태
- [LISTEN] : 연결 가능하도록 daemon이 떠있으며 연결이 가능한 상태
- [SYS-SENT] : 연결을 요청한 상태
- [SYN_RECEIVED] : 연결요구에 응답 후 확인 메시지 대기중인 상태
- [ESTABLISHED] : 연결이 완료된 상태
- [FIN-WAIT1] : 소켓이 닫히고 연결이 종료되고 있는 상태
- [FIN-WAIT2] : 로컬이 원격으로부터 연결 종료 요구를 기다리는 상태
- [CLOSE-WAIT] : 종료 대기 중
- [CLOSING] : 전송된 메세지가 유실되었음
- [TIME-WAIT] : 연결종료 후 한동안 유지되어 있음
- [CLOSED] : 연결이 완전히 종료
옵션에 따라 다른 정보를 확인 할 수 있습니다. 유용하게 쓰이는 옵션들은 알아 두어야 합니다.
- [$ netstat -r] : 서버의 라우팅 테이블 출력
- [$ netstat -na --ip] : tcp/udp의 세션 목록 표시
- [$ netstat -na | grep ESTABLISHED | wc -l] : 활성화된 세션 수 확인
- [$ netstat -nap | grep :80 | grep ESTABLISHED | wc -l] : 80포트 동시 접속자수
- [$ netstat -nltp] : LISTEN 중인 포트 정보 표시
df: 디스크 모니터링
현재 디스크의 전체 용량 및 남은 용량을 확인할 수 있습니다.
옵션은 아래와 같습니다.
- [-h] : 용량을 읽기 쉽게 단위를 계산하여 출력
- [-T] : 파일 시스템 종류와 함께 디스크 정보 출력
[참조한글] : https://www.whatap.io/blog/10/
'<인턴생활> > [리눅스]' 카테고리의 다른 글
rhcsa 준비하자 (0) | 2019.03.12 |
---|---|
리눅스 레드헷 관련 주제 정리 (0) | 2019.03.12 |
[문제해결] ssh 설정을 했지만 selinux에 막혀서 안될 때 (0) | 2019.03.11 |
[용어]yum, apt, rpm 정리 (0) | 2019.03.08 |
[문제해결]-bash-4.1$ (0) | 2019.03.08 |