다음을 통해 공유


Nexus Kubernetes 클러스터 모니터링

각 Nexus Kubernetes 클러스터는 다음과 같은 여러 계층으로 구성됩니다.

  • VM(Virtual Machines)
  • Kubernetes 레이어
  • 애플리케이션 Pod

샘플 Nexus Kubernetes 클러스터의 스크린샷.

그림: 샘플 Nexus Kubernetes 클러스터

인스턴스에서 Nexus Kubernetes 클러스터는 선택적 Container Insights 가시성 솔루션과 함께 제공됩니다. Container Insights는 Nexus Kubernetes 클러스터와 워크로드에서 로그 및 메트릭을 캡처합니다. 이 도구를 사용할 것인지, 아니면 고유한 원격 분석 스택을 배포할 것인지는 전적으로 사용자의 재량입니다.

Azure 모니터링 도구를 사용하는 Nexus Kubernetes 클러스터는 다음과 같습니다.

모니터링 도구가 포함된 Nexus Kubernetes 클러스터의 스크린샷.

그림: 모니터링 도구를 사용하는 Nexus Kubernetes 클러스터

관리 ID 인증을 사용하는 CLI로 확장 온보딩

Azure CLI를 시작하는 방법, 여러 운영 체제에서 CLI를 설치하는 방법 및 CLI 확장을 설치하는 방법에 대한 설명서입니다.

필요한 CLI 확장의 최신 버전을 설치합니다.

Nexus Kubernetes 클러스터 모니터링

이 방법 가이드에서는 Azure Monitoring Agent를 사용하여 이러한 VM에서 시스템 로그를 수집하기 위해 모니터링 에이전트를 사용하도록 설정하는 단계를 제공합니다. 이 지침에서는 Log Analytics 작업 영역에 로그 데이터를 수집하도록 설정하는 방법을 자세히 다룹니다.

필수 조건

  • 클러스터 관리자의 Nexus Kubernetes 클러스터에 대한 액세스 권한.

  • Azure Arc 지원 서버를 사용하려면 다음 Azure 리소스 공급자를 구독에 등록합니다.

    • Microsoft.HybridCompute
    • Microsoft.GuestConfiguration
    • Microsoft.HybridConnectivity

이전에 등록하지 않은 경우 다음 리소스 공급자를 등록합니다.

az account set --subscription "{the Subscription Name}"
az provider register --namespace 'Microsoft.HybridCompute'
az provider register --namespace 'Microsoft.GuestConfiguration'
az provider register --namespace 'Microsoft.HybridConnectivity'
  • 필요에 따라 다음과 같은 Azure 기본 제공 역할에 Azure 서비스 주체를 할당합니다. 연결할 컴퓨터가 있는 Azure 리소스 그룹에 서비스 주체를 할당합니다.
역할 필요한 용도
Azure Connected Machine 리소스 관리자 또는 기여자 리소스 그룹의 Arc 지원 Nexus Kubernetes 클러스터 VM 서버를 연결하고 AMA(Azure Monitoring Agent)를 설치합니다.
모니터링 기여자 또는 기여자 리소스 그룹에 DCR(데이터 수집 규칙)을 만들고 여기에 Arc 지원 서버를 연결합니다.
사용자 액세스 관리자리소스 정책 기여자 또는 기여자 Azure Policy 할당을 사용하여 DCR이 Arc 지원 컴퓨터와 연결되어 있는지 확인하려는 경우 필요
Kubernetes 확장 기여자 Container Insights용 K8s 확장을 배포하는 데 필요

Nexus Kubernetes 클러스터 모니터링

필수 조건

운영자가 Nexus Kubernetes 클러스터에서 모니터링 도구를 구성하려면 충족해야 하는 특정 필수 구성 요소가 있습니다.

Container insights는 Log Analytics 작업 영역에 데이터를 저장합니다. 데이터는 Container Insights 확장을 설치하는 동안 제공한 리소스 ID가 있는 작업 영역으로 흐릅니다. 그렇지 않은 경우 데이터는 Azure 위치를 기준으로 구독과 연결된 리소스 그룹의 기본 작업 영역으로 이동합니다.

미국 동부를 예로 들면 다음과 같습니다.

  • Log Analytics 작업 영역 이름: DefaultWorkspace-<GUID>-EUS
  • 리소스 그룹 이름: DefaultResourceGroup-EUS

다음 명령을 실행하여 기존의 Log Analytics 작업 영역 리소스 ID를 가져옵니다.

az login

az account set --subscription "<Subscription Name or ID the Log Analytics workspace is in>"

az monitor log-analytics workspace show --workspace-name "<Log Analytics workspace Name>" \
  --resource-group "<Log Analytics workspace Resource Group>" \
  -o tsv --query id

Container Insights를 배포하고 해당 Log Analytics 작업 영역에서 데이터를 보려면 계정에 특정 역할을 할당해야 합니다. 예를 들어, '기여자' 역할을 할당합니다. 필요한 역할을 할당하기 위한 지침을 참조하세요.

  • Log Analytics 기여자 역할: CNF(프로비전된) 클러스터에서 컨테이너 모니터링을 사용하도록 설정하려면 필요한 권한입니다.
  • Log Analytics 읽기 권한자 역할: Log Analytics 기여자 역할의 멤버가 아닌 경우 컨테이너 모니터링을 사용하도록 설정하면 Log Analytics 작업 영역에서 데이터를 볼 수 있는 권한을 받아야 합니다.

클러스터 확장 설치

다음과 같이 Azure Cloud Shell에 로그인하여 클러스터에 액세스합니다.

az login

az account set --subscription "<Subscription Name or ID the Provisioned Cluster is in>"

이제 다음 두 명령 중 하나를 사용하여 프로비전된 Nexus Kubernetes 클러스터에 Container Insights 확장을 배포합니다.

고객이 미리 만든 Log Analytics 작업 영역 사용

az k8s-extension create --name azuremonitor-containers \
  --cluster-name "<Nexus Kubernetes cluster Name>" \
  --resource-group "<Nexus Kubernetes cluster Resource Group>" \
  --cluster-type connectedClusters \
  --extension-type Microsoft.AzureMonitor.Containers \
  --release-train preview \
  --configuration-settings logAnalyticsWorkspaceResourceID="<Log Analytics workspace Resource ID>" \
  amalogsagent.useAADAuth=true

기본 Log Analytics 작업 영역 사용

az k8s-extension create --name azuremonitor-containers \
  --cluster-name "<Nexus Kubernetes cluster Name>" \
  --resource-group "<Nexus Kubernetes cluster Resource Group>" \
  --cluster-type connectedClusters \
  --extension-type Microsoft.AzureMonitor.Containers \
  --release-train preview \
  --configuration-settings amalogsagent.useAADAuth=true

클러스터 확장 확인

다음 명령을 사용하여 Nexus Kubernetes 클러스터에서 모니터링 에이전트가 성공적으로 배포되었는지 확인합니다.

az k8s-extension show --name azuremonitor-containers \
  --cluster-name "<Nexus Kubernetes cluster Name>" \
  --resource-group "<Nexus Kubernetes cluster Resource Group>" \
  --cluster-type connectedClusters

확장의 프로비저닝 상태가 '성공'인지 확인합니다. 'k8s-extension create' 명령도 상태를 반환했을 수 있습니다.

로그 및 메트릭 수집 사용자 지정

Container Insights는 Nexus Kubernetes 클러스터의 로그 및 메트릭 컬렉션을 미세 조정하는 최종 사용자 기능을 제공합니다. 자세한 내용은 Container Insights 에이전트 데이터 수집 구성 지침을 참조하세요.

참고 항목

Container Insights는 기본적으로 네임스페이스에서 로그를 kube-system 수집하지 않습니다. 네임스페이스에서 로그를 kube-system 수집하려면 네임스페이스에서 로그를 수집하도록 에이전트를 kube-system 구성해야 합니다. 구성 접근 방식에 따라 ConfigMap의 excludedNamespaces 필드에서 네임스페이 configMap 스를 제거 kube-system 하여 이 작업을 수행할 수 있습니다.

[log_collection_settings]
  [log_collection_settings.stdout]
    # In the absence of this configmap, default value for enabled is true
    enabled = true
    # exclude_namespaces setting holds good only if enabled is set to true
    # kube-system,gatekeeper-system log collection are disabled by default in the absence of 'log_collection_settings.stdout' setting. If you want to enable kube-system,gatekeeper-system, remove them from the following setting.
    # If you want to continue to disable kube-system,gatekeeper-system log collection keep the namespaces in the following setting and add any other namespace you want to disable log collection to the array.
    # In the absence of this configmap, default value for exclude_namespaces = ["kube-system","gatekeeper-system"]
    exclude_namespaces = ["gatekeeper-system"]
    # If you want to collect logs from only selective pods inside system namespaces add them to the following setting. Provide namespace:controllerName of the system pod. NOTE: this setting is only for pods in system namespaces
    # Valid values for system namespaces are: kube-system, azure-arc, gatekeeper-system, kube-public, kube-node-lease, calico-system. The system namespace used should not be present in exclude_namespaces
    # collect_system_pod_logs = ["kube-system:coredns"]

  [log_collection_settings.stderr]
    # Default value for enabled is true
    enabled = true
    # exclude_namespaces setting holds good only if enabled is set to true
    # kube-system,gatekeeper-system log collection are disabled by default in the absence of 'log_collection_settings.stderr' setting. If you want to enable kube-system,gatekeeper-system, remove them from the following setting.
    # If you want to continue to disable kube-system,gatekeeper-system log collection keep the namespaces in the following setting and add any other namespace you want to disable log collection to the array.
    # In the absence of this configmap, default value for exclude_namespaces = ["kube-system","gatekeeper-system"]
    exclude_namespaces = ["gatekeeper-system"]
    # If you want to collect logs from only selective pods inside system namespaces add them to the following setting. Provide namespace:controllerName of the system pod. NOTE: this setting is only for pods in system namespaces
    # Valid values for system namespaces are: kube-system, azure-arc, gatekeeper-system, kube-public, kube-node-lease, calico-system. The system namespace used should not be present in exclude_namespaces
    # collect_system_pod_logs = ["kube-system:coredns"]

추가 리소스