Skicka Prometheus-data till Azure Monitor med hjälp av hanterad identitetsautentisering

Den här artikeln beskriver hur du konfigurerar fjärrskrivning för att skicka data från en självhanterad Prometheus-server som körs i ditt Azure Kubernetes Service-kluster (AKS) eller Azure Arc-aktiverade Kubernetes-kluster med hjälp av hanterad identitetsautentisering. Du kan antingen använda en befintlig identitet som skapas av AKS eller skapa en egen. Båda alternativen beskrivs här.

Klusterkonfigurationer

Den här artikeln gäller för följande klusterkonfigurationer:

  • Azure Kubernetes Service-kluster
  • Azure Arc-aktiverat Kubernetes-kluster

Kommentar

Information om hur du konfigurerar fjärrskrivning för ett Kubernetes-kluster som körs i ett annat moln eller lokalt finns i Skicka Prometheus-data till Azure Monitor med hjälp av Microsoft Entra-autentisering.

Förutsättningar

Versioner som stöds

Prometheus-versioner som är större än v2.45 krävs för hanterad identitetsautentisering.

Azure Monitor-arbetsyta

Den här artikeln beskriver hur du skickar Prometheus-mått till en Azure Monitor-arbetsyta. Information om hur du skapar en Azure Monitor-arbetsyta finns i Hantera en Azure Monitor-arbetsyta.

Behörigheter

Administratörsbehörigheter för klustret eller resursen krävs för att slutföra stegen i den här artikeln.

Konfigurera ett program för hanterad identitet

Processen för att konfigurera Prometheus fjärrskrivning för ett program med hjälp av hanterad identitetsautentisering innebär att du utför följande uppgifter:

  1. Hämta namnet på resursgruppen för AKS-noden.
  2. Hämta klient-ID för den användartilldelade hanterade identiteten.
  3. Tilldela rollen Monitoring Metrics Publisher på arbetsytans datainsamlingsregel till den hanterade identiteten.
  4. Ge AKS-klustret åtkomst till den hanterade identiteten.
  5. Distribuera en sidovagnscontainer för att konfigurera fjärrskrivning.

Uppgifterna beskrivs i följande avsnitt.

Hämta namnet på resursgruppen för AKS-noden

Nodresursgruppen i AKS-klustret innehåller resurser som du använder i andra steg i den här processen. Den här resursgruppen har namnet MC_<AKS-RESOURCE-GROUP>_<AKS-CLUSTER-NAME>_<REGION>. Du hittar resursgruppens namn med hjälp av menyn Resursgrupper i Azure-portalen.

Skärmbild som visar en lista över resursgrupper.

Hämta klient-ID för den användartilldelade hanterade identiteten

Du måste hämta klient-ID:t för den identitet som du ska använda. Kopiera klient-ID:t som ska användas senare i processen.

I stället för att skapa ett eget klient-ID kan du använda en av de identiteter som skapas av AKS. Mer information om identiteterna finns i Använda en hanterad identitet i Azure Kubernetes Service.

Den här artikeln använder kubelet-identiteten. Namnet på den här identiteten är <AKS-CLUSTER-NAME>-agentpool, och det finns i nodresursgruppen i AKS-klustret.

Skärmbild som visar en lista över resurser som finns i nodresursgruppen.

Välj den hanterade identiteten <AKS-CLUSTER-NAME>-agentpool . På sidan Översikt kopierar du värdet för klient-ID. Mer information finns i Hantera användartilldelade hanterade identiteter.

Skärmbild som visar ett klient-ID på en översiktssida för en hanterad identitet.

Tilldela rollen Monitoring Metrics Publisher på datainsamlingsregeln för arbetsytan till den hanterade identiteten

Den hanterade identiteten måste tilldelas rollen Monitoring Metrics Publisher för datainsamlingsregeln som är associerad med din Azure Monitor-arbetsyta.

  1. På resursmenyn för din Azure Monitor-arbetsyta väljer du Översikt. För Datainsamlingsregel väljer du länken.

    Skärmbild som visar datainsamlingsregeln som är associerad med en Azure Monitor-arbetsyta.

  2. På resursmenyn för datainsamlingsregeln väljer du Åtkomstkontroll (IAM).

  3. Välj Lägg till och sedan Lägg till rolltilldelning.

    Skärmbild som visar hur du lägger till en rolltilldelning på åtkomstkontrollsidor.

  4. Välj utgivarrollenÖvervakningsmått och välj sedan Nästa.

    Skärmbild som visar en lista över rolltilldelningar.

  5. Välj Hanterad identitet och välj sedan Välj medlemmar. Välj den prenumeration som innehåller den användartilldelade identiteten och välj sedan Användartilldelad hanterad identitet. Välj den användartilldelade identitet som du vill använda och välj sedan Välj.

    Skärmbild som visar hur du väljer en användartilldelad hanterad identitet.

  6. Slutför rolltilldelningen genom att välja Granska + tilldela.

Ge AKS-klustret åtkomst till den hanterade identiteten

Det här steget krävs inte om du använder en AKS-identitet. En AKS-identitet har redan åtkomst till klustret.

Viktigt!

Om du vill slutföra stegen i det här avsnittet måste du ha behörighet som ägare eller administratör för användaråtkomst för klustret.

  1. Identifiera vm-skalningsuppsättningarna i nodresursgruppen för ditt AKS-kluster.

    Skärmbild som visar vm-skalningsuppsättningar i nodresursgruppen.

  2. Kör följande kommando i Azure CLI för varje VM-skalningsuppsättning:

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

Distribuera en sidovagnscontainer för att konfigurera fjärrskrivning

  1. Kopiera följande YAML och spara den i en fil. YAML använder port 8081 som lyssnarport. Om du använder en annan port ändrar du porten i 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. Ersätt följande värden i YAML:

    Värde beskrivning
    <AKS-CLUSTER-NAME> Namnet på ditt AKS-kluster.
    <CONTAINER-IMAGE-VERSION> mcr.microsoft.com/azuremonitor/prometheus/promdev/prom-remotewrite:prom-remotewrite-20230906.1
    Containeravbildningsversionen för fjärrskrivning.
    <INGESTION-URL> Värdet för slutpunkten för måttinmatning från sidan Översikt för Azure Monitor-arbetsytan.
    <MANAGED-IDENTITY-CLIENT-ID> Värdet för klient-ID från sidan Översikt för den hanterade identiteten.
    <CLUSTER-NAME> Namnet på klustret som Prometheus körs på.

    Viktigt!

    För Azure Government-molnet lägger du till följande miljövariabler i env avsnittet i YAML-filen:

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

  3. Öppna Azure Cloud Shell och ladda upp YAML-filen.

  4. Använd Helm för att tillämpa YAML-filen och uppdatera Prometheus-konfigurationen:

    # 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> 
    

Verifiering och felsökning

Information om verifiering och felsökning finns i Felsöka fjärrskrivning och Azure Monitor-hanterad tjänst för Prometheus fjärrskrivning.

Nästa steg