Sysdig – 리눅스용 강력한 시스템 모니터링 및 문제 해결 도구

Sysdig는 리눅스를 위한 오픈 소스, 크로스 플랫폼, 강력하고 유연한 시스템 모니터링 및 문제 해결 도구입니다. 또한 윈도우 및 Mac OSX에서도 작동하지만 기능이 제한되어 시스템 분석, 검사 및 디버깅에 사용할 수 있습니다.

일반적으로 리눅스 모니터링 및 디버깅 작업을 수행하기 위해 아래에 나열된 다양한 리눅스 성능 모니터링 및 문제 해결 도구를 혼합하여 사용합니다:

  1. strace – 프로세스에 시스템 호출 및 신호를 확인합니다.
  2. tcpdump – 원시 네트워크 트래픽 모니터링.
  3. netstat – 네트워크 연결 모니터링.
  4. htop – 실시간 프로세스 모니터링.
  5. iftop – 실시간 네트워크 대역폭 모니터링.
  6. lsof – 어떤 프로세스가 어떤 파일을 열어 두고 있는지 확인합니다.

그러나 sysdig은 위에 언급된 모든 도구와 그 외 많은 도구들을 단일하고 간단한 프로그램으로 통합하여 제공하며 특히 놀라운 컨테이너 지원 기능을 갖추고 있습니다. 이는 리눅스 시스템과 컨테이너의 실제 동작(이벤트 스트림)을 캡처, 저장, 필터링 및 검토할 수 있도록 합니다.

이 프로그램은 명령줄 인터페이스와 강력한 대화형 UI(csysdig)가 함께 제공되어 실시간으로 시스템 활동을 모니터링하거나 추적 덤프를 수행하고 나중에 분석을 위해 저장할 수 있습니다. csysdig가 어떻게 작동하는지 아래 비디오에서 확인할 수 있습니다.

Sysdig 특징:

  • 이 프로그램은 빠르고 안정적이며 사용하기 쉬우며 철저히 문서화되어 있습니다.
  • 도커, LXC를 비롯한 컨테이너 기술을 네이티브로 지원합니다.
  • 루아로 스크립팅할 수 있으며, 캡처된 시스템 이벤트를 처리하는 가벼운 루아 스크립트(치절)를 제공합니다.
  • 출력 내용의 유용한 필터링을 지원합니다.
  • 시스템 및 애플리케이션 추적을 지원합니다.
  • Ansible, Puppet 및 Logstash와 통합할 수 있습니다.
  • 고급 로그 분석 샘플을 활성화할 수 있습니다.
  • 윤리적 해커를 위한 리눅스 서버 공격(법의학) 분석 기능 외에도 많은 기능을 제공합니다.

이 문서에서는 리눅스 시스템에 sysdig를 설치하는 방법과 system 분석, 모니터링 및 문제 해결의 기본 예제를 사용하는 방법을 보여드리겠습니다.

Sysdig를 리눅스에 설치하는 방법

sysdig 패키지를 설치하는 것은 아래 명령을 실행하는 것만으로 간단합니다. 이 명령은 모든 요구 사항을 확인하고, 모든 것이 준비되어 있다면 Draios APT/YUM 저장소에서 패키지를 다운로드하고 설치할 것입니다.

# curl -s https://s3.amazonaws.com/download.draios.com/stable/install-sysdig | bash 
OR
$ curl -s https://s3.amazonaws.com/download.draios.com/stable/install-sysdig | sudo bash

설치 후에는 sysdig를 루트로 실행해야 합니다. 왜냐하면 이는 /proc 파일 시스템, /dev/sysdig* 장치와 같은 중요한 영역에 액세스해야 하며 sysdig-probe 커널 모듈을 자동으로 로드해야 합니다(그렇지 않은 경우 sudo 명령어를 사용하십시오).

가장 기본적인 예는 아무 인수 없이 실행하는 것입니다. 이렇게 하면 리얼타임으로 업데이트된 리눅스 시스템 이벤트 스트림을 볼 수 있습니다:

$ sudo sysdig
Watch Linux System Events

위의 출력(원시 데이터)은 아마도 여러분에게 많은 의미를 주지 않을 것입니다. 더 유용한 출력을 얻으려면 csysdig를 실행하십시오:

$ sudo csysdig 
Monitor Linux System Events

참고: 이 도구의 실제 느낌을 얻으려면 실행 중인 리눅스 시스템에서 이전에 본 것처럼 원시 데이터를 생성하는 sysdig를 사용해야 합니다. 이는 여러분이 필터와 체이저를 사용하는 방법을 이해해야 한다는 것을 요구합니다.

하지만 sysdig를 사용하는 무난한 방법이 필요하다면 csysdig를 계속 사용하십시오.

Sysdig 체이저와 필터 이해

Sysdig 체이저는 시스템 문제 해결 작업 및 기타 유용한 시스템 문제 해결 작업을 수행하기 위한 최소한의 Lua 스크립트입니다. 아래 명령은 모든 사용 가능한 체이저를 볼 수 있도록 도와줍니다:

$ sudo sysdig -cl

화면 샷에는 다른 카테고리에 속하는 다양한 끌로프 목록이 표시됩니다.

View Sysdig Chisels

특정 끌로프에 대한 자세한 정보를 알고 싶다면 -i 플래그를 사용하십시오.

$ sudo sysdig -i topprocs_cpu
View Sysdig Chisel Info

Sysdig 필터는 이벤트 스트림에서 얻을 수 있는 출력의 종류에 더 많은 기능을 추가하며, 출력을 사용자 정의할 수 있게 합니다. 명령 줄의 끝에 지정해야 합니다.

A straightforward and commonest filter is a basic “class.field=value” check, you can also combine chisels with filters for even more powerful customizations.

사용 가능한 필드 클래스, 필드 및 설명 목록을 보려면 다음을 입력하십시오.

$ sudo sysdig -l
View Sysdig Field Classes

Linux 시스템 추적 파일 생성

나중에 분석하기 위해 파일에 sysdig 출력을 덤프하려면 다음과 같이 -w 플래그를 사용하십시오.

-r 플래그를 사용하여 추적 덤프 파일을 읽을 수 있습니다.

$ sudo sysdig -r trace.scap

-s 옵션은 각 시스템 이벤트에 캡처할 데이터 바이트 수를 지정하는 데 사용됩니다. 이 예에서는 mongod 프로세스의 이벤트를 필터링합니다.

$ sudo sysdig -s 3000 -w trace.scap
$ sudo sysdig -r trace.scap proc.name=mongod
Create MongoDB Trace File

Linux 프로세스 모니터링

시스템 프로세스 목록을 보려면 다음을 입력하십시오.

$ sudo sysdig -c ps
Monitor Linux Processes

CPU 사용량별 프로세스 모니터링

CPU 사용량 백분율별 상위 프로세스를 확인하려면 다음 명령을 실행하십시오.

$ sudo sysdig -c topprocs_cpu
Monitor Processes by CPU Usage

네트워크 연결 및 I/O 모니터링

시스템 네트워크 연결을 보려면 다음을 실행하십시오.

$ sudo sysdig -c netstat
Monitor Network Connections

다음 명령은 총 바이트별 상위 네트워크 연결 목록을 도와줍니다.

$ sudo sysdig -c topconns

또한 다음과 같이 네트워크 I/O별 상위 프로세스 목록을 표시할 수 있습니다.

$ sudo sysdig -c topprocs_net    

시스템 파일 I/O 모니터링

시스템에서 프로세스가 읽고 쓰는 데이터를 아래와 같이 출력할 수 있습니다.

$ sudo sysdig -c echo_fds
Monitor System IO

(읽기 + 쓰기) 디스크 바이트별 상위 프로세스 목록을 보려면 다음을 사용하십시오.

$ sudo sysdig -c topprocs_file   

리눅스 시스템 성능 문제 해결

시스템 병목 현상(느린 시스템 호출)을 주시하려면 다음 명령을 실행하십시오:

$ sudo sysdig -c bottlenecks
Troubleshoot Linux Performance

프로세스 실행 시간 추적

프로세스 실행 시간을 추적하려면 다음 명령을 실행하고 추적 내용을 파일에 덤프하십시오:

$ sudo sysdig -w extime.scap -c proc_exec_time 
Track Process Execution Time

그런 다음 특정 프로세스(postgres 예시에서)의 세부 정보를 확인하려면 다음과 같이 필터를 사용하십시오:

$ sudo sysdig -r extime.scap proc.name=postgres

느린 네트워크 I/0 발견

다음 간단한 명령을 사용하여 느린 네트워크 I/0를 감지할 수 있습니다:

$ sudo sysdig -c netlower     

로그 파일 항목 모니터링

아래 명령을 사용하여 syslog에 기록된 모든 메시지를 표시할 수 있으며, 특정 프로세스의 로그 항목에 관심이 있다면 이전에 표시된대로 추적 덤프를 만들고 필터링하십시오:

$ sudo sysdig -c spy_syslog      

다음과 같이 어떤 프로세스가 작성한 데이터를 로그 파일에 출력할 수 있습니다:

$ sudo sysdig -c spy_logs   

HTTP 서버 요청 모니터링

시스템에 Apache 또는 Nginx와 같은 HTTP 서버가 실행 중인 경우, 다음 명령을 사용하여 서버의 요청 로그를 확인하십시오:

$ sudo sysdig -c httplog    
$ sudo sysdig -c httptop   [Print Top HTTP Requests] 
Monitor HTTP Requests

로그인 쉘 및 대화형 사용자 활동 표시

아래 명령을 사용하여 모든 로그인 쉘 ID를 확인할 수 있습니다:

$ sudo sysdig -c list_login_shells

마지막으로, 시스템 사용자의 대화형 활동을 표시할 수 있습니다:

$ sudo sysdig -c spy_users
Monitor User Activity

더 많은 사용 정보 및 예제는 sysdig 및 csysdig 매뉴얼 페이지를 참조하십시오:

$ man sysdig 
$ man csysdig

참고: https://www.sysdig.org/

또한 이 유용한 리눅스 성능 모니터링 도구들을 확인하십시오:

  1. BCC – Linux 성능 모니터링, 네트워킹 및 기타용 동적 추적 도구
  2. pyDash – 웹 기반 Linux 성능 모니터링 도구
  3. Perf – Linux용 성능 모니터링 및 분석 도구
  4. Collectl – Linux용 고급 올인원 성능 모니터링 도구
  5. Netdata – Linux 시스템용 실시간 성능 모니터링 도구
결론

Sysdig는 각종 명령행 도구의 기능을 하나의 탁월한 인터페이스로 통합하여, Linux 시스템 이벤트를 심층적으로 조사하고 데이터를 수집하여 나중에 분석할 수 있으며 놀라운 컨테이너 지원을 제공합니다.

이 도구에 관한 질문이나 생각을 공유하려면 아래 피드백 양식을 사용하십시오.

Source:
https://www.tecmint.com/sysdig-system-monitoring-and-troubleshooting-tool-for-linux/