시스템 모니터링
시스템 모니터링에 관련된 명령어
uname
시스템과 커널의 정보를 확인할 수 있으며 uname -a 옵션을 사용하면 커널 이름, 노드 이름, 커널 릴리즈, 커널 버전, 프로세서, 하드웨어 플랫폼, 운영 체제 정보를 알 수 있습니다.

top
현재 os를 사진과 같은 형태로 출력하며 상단에는 전체의 요약, 하단에는 각 프로세스마다 구체적 내용이 포함되어있다. 요약영역은 전체 프로세스가 OS에 대해서 리소스를 어느정도 차지하고 있는지를 알려줍니다. 요약 영역에 나타나는 대표적인 내용은 시간, 유저, 로드 애버리지(Load Average), 태스크(Tasks), CPU, 메모리(memory)입니다.


- 로드 애버리지(Load Average) : 해당 영역은 CPU가 수행하는 작업의 양을 순서대로 1분, 5분, 15분 간격의 평균값으로 표시합니다.
- 태스크(Task) : 현재 프로세스들의 상태를 나타내주는 영역으로, OS에 따라 Process라고도 합니다.
- CPU 사용량 : CPU가 어떻게 사용되고 있는지 그 사용률을 보여주는 영역입니다. 유저 영역, 커널 여역, 우선순위 설정 등, 각 영역 값의 총 합은 100%입니다.
- 메모리 사용량 : 첫번째 줄은 RAM의 메모리 영역으로 Mem이라 표시되어있는 부분이며, 두번째 줄은 디스크를 메모리처럼 이용하는 Swap 메모리 영역입니다. 일반적으로 Mem의 사용량이 가득 찼을때 Swap 메모리 영역을 사용합니다.
ifconfig
네트워크 기본 모니터링 명령어이며 활성화된 기본 네트워크의 세부 사항을 표기하며 비활성화된 네트워크 사항은 볼 수 없다.

- enp0s3 : 네트워크 인터페이스
- flags : 네트워크 카드의 상태 표시
- mtu : 네트워크 최대 전송 단위(Maximum Transfer Unit)
- inet : 네트워크에 할당된 IP 주소
- netmask : 네트워크에 할당된 넷마스크 주소
- broadcast : 네트워크에 할당된 브로드캐스트 주소
- inet6 : 네트워크에 할당된 IPv6 주소
- prefixlen : IP 주소에서 서브 넷 마스크로 사용될 비트 수
- scopeid : IPv6의 범위. LOOPBACK / LINKLOCAL / SITELOCAL / COMPATv4 / GLOBAL
- ether : 네트워크 인터페이스의 하드웨어 주소
- RX packets : 받은 패킷 정보
- TX packets : 보낸 패킷 정보
- collision : 충돌된 패킷 수
- Interrupt : 네트워크 인터페이스가 사용하는 인터럽트 번호
lsof
lsof는 list open files의 약자로, 시스템에 열려있는 모든 파일에 정보에 대해 출력한다.

- COMMAND : 실행 명령어
- PID : 프로세스 ID
- USER : 실행한 사용자
- FD: File Descriptor, 파일의 종류.
- cwd : current working directory
- rtd : root directory
- mem : memory-mapped file
- txt : program text (code and data)
- TYPE : 파일 종류
- DIR : 디렉토리
- REG : Regular File
- CHR : Character Special File
- unix : UNIX domain socket
- DEVICE : 장치 번호
- SIZE/OFF: 파일의 크기나 오프셋
- NODE : 노드 번호
- NAME : 파일 경로 및 파일 이름
netstat
network statistics 의 약자로 네트워크 상태 모니터링 명령어로 현재 시스템에 연결된 네트워크 상태, 라우팅 테이블, 인터페이스 상태 등을 볼 수 있습니다.

- -n : IP, Port번호를 보여줍니다.
- -a : 모든 네트워크상태를 보여줍니다.
- -t : TCP 프로토콜만 보여줍니다.
- -u : UDP 프로토콜만 보여줍니다.
- -r : 라우팅 테이블 출력
- -s : 프로토콜 별(IP, ICMP, TCP, UDP 등)로 통계를 보여줍니다.
- -l : 대기중인 소켓 목록을 보여줍니다.
Tcpdump
네트워크 패킷 분석기로 주어진 조건식을 만족하는 네트워크 인터페이스를 거치는 패킷들의 헤더들을 출력해주는 프로그램이다.

- -i eth0 => 인터페이스 eth0 을 보여줍니다
- -w tcpdump.log => 결과를 파일로 저장하며, txt 가 아닌 bin 형식으로 저장됨
- -r tcpdump.log => 저장한 파일을 읽습니다
- -i eth0 -c 10 => 패킷 10개만 보여줍니다
- -i eth0 tcp port 80 => tcp 80 포트로 통신하는 패킷 보여줍니다
- -i eth0 tcp port 80 => tcp 80 포트로 통신하는 패킷 보여줍니다
- -i eth0 src 192.168.0.1 => source ip 가 이것인 패킷 보여줍니다
- -i eth0 dst 192.168.0.1 => dest ip 가 이것인 패킷 보여줍니다
netstat
들어 오고 나가는 네트워크 패킷 통계와 인터페이스 통계 를 모니터링하기 위한 명령어이다.

- -a : 기본 출력에 포함되지 않은 netstat의 출력에 서버 포트를 포함합니다.
- -g : 멀티캐스트 연결과 관련된 정보를 표시합니다.
- -I : 인터페이스 는 지정된 인터페이스에 대한 패킷 데이터를 제공합니다. 사용 가능한 모든 인터페이스는 -i 플래그 로 볼 수 있지만 일반적으로 기본 발신 네트워크 인터페이스는 en0 입니다. (소문자에 주의하세요.)
- -n : 은 이름이 있는 원격 주소의 레이블을 억제합니다. 이렇게 하면 제한된 정보만 제거하면서 netstat의 출력 속도가 빨라집니다.
- -p : protocol 은 특정 네트워킹 프로토콜 과 관련된 트래픽을 나열 합니다 . 전체 프로토콜 목록은 /etc/protocols 에서 볼 수 있지만 가장 중요한 것은 udp 와 tcp 입니다. (mac x)
- -r : 네트워크에서 패킷 이 라우팅되는 방식을 보여주는 라우팅 테이블 을 표시 합니다.
- -s : 프로토콜이 활성 상태인지 여부에 관계없이 모든 프로토콜에 대한 네트워크 통계를 표시합니다.
- -v : 특히 열려 있는 각 포트와 연결된 PID(프로세스 ID)를 표시하는 열을 추가하여 자세한 정보를 늘립니다.
htop
top고 유사하지만 좀 더 사용자 친화적인 인터페이스와 수직, 수평보기, 바로 가기 키등을 제공하며 따로 설치가 필요하다.

iotop
top 명령 및 htop 프로그램 과 매우 유사 하지만 실시간 디스크 I/O 및 프로세스 를 모니터링하고 표시하는 계정 기능이 있다.

sudo fs_usage -f diskio : iotop가 동일하지는 않지만 유사하다.
iostat
디스크 입출력 대한 통계를 보고하고 처리량, 사용률, 대기열 길이, 드랜잭션 비율 및 서비스 시간에 대한 측정 결과를 알수 있는 프로그램이며 디스크에 베드 섹터라든지 이상이 없는데, 서버의 부하가 평소보다 높을 경우에 디스크 사용량을 알수 있다. 또한 간단한 명령어 한줄로 디스크 처리의 입출력 통계 및 처리량, 대기열 길이등을 실시간으로 모니터링 할수 있다.

iptraf
이더넷 카드별로 네트워크 트래픽과 tcp/udp 별로 트래픽을 확인할수 있으며 IP별로 사용량을 확인할수 있는 오프소스 프로그램이며 TCP, UDP, IP, ICMP, non-IP, IP 체크섬 오류, 인터페이스 활동 등의 일반 및 세부 인터페이스 통계 정보를 수집한다.

mac에선 설치법을 찾아도 모르겠다. 유사 프로그램인 glances를 추천해줬다.

Psacct 또는 Acct
사용자 활동 모니터링이며 두 시스템에서 사용자 활동을 모니터링하기위한 오픈 소스 응용 프로그램이며 애플리케이션은 백그라운드에서 실행되며 시스템의 각 사용자 활동과 소비되는 리소스를 추적한다.

mac에서 설치하는 법을 모르나 유사 방법으론 스포트라이트에서 활성상태보기를 할 수 있다.

monit
시스템 프로세스, 프로그램, 파일, 디렉토리, 권한, 체크섬 및 파일 시스템을 자동으로 모니터링하고 관리하는 무료 오픈 소스 및 웹 기반 프로세스 감독, 포트나 서비스를 모니터링 하다가 죽으면 다시 살려주는 스크립트이다.

mac은 앱스토어에 애플리케이션으로 올라가있으며 2.99달러이다. 왜 유료냐?
nethogs
프로세스 또는 애플리케이션에서 사용하는 실시간 네트워크 트래픽 대역폭을 모니터링하는 데 사용되는 오픈 소스 명령 줄 프로그램이며 top명령어와 유사하다. 각 프로그램 또는 응용 프로그램에서 사용하는 실시간 네트워크 트래픽 대역폭 을 추적한다.

iftop
시스템의 네트워크 인터페이스를 통과하는 네트워크 대역폭 사용률(소스 및 대상 호스트)의 자주 업데이트되는 목록을 표시하는 또 다른 터미널 기반 무료 오픈 소스 시스템 모니터링 유틸리티이다. top은 CPU와 메모리 사용 현황을 모니터링하는 것처럼 iftop 명령을 이용해서 네트워크 인터페이스의 트래픽을 모니터링 할 수 있다.

'TIL' 카테고리의 다른 글
| 8일차 웹서비스 개발 기초 (0) | 2022.04.26 |
|---|---|
| 7일차 웹서비스 개발 기초 (0) | 2022.04.25 |
| 5일차 리눅스 (0) | 2022.04.21 |
| 4일차 리눅스 (0) | 2022.04.20 |
| 3일차 CLI (0) | 2022.04.19 |