다음을 통해 공유


Azure Monitor Prometheus용 관리 서비스에 자체 관리되는 Prometheus 연결

Prometheus용 Azure Monitor 관리형 서비스는 Kubernetes 클러스터에서 Prometheus 서버를 관리할 필요가 없도록 자체 관리되는 Prometheus를 대체하기 위한 것입니다. Kubernetes 클러스터에서 자체 관리형 Prometheus를 계속 사용하는 동시에 장기 데이터 보존을 위해 Managed Prometheus로 데이터를 보내고 클러스터 전체에서 중앙 집중식 보기를 만들려는 시나리오가 있을 수 있습니다. 이는 관리되는 Prometheus로 마이그레이션하는 동안 임시 솔루션이거나 자체 관리되는 Prometheus에 대한 특정 요구 사항이 있는 경우 장기 솔루션일 수 있습니다.

아키텍처

Remote_write 로컬 Prometheus 인스턴스에서 원격 스토리지 또는 다른 Prometheus 인스턴스로 메트릭을 보낼 수 있는 Prometheus의 기능입니다. 이 기능을 사용하여 Kubernetes 클러스터 또는 가상 머신에서 실행되는 자체 관리형 Prometheus의 메트릭을 Managed Prometheus에서 사용하는 Azure Monitor 작업 영역으로 보냅니다.

다음 다이어그램에서는 이 구성을 보여 줍니다. Azure Monitor의 DCR(데이터 수집 규칙) 은 자체 관리형 Prometheus 인스턴스가 메트릭을 보낼 엔드포인트를 제공하고 데이터를 보낼 Azure Monitor 작업 영역을 정의합니다.

원격 쓰기를 사용하여 로컬 Prometheus에서 Managed Prometheus로 메트릭을 보내는 다이어그램

인증 유형

원격 쓰기에 대한 구성 요구 사항은 Azure Monitor 작업 영역에 연결하는 데 사용되는 인증 유형에 따라 달라집니다. 다음 표에서는 지원되는 인증 유형을 설명합니다. 각 구성에 대한 세부 정보는 다음 섹션에 설명되어 있습니다.

유형 지원되는 클러스터
시스템 할당 관리 ID AKS(Azure Kubernetes Service)
Azure VM/VMSS
사용자가 할당한 관리 ID AKS(Azure Kubernetes Service)
Arc 지원 Kubernetes
Azure VM/VMSS
Microsoft Entra ID (마이크로소프트 엔트라 ID) AKS(Azure Kubernetes Service)
Arc 지원 Kubernetes 클러스터
다른 클라우드 또는 온-프레미스에서 실행되는 클러스터
Azure VM/VMSS
Arc 지원 서버
다른 클라우드 또는 온-프레미스에서 실행되는 VM

비고

Microsoft Entra ID 워크로드 ID를 사용하여 인증을 사용할 수도 있지만, Prometheus 원격 쓰기 메트릭을 수집하고 패킷 인증을 돕기 위한 추상화를 제공하기 위해 사이드 카 컨테이너를 사용해야 합니다. 구성 을 위해 Microsoft Entra 워크로드 ID 인증을 사용하여 Prometheus 데이터를 Azure Monitor에 보내기 를 참조하세요. |

Azure Monitor 작업 영역

원격 쓰기를 구성하려면 먼저 Azure Monitor 작업 영역을 만들어야 합니다. 이렇게 하면 관리되는 prometheus가 자동으로 활성화됩니다. 아직 없는 경우 Azure Monitor 작업 영역 관리를 참조하세요.

인증을 위한 ID 만들기

원격 쓰기를 구성하려면 먼저 Azure Monitor 작업 영역에 인증하는 데 사용할 ID를 만들어야 합니다. 다음 섹션에서는 기존 ID를 다시 사용하지 않는 경우 각 ID 유형을 만드는 방법을 설명합니다.

시스템 할당 관리 ID를 직접 만들지 않고 대신 Azure 가상 머신 또는 가상 머신 확장 집합에 사용하도록 설정합니다. Azure VM의 경우 VM을 만들 때 ID를 사용하도록 설정하거나 나중에 Azure Portal의 ID 페이지에서 사용하도록 설정할 수 있습니다. VMSS의 경우 만든 후에 사용하도록 설정해야 합니다. 시스템 관리 ID를 사용하도록 설정하는 다양한 옵션은 Azure VM(가상 머신)에서 관리 ID 구성가상 머신 확장 집합에서 Azure 리소스에 대한 관리 ID 구성을 참조하세요.

Azure VM에 대해 시스템 할당 관리 ID를 사용하도록 설정하는 화면을 보여 주는 스크린샷

AKS 클러스터의 경우 관리 ID를 클러스터의 가상 머신 확장 집합에 할당해야 합니다. AKS는 가상 머신 확장 집합을 포함하는 리소스 그룹을 만듭니다. Azure Portal의 클러스터 메뉴에 있는 속성 페이지에서 이 리소스 그룹에 액세스합니다. 인프라 리소스 그룹을 클릭하여 이 리소스 그룹의 리소스 목록을 봅니다. 리소스 그룹의 각 가상 머신 확장 집합에 대해 시스템 관리 ID를 사용하도록 설정해야 합니다.

AKS 클러스터에 대한 인프라 리소스 그룹을 보여 주는 스크린샷

역할 할당

사용할 ID가 만들어지면 원격 쓰기 데이터를 수신할 Azure Monitor 작업 영역과 연결된 DCR(데이터 수집 규칙)에 대한 액세스 권한을 부여해야 합니다. 이 DCR은 작업 영역을 만들 때 자동으로 만들어집니다. 클러스터 또는 VM에 대한 원격 쓰기 구성에서 이 ID를 지정합니다.

  1. Azure Monitor 작업 영역의 개요 창에서 데이터 수집 규칙 링크를 선택합니다. 그러면 작업 영역과 연결된 DCR(데이터 수집 규칙)이 열립니다.

    Azure Monitor 작업 영역에 대한 DCR 링크를 보여 주는 스크린샷.

  2. 데이터 수집 규칙 페이지에서 액세스 제어(IAM)를 선택합니다. 추가를 선택한 다음 역할 할당 추가를 선택합니다.

    DCR에 대한 액세스 제어 페이지를 보여 주는 스크린샷

  3. 모니터링 메트릭 게시자 역할을 선택하고 다음을 선택합니다.

    DCR에 역할 할당 추가를 보여 주는 스크린샷

  4. 역할을 할당할 ID를 선택합니다.

    1. 시스템 할당 관리 ID의 경우 관리 ID 를 선택한 다음 멤버를 선택합니다. 관리 ID 드롭다운에서 VM/VMSS 또는 AKS 클러스터의 각 VMSS를 선택합니다.

    시스템 할당 관리 ID 멤버의 선택을 보여 주는 스크린샷

    1. 사용자 할당 관리 ID의 경우 사용자 할당 관리 ID 섹션을 선택합니다. 만든 ID를 선택합니다.

    관리 ID 멤버의 선택을 보여 주는 스크린샷.

    1. Entra ID의 경우 사용자, 그룹 또는 서비스 주체를선택한 다음 멤버를 선택합니다. 만든 애플리케이션을 선택한 다음, 선택을 선택합니다.

    Entra ID 멤버의 선택을 보여 주는 스크린샷

  5. 선택을 선택하여 선택을 확인한 다음 검토 + 할당을 선택하여 역할 할당을 완료합니다.


구성 파일에서 원격 쓰기 구성

마지막 단계는 자체 관리되는 Prometheus 서버의 구성 파일에 원격 쓰기를 추가하는 것입니다. 만든 ID에 대한 세부 정보 외에도 Azure Monitor 작업 영역에 대한 메트릭 수집 엔드포인트가 필요합니다. Azure Portal의 Azure Monitor 작업 영역에 대한 개요 페이지에서 이 값을 가져옵니다.

Azure Monitor 작업 영역에 대한 메트릭 수집 엔드포인트를 보여 주는 스크린샷

Prometheus 구성 파일의 섹션은 remote-write 사용 중인 인증 유형에 따라 다음 예제와 유사하게 표시됩니다.

관리형 아이덴티티

remote_write:   
  - url: "<metrics ingestion endpoint for your Azure Monitor workspace>"
    azuread:
      cloud: 'AzurePublic'  # Options are 'AzurePublic', 'AzureChina', or 'AzureGovernment'.
      managed_identity:  
        client_id: "<client-id of the managed identity>"

Entra ID

remote_write:   
  - url: "<metrics ingestion endpoint for your Azure Monitor workspace>"
    azuread:
      cloud: 'AzurePublic'  # Options are 'AzurePublic', 'AzureChina', or 'AzureGovernment'.
      oauth:  
        client_id: "<client-id from the Entra app>"
        client_secret: "<client secret from the Entra app>"
        tenant_id: "<Azure subscription tenant Id>"

구성 파일 업데이트 적용

가상 머신

가상 머신에서는 기본 구성 파일이 promtheus.yml이며, Prometheus 서버를 시작할 때 prometheus --config.file <path-to-config-file>을 사용하여 다른 구성 파일을 지정하지 않으면 기본 구성을 사용합니다.

Kubernetes 클러스터

Kubernetes 클러스터의 경우 구성 파일은 일반적으로 ConfigMap에 저장됩니다. 다음은 Kubernetes 클러스터에서 실행되는 자체 관리 Prometheus에 대한 관리 ID를 사용하는 원격 쓰기 구성을 포함하는 샘플 ConfigMap입니다.

  GNU nano 6.4
apiVersion: v1
kind: ConfigMap
metadata:
  name: prometheus-server-conf # must match what your pod mounts
  namespace: monitoring  # adjust to your namespace
data:
  prometheus.yml: |-
   global:
     scrape_interval: 15s
     evaluation_interval: 15s
     external_labels:
       cluster: "aks11"

   scrape_configs:
     - job_name: "prometheus"
       static_configs:
         - targets: ["localhost:9090"]

   remote_write:
     - url: "https://aks-amw-0mi2.eastus-1.metrics.ingest.monitor.azure.com/dataCollectionRules/dcr-00000000000000000000000000000000/streams/Microsoft-PrometheusMetrics/api/v1/write?api-version=2023-04-24"
       azuread:
         cloud: 'AzurePublic'
         managed_identity:
           client_id: "00001111-aaaa-2222-bbbb-3333cccc4444"

다음 명령을 사용하여 구성 파일 업데이트를 적용합니다.

kubectl apply -f <configmap-file-name>.yaml

Prometheus를 다시 시작하여 새 구성을 선택합니다. 배포를 사용하는 경우 다음 명령을 실행하여 Pod를 다시 시작할 수 있습니다.

kubectl -n monitoring rollout restart deploy <prometheus-deployment-name>

출시 정보

원격 쓰기 쪽 사이드카 이미지에 대한 자세한 릴리스 정보는 원격 쓰기 릴리스 정보를 참조하세요.

Troubleshoot

Prometheus 로그의 HTTP 403 오류

역할 할당이 적용되는 데 약 30분이 걸립니다. 이 시간 동안 Prometheus 로그에 HTTP 403 오류가 표시 될 수 있습니다. 작업 영역의 DCR에서 모니터링 메트릭 게시자 역할을 사용하여 관리 ID 또는 Microsoft Entra ID 애플리케이션을 올바르게 구성했는지 확인합니다. 구성이 올바르면 역할 할당이 적용될 때까지 30분 정도 기다립니다.

Kubernetes 데이터가 수집되지 않음

Managed Prometheus에서 데이터가 수집되지 않는 경우 다음 명령을 실행하여 원격 쓰기 컨테이너에서 오류를 찾습니다.

kubectl --namespace <Namespace> describe pod <Prometheus-Pod-Name>

컨테이너가 반복적으로 다시 시작됩니다.

컨테이너가 잘못 구성되어 컨테이너가 정기적으로 다시 시작될 수 있습니다. 다음 명령을 실행하여 컨테이너에 대해 설정된 구성 값을 봅니다. 특히 AZURE_CLIENT_IDIDENTITY_TYPE 구성 값을 확인합니다.

kubectl get pod <Prometheus-Pod-Name> -o json | jq -c  '.spec.containers[] | select( .name | contains("<Azure-Monitor-Side-Car-Container-Name>"))'

이 명령의 출력 형식은 다음과 같습니다.

{"env":[{"name":"INGESTION_URL","value":"https://my-azure-monitor-workspace.eastus2-1.metrics.ingest.monitor.azure.com/dataCollectionRules/dcr-00000000000000000/streams/Microsoft-PrometheusMetrics/api/v1/write?api-version=2021-11-01-preview"},{"name":"LISTENING_PORT","value":"8081"},{"name":"IDENTITY_TYPE","value":"userAssigned"},{"name":"AZURE_CLIENT_ID","value":"00000000-0000-0000-0000-00000000000"}],"image":"mcr.microsoft.com/azuremonitor/prometheus/promdev/prom-remotewrite:prom-remotewrite-20221012.2","imagePullPolicy":"Always","name":"prom-remotewrite","ports":[{"containerPort":8081,"name":"rw-port","protocol":"TCP"}],"resources":{},"terminationMessagePath":"/dev/termination-log","terminationMessagePolicy":"File","volumeMounts":[{"mountPath":"/var/run/secrets/kubernetes.io/serviceaccount","name":"kube-api-access-vbr9d","readOnly":true}]}

대용량 환경에서 데이터가 삭제됨

Azure Monitor 작업 영역에 대한 DCR(데이터 수집 규칙) 및 DCE(데이터 수집 엔드포인트)는 Azure Monitor 서비스 제한에 나열된 수집 제한의 적용을 받습니다. 동일한 엔드포인트로 데이터를 보내는 여러 클러스터에 대해 원격 쓰기를 구성할 때 이러한 제한이 가장 적용됩니다.

성능 향상을 위해 구성 설정을 조정하려면 원격 쓰기 튜닝 을 고려하세요. 데이터 삭제가 계속 표시되는 경우 수집 부하를 여러 엔드포인트에 분산하기 위해 추가 DCR 및 DCE를 만드는 것이 좋습니다. 이 방법은 성능을 최적화하고 효율적인 데이터 처리를 보장합니다. Prometheus 메트릭을 수집하기 위해 기존 AMW(Azure Monitor 작업 영역)에 대한 사용자 지정 DCE(데이터 수집 엔드포인트) 및 DCR(사용자 지정 데이터 수집 규칙)을 만드는 방법에 대한 지침을 참조하세요.

다음 단계