당신의 Linux 시스템은 서버와 데스크톱을 위한 훌륭한 플랫폼입니다. 그러나 다른 복잡한 시스템과 마찬가지로, 시스템을 최상의 상태로 유지하기 위해서는 적절한 모니터링이 필수입니다. 다행히도 Sysdig가 바로 그 해결책입니다!
Sysdig는 시스템에서 위협, 오류, 사용 패턴 등을 모니터링할 수 있는 포괄적인 Linux 모니터링 도구입니다. 이 튜토리얼에서는 Sysdig를 설치하는 방법과 함께 Linux 시스템을 더 효과적으로 모니터링하는 데 도움이 되는 특정 구성 옵션을 강조합니다.
계속 읽어보고 ‘알림’을 놓치지 마세요!
전제 조건
이 튜토리얼은 실습을 중심으로 진행됩니다. 따라오려면 다음 사항이 있는지 확인하세요.
- A Linux machine – This tutorial uses Ubuntu 20.04 LTS, but any Linux distributions will work.
- A non-root user with sudo privileges.
Linux에 Sysdig 설치
Sysdig 명령줄 도구는 대부분의 현대적인 Linux 배포판에서 일반적으로 제공되며, 현재까지 시스템에 설치한 다른 패키지와 마찬가지로 Sysdig를 설치할 수 있습니다.
1. 터미널을 열고 아래의 apt update
명령을 실행하여 배포본 저장소에서 최신 업데이트를 받아오십시오. 이 명령은 시스템의 패키지 목록을 업데이트하며 완료되기까지 몇 분이 걸릴 수 있습니다.

2. 다음으로 아래의 apt install
명령을 실행하여 Sysdig에 필요한 패키지를 다운로드(curl
)하고 설치
하십시오. 이 명령은 다음 튜토리얼에서 사용되는 몇 가지 추가 모듈도 설치합니다:
gnupg
– GNU Privacy Guard는 안전한 통신 및 데이터 저장을 위한 도구입니다. 이 패키지는 Sysdig 패키지의 유효성을 확인하기 위해 Sysdig의 공개 GPG 키를 다운로드할 수 있도록 합니다.
software-properties-common
– 명령 줄 환경 또는 GUI를 통해 소프트웨어 소스를 빠르게 관리하는 방법을 제공합니다. 이 패키지를 사용하면add-apt-repository
명령을 사용하여 Sysdig 패키지 저장소를 추가할 수 있습니다.
linux-headers-$(uname -r)
– 실행 중인 커널에 대한 커널 모듈을 빌드하는 데 필요한 파일을 제공합니다. 이 패키지는 이전 스톡 커널이있는 시스템에 Sysdig를 설치할 수 있기 때문에 필요합니다.

3. 아래 curl
명령을 실행하여 Sysdig의 GPG 공개 키(GPG
)를 APT의 키링에 추가합니다. 이 명령을 사용하면 sysdig.com에서 다운로드한 패키지가 유효하고 수정되지 않았는지 확인할 수 있습니다.
키를 성공적으로 추가한 후 아래와 같이 OK 메시지가 표시됩니다.

4. 이제 아래 curl
명령을 실행하여 Sysdig 저장소를 조용히(-s
) 다운로드하고 시스템에 추가하십시오. .list
확장명은 APT에게 해당 파일이 저장소의 URL 목록이라는 것을 알려줍니다.
5. 아래 apt update
명령을 다시 실행하여 새로운 Sysdig 저장소를 다운로드하고 APT의 패키지 목록을 새 저장소 정보로 업데이트합니다.
APT가 올바르게 구성되어 있다면 다음 출력이 표시됩니다.

6. Sysdig 저장소를 다운로드한 후에는 아래의 apt install
명령을 실행하여 기기에 sysdig
를 설치합니다. 이 명령은 sysdig
패키지와 그 지원 패키지를 다운로드하고 설치합니다.

7. 마지막으로 아래의 sysdig
명령을 실행하여 기기에 설치된 Sysdig 버전을 확인합니다.
버전 번호는 Sysdig 패키지가 최신 상태인지 여부를 결정하는 데 도움이 됩니다. 또한 버전은 Sysdig 릴리스가 시스템 성능에 영향을 미치는지 여부를 파악하는 데 도움이 됩니다.
아래와 같이 현재 버전인 0.28.0이 sysdig의 최신 버전입니다. 버전 번호는 다를 수 있습니다.

csysdig
를 사용한 Linux 시스템 모니터링
이제 Sysdig가 설치되었으니, 시스템 상황을 확인할 수 있습니다. Sysdig 명령줄 도구에는 시스템 및 활동에 대한 다양한 보기를 제공하는 많은 플래그가 있습니다. 가장 기본적인 예는 csysdig
명령입니다.
명령어 csysdig
를 아무런 플래그 없이 실행하여 시스템에서 현재 발생하고 있는 일들을 확인할 수 있습니다. 이 명령은 현재 실행 중인 모든 프로세스의 활동을 보여줍니다.
Sysdig 명령을 실행하려면 관리자 권한으로 실행해야 합니다. 일부 시스템 활동은 기본적으로 일반 사용자에게는 숨겨져 있을 수 있습니다. 예를 들어, /proc 파일 시스템의 출력과 같은 것입니다. 또한 sysdig는 많은 기능을 수행하기 위해 필요한 커널 심볼을 자동으로 로드하기 위해
sudo
권한이 필요합니다.
다음과 같은 오류가 발생하면, ncurses-term
패키지를 재설치해야 합니다. ncurses-term
패키지는 새로운 Sysdig 설치 후에 손상될 수 있습니다. Sysdig는 ncurses UI를 지원하기 위해 ncurses-term
패키지에 의존합니다.

csysdig
명령이 성공하면, 다음과 같이 탭으로 구성된 출력을 받게 됩니다.
Description | |
PID | The Process ID that assigned by the Linux kernel. You use PIDs to identify and manage processes. |
PPID | The parent process ID of the process. You use PPID to trace the process back through its parent processes. Together, PID and PPID uniquely identify a process on your system. |
CPU | The percentage of CPU used by the application since it started can be seen on a scale from 0 to 100%, where 100% equals total CPU usage. You use CPU usage to find applications that are hogging system resources. |
USER | The name of the user that started the process. You use USER to find out who is executing a process you are interested in. |
TH | The name of the user that started the process. You use USER to find out who is executing a process you are interested in. |
VIRT | The total amount of virtual memory used by the application. You use VIRT to find applications that are hogging your system’s memory. |
RES | The number of resident memory pages a process has, as mapped to physical memory. You use RES to find applications that are hogging your system’s memory. |
FILE | The disk’s file descriptor used by the application. You use FILE to see which files are being read or written frequently, usually an indication of I/O activity. |
NET | The network socket descriptor used by the application. You use NET to see which network connections are being used by the process, and how much data is being transferred in bytes per second. |
Command | The network socket descriptor used by the application. You use NET to see which network connections are being used by the process, and how much data is being transferred in bytes per second. |
초기에 csysdig 인터페이스는 htop와 같은 모니터링 도구와 비슷합니다.

F2를 누르면 상단 탭이 변경되어 왼쪽에 탭으로 구성된 새로운 정보 세트가 표시됩니다.
이러한 것들을 Sysdig는 “뷰”라고 부릅니다. 이는 보여주는 정보의 종류에 따라 구성된 다른 시스템 뷰이며, 더 많은 문맥을 제공합니다. 또한 이러한 뷰는 LUA 스크립트 기반이므로 시스템에서 다른 데이터를 추출하고 원하는대로 뷰를 변경할 수 있습니다.

기본적으로 LUA 스크립트는 /usr/share/sysdig/chisels 디렉토리에 위치해 있습니다.

Sysdig Chisels를 사용하여 CPU 사용 프로세스 모니터링하기
Sysdig는 “Chisels”라고 불리는 특정 시스템 정보를 자동으로 수집하는 몇 가지 준비된 도구를 제공합니다. 아마도 CPU 성능이 느리게 느껴진다면, 지정된 Chisel과 함께 sysdig
명령을 실행하여 CPU 사용량이 가장 많은 애플리케이션/프로세스를 확인할 수 있습니다.
1. 아래의 sysdig
명령을 실행하여 사용 가능한 Chisel 목록을 나열합니다.
아래 스크린샷은 몇 개의 끌로만 구성되어 있습니다. 그러나 공식 문서에서 모든 사용 가능한 끌의 완전한 목록을 찾고 학습할 수 있습니다.
Sysdig 끌도 LUA 스크립트입니다. 특정 시스템 정보를 모니터링하거나 자체적인 뷰를 구현하기 위해 자체 끌을 만들 수 있지만, 이 주제는 이 튜토리얼의 범위를 벗어납니다.

2. 다음으로, 이 데모에서와 같이 특정 끌인 topprocs_cpu
에 대한 자세한 정보(-i
)를 확인하려면 아래 명령을 실행하십시오.
아래에서 topprocs_cpu 끌에 대한 모든 정보를 볼 수 있으며, 끌의 이름, 카테고리 및 끌의 기능에 대한 간단한 설명이 포함됩니다.
이 예에서는 topprocs_cpu 끌이 CPU 사용량으로 분류되며 가장 높은 CPU 사용률을 가진 최상위 프로세스를 표시합니다.
끌의 기능을 이해하면 해당 끌을 사용할 수 있습니다.

3. 시스템에서 CPU를 가장 많이 사용하는 애플리케이션을 찾으려면 아래 sysdig
명령을 실행하고 올바른 끌(-c topprocs_cpu
)을 지정하십시오.
Sysdig는 이 데모에서 상위 10개의 CPU 소비 프로세스를 캡처하고 터미널에 인쇄합니다. 가장 CPU 집약적인 프로세스가 상단에 표시되어 빠르게 찾을 수 있습니다.

시스템 정보 필터링 모니터링
어떤 경우에는 출력물이 매우 방대하여 특정 첨삭에 기반한 시스템 정보를 필터링하기 어려울 수 있습니다. 다행히 Sysdig는 루아 구문을 사용하는 강력한 필터 옵션을 제공하여 효과적인 필터링을 수행할 수 있게 합니다.
예를 들어 고 CPU 사용률에 기여하는 sshd 프로세스만 찾고 있다고 가정해보세요. 특정 PID나 프로세스 이름으로 필터 표현식을 정의할 수 있습니다.
아래의 sysdig
명령을 실행하여 CPU를 많이 사용하는 sshd
프로세스만 표시하세요.
아래와 같이 필터링된 출력을 얻게 됩니다. 다른 프로세스 정보를 얻지 않고 sshd 프로세스에 대한 자세한 정보를 얻을 수 있습니다.
출력에서는 sshd 프로세스에 대한 추가 정보를 얻을 수 있습니다. 예를 들어 sshd 프로세스가 CPU 또는 메모리를 더 많이 사용하는 이유 등이 있습니다.

시스템 모니터링을 위한 이벤트 로그 파일 생성
Sysdig가 제공하는 훌륭한 기능 중 하나는 나중의 분석을 위해 응용 프로그램 또는 시스템이 수행한 모든 정보를 수집할 수 있는 이벤트 로그 파일입니다. 이벤트 로그 파일은 이전 예제의 명령 줄 출력과 동일한 정보를 제공하지만 디스크에 파일로 저장됩니다.
1. 아래 명령을 실행하여 홈 디렉토리에 ata.scap
라는 파일(-w
)을 생성하십시오. 여기에 Syslog가 모든 sysdig
출력을 저장합니다.
.scap 파일 확장자는 데이터 스트림을 인간이 읽을 수 있는 텍스트 형식으로 저장하는 데 사용됩니다.
2. 다음으로 아래 명령어 ls -la
를 실행하여 작업 디렉토리에 있는 모든 파일을 나열합니다.
홈 디렉토리에 새 파일인 ata.scap이 표시됩니다. 아래와 같이 표시됩니다.

3. 마지막으로, Sysdig가 SSH를 통해 서버에 접속할 때 시스템 동작을 인쇄하도록 아래 명령어를 실행합니다. (-r
을 사용하여) Sysdig 이벤트 로그 파일 (ata.scap
)을 읽도록 합니다.

결론
이 문서에서는 Ubuntu 20.04에 Sysdig를 설치하고 csysdig를 사용하여 시스템, 응용 프로그램 및 보안 정보를 수집하는 방법을 배웠습니다. 또한 시스템 동작을 기록할 수 있는 이벤트 로그 파일을 생성하는 데도 다뤄보았습니다.
이 시점에서 Sysdig가 시스템에 설치되어 있으면 강력한 도구를 제공한다는 것을 깨달았을 것입니다. 이 도구들은 시스템, 응용 프로그램 및 인프라가 어떻게 작동하는지에 대한 더 많은 통찰력을 제공하는 데 도움이 됩니다.
이제 이 새로운 지식을 가지고 있으니, 왜 Sysdig로 HTTP 트래픽을 해석하거나(decode your HTTP traffic with Sysdig) 어플리케이션 병목 현상을 추적하는 방법을 배우지 않을까요(track down application bottlenecks with Sysdig tracers)?