Wysyłanie danych rozwiązania Prometheus do usługi Azure Monitor przy użyciu uwierzytelniania tożsamości zarządzanej

W tym artykule opisano sposób konfigurowania zdalnego zapisu w celu wysyłania danych z zarządzanego przez siebie serwera Prometheus działającego w klastrze usługi Azure Kubernetes Service (AKS) lub klastrze Kubernetes z obsługą usługi Azure Arc przy użyciu uwierzytelniania tożsamości zarządzanej. Możesz użyć istniejącej tożsamości utworzonej przez usługę AKS lub utworzyć własną. Obie opcje zostały opisane tutaj.

Konfiguracje klastrów

Ten artykuł dotyczy następujących konfiguracji klastra:

  • Klaster usługi Azure Kubernetes Service;
  • Klaster Kubernetes z obsługą usługi Azure Arc

Uwaga

Aby uzyskać informacje na temat konfigurowania zdalnego zapisu dla klastra Kubernetes działającego w innej chmurze lub lokalnie, zobacz Wysyłanie danych Prometheus do usługi Azure Monitor przy użyciu uwierzytelniania firmy Microsoft Entra.

Wymagania wstępne

Obsługiwane wersje

Wersje prometheus większe niż wersja 2.45 są wymagane do uwierzytelniania tożsamości zarządzanej.

Obszar roboczy usługi Azure Monitor

W tym artykule opisano wysyłanie metryk rozwiązania Prometheus do obszaru roboczego usługi Azure Monitor. Aby utworzyć obszar roboczy usługi Azure Monitor, zobacz Zarządzanie obszarem roboczym usługi Azure Monitor.

Uprawnienia

do wykonania kroków opisanych w tym artykule są wymagane uprawnienia Administracja istratora dla klastra lub zasobu.

Konfigurowanie aplikacji pod kątem tożsamości zarządzanej

Proces konfigurowania zdalnego zapisu rozwiązania Prometheus dla aplikacji przy użyciu uwierzytelniania tożsamości zarządzanej obejmuje wykonanie następujących zadań:

  1. Pobierz nazwę grupy zasobów węzła usługi AKS.
  2. Pobierz identyfikator klienta tożsamości zarządzanej przypisanej przez użytkownika.
  3. Przypisz rolę Wydawca metryk monitorowania w regule zbierania danych obszaru roboczego do tożsamości zarządzanej.
  4. Nadaj klastrowi usługi AKS dostęp do tożsamości zarządzanej.
  5. Wdróż kontener przyczepki, aby skonfigurować zdalny zapis.

Zadania są opisane w poniższych sekcjach.

Pobieranie nazwy grupy zasobów węzła usługi AKS

Grupa zasobów węzła klastra usługi AKS zawiera zasoby używane w innych krokach tego procesu. Ta grupa zasobów ma nazwę MC_<AKS-RESOURCE-GROUP>_<AKS-CLUSTER-NAME>_<REGION>. Nazwę grupy zasobów można znaleźć za pomocą menu Grupy zasobów w witrynie Azure Portal.

Zrzut ekranu przedstawiający listę grup zasobów.

Pobieranie identyfikatora klienta tożsamości zarządzanej przypisanej przez użytkownika

Musisz uzyskać identyfikator klienta tożsamości, której chcesz użyć. Skopiuj identyfikator klienta, aby użyć go w dalszej części procesu.

Zamiast tworzyć własny identyfikator klienta, możesz użyć jednej z tożsamości utworzonych przez usługę AKS. Aby dowiedzieć się więcej o tożsamościach, zobacz Używanie tożsamości zarządzanej w usłudze Azure Kubernetes Service.

W tym artykule jest używana tożsamość kubelet. Nazwa tej tożsamości to <AKS-CLUSTER-NAME>-agentpool, i znajduje się w grupie zasobów węzła klastra usługi AKS.

Zrzut ekranu przedstawiający listę zasobów znajdujących się w grupie zasobów węzła.

Wybierz tożsamość zarządzaną <AKS-CLUSTER-NAME>-agentpool . Na stronie Przegląd skopiuj wartość identyfikatora klienta. Aby uzyskać więcej informacji, zobacz Zarządzanie tożsamościami zarządzanymi przypisanymi przez użytkownika.

Zrzut ekranu przedstawiający identyfikator klienta na stronie przeglądu tożsamości zarządzanej.

Przypisywanie roli Wydawca metryk monitorowania w regule zbierania danych obszaru roboczego do tożsamości zarządzanej

Tożsamość zarządzana musi mieć przypisaną rolę Wydawca metryk monitorowania w regule zbierania danych skojarzonej z obszarem roboczym usługi Azure Monitor.

  1. W menu zasobów dla obszaru roboczego usługi Azure Monitor wybierz pozycję Przegląd. W obszarze Reguła zbierania danych wybierz link.

    Zrzut ekranu przedstawiający regułę zbierania danych skojarzona z obszarem roboczym usługi Azure Monitor.

  2. W menu zasobów dla reguły zbierania danych wybierz pozycję Kontrola dostępu (Zarządzanie dostępem i tożsamościami).

  3. Wybierz pozycję Dodaj, a następnie wybierz pozycję Dodaj przypisanie roli.

    Zrzut ekranu przedstawiający dodawanie przypisania roli na stronach kontroli dostępu.

  4. Wybierz rolę Wydawca metryk monitorowania, a następnie wybierz przycisk Dalej.

    Zrzut ekranu przedstawiający listę przypisań ról.

  5. Wybierz pozycję Tożsamość zarządzana, a następnie wybierz pozycję Wybierz członków. Wybierz subskrypcję zawierającą tożsamość przypisaną przez użytkownika, a następnie wybierz pozycję Tożsamość zarządzana przypisana przez użytkownika. Wybierz tożsamość przypisaną przez użytkownika, której chcesz użyć, a następnie wybierz pozycję Wybierz.

    Zrzut ekranu przedstawiający wybieranie tożsamości zarządzanej przypisanej przez użytkownika.

  6. Aby ukończyć przypisanie roli, wybierz pozycję Przejrzyj i przypisz.

Nadawanie klastrowi usługi AKS dostępu do tożsamości zarządzanej

Ten krok nie jest wymagany, jeśli używasz tożsamości usługi AKS. Tożsamość usługi AKS ma już dostęp do klastra.

Ważne

Aby wykonać kroki opisane w tej sekcji, musisz mieć uprawnienia właściciela lub administratora dostępu użytkowników dla klastra.

  1. Zidentyfikuj zestawy skalowania maszyn wirtualnych w grupie zasobów węzła dla klastra usługi AKS.

    Zrzut ekranu przedstawiający zestawy skalowania maszyn wirtualnych w grupie zasobów węzła.

  2. Dla każdego zestawu skalowania maszyn wirtualnych uruchom następujące polecenie w interfejsie wiersza polecenia platformy Azure:

    az vmss identity assign -g <AKS-NODE-RESOURCE-GROUP> -n <AKS-VMSS-NAME> --identities <USER-ASSIGNED-IDENTITY-RESOURCE-ID>
    

Wdrażanie kontenera przyczepki w celu skonfigurowania zdalnego zapisu

  1. Skopiuj następujący kod YAML i zapisz go w pliku. Kod YAML używa portu 8081 jako portu nasłuchiwania. Jeśli używasz innego portu, zmodyfikuj port w języku YAML.

    prometheus:
      prometheusSpec:
        externalLabels:
              cluster: <AKS-CLUSTER-NAME>
    
        ## https://prometheus.io/docs/prometheus/latest/configuration/configuration/#remote_write    
        remoteWrite:
        - url: 'http://localhost:8081/api/v1/write'
      ## Azure Managed Prometheus currently exports some default mixins in Grafana. 
      ## These mixins are compatible with Azure Monitor agent on your Azure Kubernetes Service cluster. 
      ## However, these mixins aren't compatible with Prometheus metrics scraped by the Kube Prometheus stack. 
      ## In order to make these mixins compatible, uncomment remote write relabel configuration below:
    
      ## writeRelabelConfigs:
      ##   - sourceLabels: [metrics_path]
      ##     regex: /metrics/cadvisor
      ##     targetLabel: job
      ##     replacement: cadvisor
      ##     action: replace
      ##   - sourceLabels: [job]
      ##     regex: 'node-exporter'
      ##     targetLabel: job
      ##     replacement: node
      ##     action: replace
        containers:
        - name: prom-remotewrite
          image: <CONTAINER-IMAGE-VERSION>
          imagePullPolicy: Always
          ports:
            - name: rw-port
              containerPort: 8081
          livenessProbe:
            httpGet:
              path: /health
              port: rw-port
            initialDelaySeconds: 10
            timeoutSeconds: 10
          readinessProbe:
            httpGet:
              path: /ready
              port: rw-port
            initialDelaySeconds: 10
            timeoutSeconds: 10
          env:
          - name: INGESTION_URL
            value: <INGESTION_URL>
          - name: LISTENING_PORT
            value: '8081'
          - name: IDENTITY_TYPE
            value: userAssigned
          - name: AZURE_CLIENT_ID
            value: <MANAGED-IDENTITY-CLIENT-ID>
          # Optional parameter
          - name: CLUSTER
            value: <CLUSTER-NAME>
    
  2. Zastąp następujące wartości w pliku YAML:

    Wartość Opis
    <AKS-CLUSTER-NAME> Nazwa klastra usługi AKS.
    <CONTAINER-IMAGE-VERSION> mcr.microsoft.com/azuremonitor/prometheus/promdev/prom-remotewrite:prom-remotewrite-20230906.1
    Zdalna wersja obrazu kontenera zapisu.
    <INGESTION-URL> Wartość punktu końcowegopozyskiwania metryk na stronie Przegląd obszaru roboczego usługi Azure Monitor.
    <MANAGED-IDENTITY-CLIENT-ID> Wartość identyfikatora klienta na stronie Przegląd tożsamości zarządzanej.
    <CLUSTER-NAME> Nazwa klastra, na którym działa rozwiązanie Prometheus.

    Ważne

    W przypadku chmury Azure Government dodaj następujące zmienne środowiskowe w env sekcji pliku YAML:

    - name: INGESTION_AAD_AUDIENCE value: https://monitor.azure.us/

  3. Otwórz usługę Azure Cloud Shell i przekaż plik YAML.

  4. Użyj narzędzia Helm, aby zastosować plik YAML i zaktualizować konfigurację rozwiązania Prometheus:

    # set context to your cluster 
    az aks get-credentials -g <aks-rg-name> -n <aks-cluster-name> 
    
    # use Helm to update your remote write config 
    helm upgrade -f <YAML-FILENAME>.yml prometheus prometheus-community/kube-prometheus-stack --namespace <namespace where Prometheus pod resides> 
    

Weryfikacja i rozwiązywanie problemów

Aby uzyskać informacje dotyczące weryfikacji i rozwiązywania problemów, zobacz Rozwiązywanie problemów z zdalnym zapisem i usługą zarządzaną Azure Monitor dla zdalnego zapisu w usłudze Prometheus.

Następne kroki