Containerd 모니터링

Instana 호스트 에이전트를 설치하면 Containerd 센서가 자동으로 설치됩니다.

‘구성’ 섹션에 설명된 대로 Containerd 센서를 구성한 후에는 Instana UI에서 Containerd와 관련된 메트릭을 확인할 수 있습니다.

지원 정보

Containerd 센서가 현재 환경과 호환되는지 확인하려면 다음 지원 정보 섹션을 참조하십시오:

지원 운영 체제

Containerd 센서의 지원 운영 체제는 호스트 에이전트의 요구 사항과 일치하며, 이는 각 호스트 에이전트의 ‘지원 운영 체제’ 섹션에서 확인할 수 있습니다(예: Unix 의 ‘지원 운영 체제 ’).

지원되는 버전 및 지원 정책

이 센서는 다음 버전의 Containerd를 지원합니다:

  • 1.6.x
  • 1.7.x
  • 2.0.x

다음 표는 최신 지원 버전 및 지원 정책을 보여줍니다:

표 1. 지원되는 버전 및 정책
기술 지원 정책 최신 기술 버전 최신 지원 버전
컨테이너 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.

파일에 containerd.sock 대한 완전한 경로 목록. 이 센서는 및 /var/run/ /run/ 디렉토리에서 파일을 containerd.sock 검색하는 자동 소켓 파일 탐색 기능을 갖추고 있습니다. 소켓에 대해 다른 위치가 설정된 경우, 완전한 경로를 추가하십시오.

선택적 완전한 파일 경로의 발생 디렉토리입니다.

폴링 속도 설정

참고:
Instana 1.0.46 및 이후 버전의 Containerd 센서는 데이터 수집량을 줄이기 위해 폴링 빈도를 구성할 수 있도록 지원합니다. 이 기능은 자체 호스팅형 Instana 백엔드 311 버전 이상에서 지원됩니다.

다음 예시와 같이 에이전트 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"
 

메트릭 보기

메트릭을 보려면 다음 단계를 완료하십시오.

  1. 탐색 메뉴에서 ‘인프라’를 선택하세요.
  2. Containerd 컨테이너가 있는 호스트를 클릭하십시오.

수집된 모든 지표 및 모니터된 프로세스가 있는 호스트 대시보드를 볼 수 있습니다.

컨테이너 세부 정보 보기

컨테이너 세부사항을 페치하려면 컨테이너 정보 가져오기를 클릭하십시오.

Instana 다음과 같은 정보를 표시합니다:

  • 컨테이너 ID
  • 이미지
  • 작성 시간
  • 업데이트 시간
  • 컨테이너화된 네임스페이스
  • 레이블

성능 매트릭

표 2. 성과 지표
메트릭 설명 세분성
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 로그 확인

참고:
Containerd 로그를 수집하려면, 귀하의 계정 라이선스에 로깅 애드온이 포함되어 있어야 합니다. 라이선스를 확인하려면, 다음 단계를 진행하기 전에 ‘라이선스 및 사용 권한 요구 사항’을 참조하십시오.

Instana 1.0.30 버전 이상의 Containerd 센서에 대해 Containerd 로그 수집을 지원합니다.

참고:
Containerd 센서 CRI- API 클라이언트가 비활성화되어 있거나 에이전트가 해당 실행 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.

기본값: 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)