데이터 수집 규칙을 사용하여 컨테이너 인사이트에서 데이터 수집 및 비용 최적화 구성

이 문서에서는 Kubernetes 클러스터에 DCR(데이터 수집 규칙)을 사용하여 컨테이너 인사이트에서 데이터 수집을 구성하는 방법을 설명합니다. 여기에는 비용을 최적화하기 위한 미리 설정된 구성이 포함됩니다. 클러스터를 컨테이너 인사이트에 온보딩할 때 DCR이 만들어집니다. 이 DCR은 컨테이너화된 에이전트에서 클러스터의 데이터 수집을 정의하는 데 사용됩니다.

DCR은 성능 및 인벤토리 데이터의 데이터 수집을 구성하고 비용 최적화를 구성하는 데 주로 사용됩니다.

DCR을 사용하여 수행할 수 있는 구성은 다음과 같습니다.

  • 성능 및 인벤토리 데이터에 컬렉션 및 네임스페이스 필터링을 사용하도록/사용하지 않도록 설정합니다.
  • 성능 및 인벤토리 데이터의 수집 간격 정의
  • Syslog 수집을 사용하도록/사용하지 않도록 설정
  • 로그 스키마 선택

Important

컨테이너 인사이트에서 데이터 수집을 완전히 구성하려면 각 메서드가 다른 설정 집합의 구성을 허용하므로 클러스터에 대한 DCR 및 ConfigMap을 모두 편집해야 할 수 있습니다.

설정 목록과 ConfigMap을 사용하여 데이터 수집을 구성하기 위한 프로세스에 대해서는 ConfigMap을 사용하여 컨테이너 인사이트에서 데이터 수집 구성을 참조하세요.

필수 조건

  • AKS 클러스터는 시스템 또는 사용자가 할당한 관리 ID를 사용해야 합니다. 클러스터가 서비스 주체를 사용하는 경우 관리 ID로 업그레이드해야 합니다.

데이터 수집 구성

컨테이너 인사이트를 사용하도록 설정할 때 만들어지는 DCR의 이름은 MSCI-<클러스터 지역>-<클러스터 이름>입니다. Azure Portal의 모니터 메뉴에서 데이터 수집 규칙 옵션을 선택하면 볼 수 있습니다. DCR을 직접 수정하는 대신, 아래에 설명된 방법 중 하나를 사용하여 데이터 수집을 구성해야 합니다. 각 방법에서 사용되는 다양한 설정에 대한 자세한 내용은 데이터 수집 매개 변수를 참조하세요.

Warning

기본 컨테이너 인사이트 환경은 모든 기존 데이터 스트림에 따라 달라집니다. 하나 이상의 기본 스트림을 제거하면 컨테이너 인사이트 환경을 사용할 수 없게 되며, Grafana 대시보드 및 로그 쿼리와 같은 다른 도구를 사용하여 수집된 데이터를 분석해야 합니다.

Azure Portal을 사용하여 컨테이너 인사이트를 사용하도록 설정한 후 기존 클러스터에서 비용 최적화를 사용하도록 설정하거나 비용 최적화와 함께 클러스터에서 컨테이너 인사이트를 사용하도록 설정할 수 있습니다.

  1. Azure Portal에서 클러스터를 선택합니다.

  2. 메뉴의 모니터링 섹션에서 인사이트 옵션을 선택합니다.

  3. 클러스터에서 컨테이너 인사이트를 이미 사용하도록 설정한 경우 모니터링 설정 단추를 선택합니다. 그렇지 않은 경우 Azure Monitor 구성을 선택하고, 모니터링 활성화에 대한 자세한 내용은 Azure Monitor를 사용하여 Kubernetes 클러스터에서 모니터링 사용을 참조하세요.

    모니터 설정 단추가 있는 AKS 클러스터의 스크린샷.

  4. AKS 및 Arc 지원 Kubernetes의 경우 클러스터를 아직 관리 ID 인증으로 마이그레이션하지 않았으면 관리 ID 사용을 선택합니다.

  5. 비용 사전 설정에 설명된 비용 사전 설정 중 하나를 선택합니다.

    온보딩 옵션을 보여 주는 스크린샷.

  6. 설정을 사용자 지정하려면 수집 설정 편집을 클릭합니다. 각 설정에 대한 자세한 내용은 데이터 수집 매개 변수를 참조하세요. 수집된 데이터는 아래의 수집된 데이터를 참조하세요.

    컬렉션 설정 옵션을 보여 주는 스크린샷.

  7. 구성을 클릭하여 설정을 저장합니다.

비용 사전 설정

Azure Portal을 사용하여 비용 최적화를 구성하는 경우 다음과 같은 미리 설정된 구성 중에서 선택할 수 있습니다. 이러한 설정 중 하나를 선택하거나 사용자 지정된 설정을 제공할 수 있습니다. 기본적으로 컨테이너 인사이트는 표준 사전 설정을 사용합니다.

비용 사전 설정 수집 빈도 네임스페이스 필터 Syslog 수집 수집된 데이터
Standard 1분 없음 사용 안 함 모든 표준 컨테이너 인사이트 테이블
비용 최적화 5분 kube-system, Gatekeeper-system, azure-arc 제외 사용 안 함 모든 표준 컨테이너 인사이트 테이블
syslog 1분 없음 기본값으로 사용 설정됨 모든 표준 컨테이너 인사이트 테이블
로그 및 이벤트 1분 없음 사용 안 함 ContainerLog/ContainerLogV2
KubeEvents
KubePodInventory

수집된 데이터

수집된 데이터 옵션을 선택하면 클러스터에 대해 채워진 테이블을 선택할 수 있습니다. 이는 CLI 또는 ARM을 사용하여 구성을 수행할 때의 streams 매개 변수와 동일합니다. 모두(기본값) 이외의 옵션을 선택하면 컨테이너 인사이트 환경을 사용할 수 없게 되며 Grafana 또는 다른 메서드를 사용하여 수집된 데이터를 분석해야 합니다.

수집된 데이터 옵션을 보여 주는 스크린샷.

그룹화 테이블 주의
모두(기본값) 모든 표준 컨테이너 인사이트 테이블 기본 컨테이너 인사이트 시각화를 사용하도록 설정하는 데 필요합니다.
성능 Perf, InsightsMetrics
로그 및 이벤트 ContainerLog 또는 ContainerLogV2, KubeEvents, KubePodInventory 관리 Prometheus 메트릭을 사용하도록 설정한 경우 권장됩니다.
워크로드, 배포 및 HPA InsightsMetrics, KubePodInventory, KubeEvents, ContainerInventory, ContainerNodeInventory, KubeNodeInventory, KubeServices
지속성 볼륨 InsightsMetrics, KubePVInventory

데이터 수집 매개 변수

다음 표에서는 지원되는 데이터 수집 설정과 서로 다른 온보딩 옵션에 각각 사용되는 이름을 설명합니다.

이름 설명
수집 빈도
CLI: interval
ARM: dataCollectionInterval
에이전트가 데이터를 수집하는 빈도를 결정합니다. 유효한 값은 1m 간격으로 1m~30m입니다. 기본값은 1m입니다. 값이 허용 범위를 벗어나는 경우 기본적으로 1m으로 설정됩니다.
네임스페이스 필터링
CLI: namespaceFilteringMode
ARM: namespaceFilteringModeForDataCollection
Include: 네임스페이스 필드의 값에서만 데이터를 수집합니다.
Exclude: 네임스페이스 필드의 값을 제외한 모든 네임스페이스에서 데이터를 수집합니다.
Off: 네임스페이스 선택을 무시하고 모든 네임스페이스에서 데이터를 수집합니다.
네임스페이스 필터링
CLI: namespaces
ARM: namespacesForDataCollection
namespaceFilteringMode에 따라 인벤토리 및 성능 데이터를 수집하기 위한 쉼표로 구분된 Kubernetes 네임스페이스의 배열입니다.
예를 들어, Include 설정을 사용하는 namespaces = ["kube-system", "default"]는 이 두 네임스페이스만 수집합니다. Exclude 설정을 사용하면 에이전트는 kube-systemdefault를 제외한 다른 모든 네임스페이스에서 데이터를 수집합니다. Off 설정을 사용하면 에이전트는 kube-systemdefault를 포함한 모든 네임스페이스에서 데이터를 수집합니다. 유효하지 않거나 인식할 수 없는 네임스페이스는 무시됩니다.
ContainerLogV2 사용
CLI: enableContainerLogV2
ARM: enableContainerLogV2
ContainerLogV2 스키마를 사용하도록 설정하는 부울 플래그입니다. true로 설정하면 stdout/stderr 로그가 ContainerLogV2 테이블에 수집됩니다. 그렇지 않으면 ConfigMap에 달리 지정되지 않는 한 컨테이너 로그가 ContainerLog 테이블에 수집됩니다. 개별 스트림을 지정할 때 ContainerLog 또는 ContainerLogV2에 해당하는 테이블을 포함해야 합니다.
수집된 데이터
CLI: streams
ARM: streams
컨테이너 인사이트 테이블 스트림의 배열입니다. 위의 지원되는 스트림과 테이블 매핑을 참조하세요.

적용되는 테이블 및 메트릭

수집 빈도네임스페이스 필터링에 대한 설정은 모든 컨테이너 인사이트 데이터에 적용되지 않습니다. 다음 표에는 컨테이너 인사이트에서 사용하는 Log Analytics 작업 영역의 테이블과 각 테이블에 적용되는 설정을 나열되어 있습니다.

참고 항목

이 기능은 ContainerLog 및 ContainerLogV2를 제외한 모든 컨테이너 인사이트 테이블에 대한 설정을 구성합니다. 이러한 테이블에 대한 설정을 구성하려면 에이전트 데이터 수집 설정에 설명된 ConfigMap을 업데이트합니다.

테이블 이름 간격 네임스페이스 설명
ContainerInventory
ContainerNodeInventory 아니요 Kubernetes 노드는 네임스페이스 범위 리소스가 아니므로 네임스페이스에 대한 데이터 수집 설정은 적용할 수 없습니다.
KubeNodeInventory 아니요 네임스페이스에 대한 데이터 수집 설정이 적용되지 않습니다. Kubernetes 노드는 네임스페이스 범위 리소스가 아닙니다.
KubePodInventory
KubePVInventory
KubeServices
KubeEvents 간격에 대한 데이터 수집 설정은 Kubernetes 이벤트에 적용되지 않습니다.
성능 Kubernetes 노드는 네임스페이스 범위 개체가 아니기 때문에 네임스페이스에 대한 데이터 수집 설정은 Kubernetes 노드 관련 메트릭에 적용할 수 없습니다.
InsightsMetrics 데이터 수집 설정은 container.azm.ms/kubestate, container.azm.ms/pv 및 container.azm.ms/gpu 네임스페이스를 수집하는 메트릭에만 적용됩니다.
메트릭 네임스페이스 간격 네임스페이스 설명
Insights.container/nodes 아니요 노드가 네임스페이스 범위 리소스가 아닙니다.
Insights.container/nodes
Insights.container/containers
Insights.container/persistentvolumes

스트림 값

CLI 또는 ARM을 사용하여 수집할 테이블을 지정할 때 Log Analytics 작업 영역의 특정 테이블에 해당하는 스트림 이름을 지정합니다. 다음 표에는 각 테이블의 스트림 이름이 나열되어 있습니다.

참고 항목

데이터 수집 규칙 구조에 익숙한 경우 이 테이블의 스트림 이름은 DCR의 dataFlows 섹션에서 지정됩니다.

스트림 컨테이너 인사이트 테이블
Microsoft-ContainerInventory ContainerInventory
Microsoft-ContainerLog ContainerLog
Microsoft-ContainerLogV2 ContainerLogV2
Microsoft-ContainerNodeInventory ContainerNodeInventory
Microsoft-InsightsMetrics InsightsMetrics
Microsoft-KubeEvents KubeEvents
Microsoft-KubeMonAgentEvents KubeMonAgentEvents
Microsoft-KubeNodeInventory KubeNodeInventory
Microsoft-KubePodInventory KubePodInventory
Microsoft-KubePVInventory KubePVInventory
Microsoft-KubeServices KubeServices
Microsoft-Perf 성능

시각화 및 경고에 미치는 영향

현재 다른 사용자 지정 경고 또는 차트에 위 표를 사용하고 있는 경우 데이터 수집 설정을 수정하면 해당 환경의 성능이 저하될 수 있습니다. 네임스페이스를 제외하거나 데이터 수집 빈도를 줄이는 경우 이 데이터를 사용하여 기존 경고, 대시보드 및 통합 문서를 검토하세요.

이러한 테이블을 참조하는 경고를 검사하려면 다음 Azure Resource Graph 쿼리를 실행합니다.

resources
| where type in~ ('microsoft.insights/scheduledqueryrules') and ['kind'] !in~ ('LogToMetric')
| extend severity = strcat("Sev", properties["severity"])
| extend enabled = tobool(properties["enabled"])
| where enabled in~ ('true')
| where tolower(properties["targetResourceTypes"]) matches regex 'microsoft.operationalinsights/workspaces($|/.*)?' or tolower(properties["targetResourceType"]) matches regex 'microsoft.operationalinsights/workspaces($|/.*)?' or tolower(properties["scopes"]) matches regex 'providers/microsoft.operationalinsights/workspaces($|/.*)?'
| where properties contains "Perf" or properties  contains "InsightsMetrics" or properties  contains "ContainerInventory" or properties  contains "ContainerNodeInventory" or properties  contains "KubeNodeInventory" or properties  contains"KubePodInventory" or properties  contains "KubePVInventory" or properties  contains "KubeServices" or properties  contains "KubeEvents" 
| project id,name,type,properties,enabled,severity,subscriptionId
| order by tolower(name) asc

다음 단계