Containerd 모니터링
Instana 호스트 에이전트를 설치하면 Containerd 센서가 자동으로 설치됩니다.
‘구성’ 섹션에 설명된 대로 Containerd 센서를 구성한 후에는 Instana UI에서 Containerd와 관련된 메트릭을 확인할 수 있습니다.
지원 정보
Containerd 센서가 현재 환경과 호환되는지 확인하려면 다음 지원 정보 섹션을 참조하십시오:
지원 운영 체제
Containerd 센서의 지원 운영 체제는 호스트 에이전트의 요구 사항과 일치하며, 이는 각 호스트 에이전트의 ‘지원 운영 체제’ 섹션에서 확인할 수 있습니다(예: Unix 의 ‘지원 운영 체제 ’).
지원되는 버전 및 지원 정책
이 센서는 다음 버전의 Containerd를 지원합니다:
- 1.6.x
- 1.7.x
- 2.0.x
다음 표는 최신 지원 버전 및 지원 정책을 보여줍니다:
| 기술 | 지원 정책 | 최신 기술 버전 | 최신 지원 버전 |
|---|---|---|---|
| 컨테이너 | 45일 | 2.3.3 | 2.3.3 |
지원 정책에 대한 자세한 내용은 ‘센서 지원 전략’을 참조하십시오.
지원되는 환경
환경에서 Docker 또는 Garden 컨테이너를 실행하는 경우, Instana 는 동일한 컨테이너에 대해 여러 센서가 불필요하게 모니터링하는 것을 방지하기 위해 Containerd 센서를 자동으로 비활성화합니다.
지원되는 컨테이너
Instana 일시 중지 컨테이너를 제외하고, Containerd 런타임을 실행하는 모든 컨테이너를 지원합니다.
일시정지 컨테이너는 팟 (Pod) 에 대한 네트워크 네임스페이스를 보유하는 컨테이너입니다. Kubernetes 는 일시정지 컨테이너를 작성하여 각 팟 (Pod) 의 IP 주소를 획득하고 해당 팟 (Pod) 을 결합하는 다른 모든 컨테이너에 대한 네트워크 네임스페이스를 설정합니다.
Instana 다음과 같은 이유로 컨테이너 일시 중지 기능을 지원하지 않습니다:
- 모니터링 일시정지 컨테이너는 사이드카 헬퍼 컨테이너 역할을 하므로 인프라 레벨에서 많은 정보를 가져오지 않습니다.
- 일시 중지된 컨테이너를 포함하면 모니터링 대상 컨테이너 수가 두 배로 늘어나며, 이에 따라 Instana 의 모니터링 비용도 증가합니다.
지원되는 컨테이너 오케스트레이션 플랫폼
대부분의 Kubernetes 배포판(예: kubeadm이 포함된 업스트림 Kubernetes, GKE, EKS, AKS 등)은 Containerd를 기본 컨테이너 런타임으로 사용합니다. 하지만 OpenShift, CRI-O 컨테이너 런타임을 사용하기 때문에 이러한 상황이 발생하지 않습니다. OpenShift, 와 같은 Kubernetes 클러스터의 경우, Instana 은 CRIO 센서를 통해 CRI-O 에 대한 컨테이너 메트릭 수집을 지원합니다. CRI-O 컨테이너에 대한 로그 수집은 CRIO 센서에서 직접 지원되지 않으므로, CRI-O 를 컨테이너 런타임으로 사용하는 다음 Kubernetes 배포판에서 CRI-O 컨테이너의 로그를 수집하려면 OpenTelemetry 수집 기를 사용하는 것이 좋습니다.
구성
Containerd 센서는 컨테이너 메타데이터를 조회하며, 여기에는 Instana UI의 ‘ Kubernetes ’ 탭에 표시되는 Kubernetes 라벨이 포함됩니다. 이 기능은 지원되는 Kubernetes 환경에서 CRI( API ) 인터페이스를 사용합니다.
Kubernetes 에서는 환경 변수를 설정하여 INSTANA_USE_CONTAINERD_CRI_CLIENT 네이티브 CRI( API ) 클라이언트를 활성화할 수 있습니다(기본값: true). 이 변수가 로 true설정되면, 센서 구성에 다른 소켓이 명시되지 않은 한, 일반적으로 에 /var/run/containerd/containerd.sock 위치한 Containerd 소켓을 사용하여 컨테이너 메타데이터가 수집됩니다.
INSTANA_USE_CONTAINERD_CRI_CLIENT 플래그가 false로 설정되었거나 Kubernetes 클러스터가 CRI- API 를 지원하지 않는 경우, 센서는 crictl 바이너리를 사용하도록 전환됩니다. 해당 crictl 바이너리는 Instana 에이전트에 포함되어 있지 않습니다. Instana 호스트 에이전트가 설치되어 있고 에이전트 컨테이너에서 사용할 수 있도록 설정된 호스트 서버에 설치해야 합니다. 설치가 완료되면, 호스트 에이전트가 실행 중인 사용자의 환경 $PATH 변수에 바이너리 crictl 파일의 경로를 추가하십시오. crictl 명령줄 도구가 설치되어 있지 않은 경우, Containerd 센서의 CPU 및 메모리 사용량에 대한 성능 지표 수집은 정상적으로 작동할 수 있지만, 컨테이너와 연관된 Kubernetes 라벨은 Instana UI의 ‘ Kubernetes ’ > ‘Labels’ 탭에 표시되지 않습니다. 또한, 컨테이너 로그 수집 기능은 여전히 비활성화된 상태입니다. 로그 수집에 대한 자세한 내용은 ‘Containerd-Log 센서 구성’을 참조하십시오.Containerd 센서 구성
다음 예시와 같이 에이전트 구성 파일에서 Containerd 센서를 구성할 수 있습니다:
com.instana.plugin.containerd:
enabled: true
poll_rate: 10
unixSockets:
- '/path/to/containerd.sock'
| 매개변수 | 설명 | 필수 또는 선택적 여부 | 값 범위 |
|---|---|---|---|
com.instana.plugin.containerd.enabled |
Containerd 센서를 사용하기 위한 플래그입니다. | 선택적 | false 또는true. 기본값:true |
poll_rate |
플러그인의 폴링 빈도를 초 단위로 설정합니다. | 선택적 | 1부터 3600까지. 기본값: 10 |
com.instana.plugin.containerd.unixSockets |
사용 가능 시기: Containerd 센서 1.0.30. 파일에 |
선택적 | 완전한 파일 경로의 발생 디렉토리입니다. |
폴링 속도 설정
다음 예시와 같이 에이전트 configuration.yaml 파일의 poll_rate 매개변수를 사용하여 Instana 가 데이터와 메트릭을 수집하기 위해 Containerd를 폴링하는 빈도를 구성할 수 있습니다:
com.instana.plugin.containerd:
poll_rate: 10
메트릭 콜렉션 사용
1.2.0 이후 버전의 ctr Containerd 센서는 ` ctr task metrics command`를 사용하여 메트릭을 자동으로 수집할 수 있습니다. 이 경우에는 메트릭 콜렉션을 수동으로 사용으로 설정할 필요가 없습니다.
1.2.0 및 그 이전 ctr 버전을 사용하는 Containerd 센서는 명령을 metrics 지원하지 않습니다. 1.2.0ctr 이나 그 이전 버전을 사용하는 경우, 센서는 Prometheus 엔드포인트에서 메트릭을 조회하려고 시도합니다. Prometheus 엔드포인트를 사용하려면 /etc/containerd/config.toml 구성 파일에서 "metrics" 주소 "127.0.0.1:1338" 를 지정한 후 containerd.service를 다시 시작해야 합니다.
[metrics]
address = "127.0.0.1:1338"
메트릭 보기
메트릭을 보려면 다음 단계를 완료하십시오.
- 탐색 메뉴에서 ‘인프라’를 선택하세요.
- Containerd 컨테이너가 있는 호스트를 클릭하십시오.
수집된 모든 지표 및 모니터된 프로세스가 있는 호스트 대시보드를 볼 수 있습니다.
컨테이너 세부 정보 보기
컨테이너 세부사항을 페치하려면 컨테이너 정보 가져오기를 클릭하십시오.
Instana 다음과 같은 정보를 표시합니다:
- 컨테이너 ID
- 이미지
- 작성 시간
- 업데이트 시간
- 컨테이너화된 네임스페이스
- 레이블
성능 매트릭
| 메트릭 | 설명 | 세분성 |
|---|---|---|
| CPU 사용량 | 메트릭에는 총 CPU 사용량, 커널 CPU 사용량, 사용자 CPU 사용량 및 정규화된 CPU 사용량이 포함됩니다. | 10초 |
| CPU 조절 | 조절 시간 및 수 | 10초 |
| 메모리 사용량 | 메트릭에는 총 메모리 사용량 (바이트), 상주 세트 크기 (바이트), 캐시 사용량 (바이트), 총 메모리 사용량 (백분율) 및 작업 세트 사용량 (백분율) 이 포함됩니다. | 10초 |
| 활성 메모리 | 익명 및 캐시 활성 메모리의 양입니다. | 10초 |
| 메모리 비활성 | 익명 및 캐시 비활성 메모리의 양입니다. | 10초 |
| 블록 IO | 모니터된 컨테이너가 블록 디바이스에 쓰고 읽는 데이터의 양 (바이트) 입니다. | 10초 |
파생 성과 지표
Instana UI에서 다음과 같은 파생 지표를 확인할 수 있습니다:
- 정규화된 CPU 총계
- 메모리 사용량(%)
- 메모리 작업 세트 사용량%
표준화된 총 CPU 사용량
CPU Total Normalized 메트릭은 컨테이너의 정규화된 CPU 사용량 (백분율) 입니다. 값의 범위는 0% - 100%입니다. Instana 다음 공식을 사용하여 메트릭을 계산합니다: total_normalized_cpu_usage_percentage = cpu_total_usage / cpu_limit
cpu_limit 값은 배치되는 컨테이너의 구성에 따라 다릅니다. 배치된 컨테이너의 구성에 cpu_limit 가 지정되지 않은 경우 total_normalized_cpu_usage_percentage 지표의 값을 알 수 없습니다.
메모리 사용량
Memory Usage % 지표는 상주 세트 크기 및 파일 시스템 캐시 사용량을 포함한 메모리 사용량 (백분율) 입니다. 메트릭은 다음 공식을 사용하여 계산됩니다. metric_usage_percentage = memory_used / memory_limit
memory_limit 메트릭의 값은 배치되는 컨테이너의 구성에 따라 다릅니다. 배치된 컨테이너의 구성에 memory_limit 가 지정되지 않은 경우 memory_used 지표의 값을 알 수 없습니다.
메모리 작업 세트 사용량
Memory Working Set Usage % 는 파일 시스템 캐시를 제외한 메모리 사용량 (백분율) 입니다. 메트릭은 다음 공식을 사용하여 계산됩니다. memory_working_set_usage_percentage = (memory_used - total_inactive_file)/ memory_limit
memory_limit 값은 컨테이너의 배치 구성에 따라 다릅니다. memory_limit 가 컨테이너의 배치 구성에 지정되지 않은 경우에는 memory_working_set_usage_percentage 가 제공되지 않습니다.
Containerd 로그 확인
Instana 1.0.30 버전 이상의 Containerd 센서에 대해 Containerd 로그 수집을 지원합니다.
crictl 파일을 사용할 수 없는 경우, Containerd 센서는 로그를 수집하지 않습니다. 자세한 내용은 ‘구성’ 섹션을 참조하십시오.이 기능이 활성화되면, Containerd 센서는 파일에 기록된 로그만 수집합니다. 이는 Instana 에서 기본 로깅 드라이버만 지원하기 때문입니다.
예를 들어, Kubernetes 배포 환경에서는 Containerd가 /var/log/pods/{namespace}_{podName}_{podUID}/{containerName} 디렉터리에 있는 파일에 로그를 기록합니다.
Instana UI에서 [Analytics] > [Logs] 를 클릭하여 수집된 로그를 확인할 수 있으며, “Container Snapshot Id” 필터를 사용하여 Docker 와 Containerd 로그 메시지를 모두 필터링할 수 있습니다.
Containerd-Log 센서 구성
logs 섹션을 통해 Containerd-Log 센서를 구성할 수 있습니다. com.instana.plugin.containerd:
enabled: true
poll_rate: 10
logs:
enabled: true
sendInterval: 60
maxBufferSize: 16777216
unixSockets:
- '/path/to/containerd.sock'
다음 표에는 추가 로깅 구성 매개변수에 대한 설명이 나와 있습니다:
| 매개변수 | 설명 | 필수 또는 선택적 여부 | 값 범위 |
|---|---|---|---|
com.instana.plugin.containerd.logs.enabled |
사용 가능 시기: Containerd 센서 1.0.30. Containerd 센서의 로그 수집을 활성화하는 플래그입니다. |
선택적 |
true 또는false.기본값: |
com.instana.plugin.containerd.logs.sendInterval |
사용 가능 시기: Containerd 센서 1.0.30. 컨테이너 로그가 백엔드로 업로드되기 전까지 로그 센서에 캐시되어 유지되는 최대 시간(초 단위). |
선택적 |
1-600. 기본값: 60 |
com.instana.plugin.containerd.logs.maxBufferSize |
사용 가능 시기: Containerd 센서 1.0.30. 최대 내부 로그 버퍼 크기(바이트 단위). 내부 로그 버퍼의 내용이 지정된 크기를 초과하면, 로그 센서가 해당 내용을 Instana 백엔드로 플러시합니다. |
선택적 |
1000-32000000. 기본값: 16777216 (16 MB) |