Delen via


Prometheus-gegevens verzenden naar Azure Monitor met behulp van Microsoft Entra-verificatie

In dit artikel wordt beschreven hoe u externe schrijfbewerking instelt om gegevens te verzenden vanaf een zelfbeheerde Prometheus-server die wordt uitgevoerd in uw AKS-cluster (Azure Kubernetes Service) of een Kubernetes-cluster met Azure Arc-functionaliteit met behulp van Microsoft Entra-verificatie en een side carcontainer die Azure Monitor biedt. Houd er rekening mee dat u ook rechtstreeks extern schrijven kunt configureren in de Prometheus-configuratie voor hetzelfde.

Notitie

U wordt aangeraden Prometheus rechtstreeks te configureren die wordt uitgevoerd op uw Kubernetes-cluster om extern te schrijven naar Azure Monitor Workspace. Zie Prometheus-gegevens verzenden naar Azure Monitor met behulp van Microsoft Entra Id-verificatie voor meer informatie. In de onderstaande stappen wordt de container voor auto's van Azure Monitor gebruikt.

Clusterconfiguraties

Dit artikel is van toepassing op de volgende clusterconfiguraties:

  • Azure Kubernetes Service-cluster
  • Kubernetes-cluster met Azure Arc
  • Kubernetes-cluster dat wordt uitgevoerd in een andere cloud of on-premises

Notitie

Voor een AKS-cluster of een Kubernetes-cluster met Azure Arc wordt u aangeraden beheerde identiteitsverificatie te gebruiken. Zie de beheerde Azure Monitor-service voor externe schrijfbewerkingen van Prometheus voor beheerde identiteiten voor meer informatie.

Vereisten

Ondersteunde versies

  • Prometheus-versies die groter zijn dan v2.48 zijn vereist voor verificatie van Microsoft Entra ID-toepassingen.

Azure Monitor-werkruimte

Dit artikel bevat informatie over het verzenden van metrische Prometheus-gegevens naar een Azure Monitor-werkruimte. Zie Een Azure Monitor-werkruimte beheren om een Azure Monitor-werkruimte te maken.

Machtigingen

Beheerdersmachtigingen voor het cluster of de resource zijn vereist om de stappen in dit artikel uit te voeren.

Een toepassing instellen voor Microsoft Entra-id

Het proces voor het instellen van externe schrijfbewerkingen voor Prometheus voor een toepassing met behulp van Microsoft Entra-verificatie omvat het voltooien van de volgende taken:

  1. Een toepassing registreren bij Microsoft Entra ID.
  2. Haal de client-id van de Microsoft Entra-toepassing op.
  3. Wijs de rol Monitoring Metrics Publisher toe aan de regel voor het verzamelen van werkruimtegegevens aan de toepassing.
  4. Maak een Azure-sleutelkluis en genereer een certificaat.
  5. Voeg een certificaat toe aan de Microsoft Entra-toepassing.
  6. Voeg een CSI-stuurprogramma en -opslag toe voor het cluster.
  7. Implementeer een sidecar-container om externe schrijfbewerkingen in te stellen.

De taken worden beschreven in de volgende secties.

Een toepassing registreren bij Microsoft Entra-id

Voer de stappen uit om een toepassing te registreren bij Microsoft Entra ID en een service-principal te maken.

De client-id van de Microsoft Entra-toepassing ophalen

  1. Ga in Azure Portal naar het menu Microsoft Entra ID en selecteer App-registraties.
  2. Kopieer in de lijst met toepassingen de waarde voor de toepassings-id (client) voor de geregistreerde toepassing.

Schermopname van de toepassing of client-id van een Microsoft Entra-toepassing.

De rol Monitoring Metrics Publisher op de regel voor het verzamelen van werkruimtegegevens toewijzen aan de toepassing

Aan de toepassing moet de rol Monitoring Metrics Publisher worden toegewezen voor de regel voor gegevensverzameling die is gekoppeld aan uw Azure Monitor-werkruimte.

  1. Selecteer Overzicht in het resourcemenu voor uw Azure Monitor-werkruimte. Selecteer de koppeling voor de regel voor gegevensverzameling.

    Schermopname van de regel voor gegevensverzameling die wordt gebruikt door de Azure Monitor-werkruimte.

  2. Selecteer toegangsbeheer (IAM) in het resourcemenu voor de regel voor gegevensverzameling.

  3. Selecteer Toevoegen en selecteer vervolgens Roltoewijzing toevoegen.

    Schermopname van het toevoegen van een roltoewijzing op de pagina's voor toegangsbeheer.

  4. Selecteer de rol Monitoring Metrics Publisher en selecteer Vervolgens.

    Schermopname van een lijst met roltoewijzingen.

  5. Selecteer Gebruiker, groep of service-principal en kies leden selecteren. Selecteer de toepassing die u hebt gemaakt en kies vervolgens Selecteren.

    Schermopname van het selecteren van de toepassing.

  6. Als u de roltoewijzing wilt voltooien, selecteert u Beoordelen en toewijzen.

Een Azure-sleutelkluis maken en een certificaat genereren

  1. Als u nog geen Azure-sleutelkluis hebt, maakt u een kluis.
  2. Maak een certificaat met behulp van de richtlijnen in Een certificaat toevoegen aan Key Vault.
  3. Download het certificaat in CER-indeling met behulp van de richtlijnen voor het exporteren van een certificaat uit Key Vault.

Een certificaat toevoegen aan de Microsoft Entra-toepassing

  1. Selecteer Certificaten en geheimen in het resourcemenu voor uw Microsoft Entra-toepassing.

  2. Selecteer op het tabblad Certificaten het certificaat uploaden en selecteer het certificaat dat u hebt gedownload.

    Schermopname van het uploaden van een certificaat voor een Microsoft Entra-toepassing.

Waarschuwing

Certificaten hebben een vervaldatum. Het is de verantwoordelijkheid van de gebruiker om certificaten geldig te houden.

Een CSI-stuurprogramma en -opslag voor het cluster toevoegen

Notitie

De configuratie van het CSI-stuurprogramma van Azure Key Vault is slechts een van de manieren om een certificaat op een pod te koppelen. De externe schrijfcontainer heeft alleen een lokaal pad naar een certificaat in de pod nodig voor de <AZURE_CLIENT_CERTIFICATE_PATH> waarde in de stap Een sidecarcontainer implementeren om externe schrijfbewerkingen in te stellen.

Deze stap is alleen vereist als u Azure Key Vault-provider voor het CSI-stuurprogramma geheimenarchief niet hebt ingeschakeld toen u uw cluster maakte.

  1. Voer de volgende Azure CLI-opdracht uit om Azure Key Vault-provider in te schakelen voor geheimenarchief CSI-stuurprogramma voor uw cluster:

    az aks enable-addons --addons azure-keyvault-secrets-provider --name <aks-cluster-name> --resource-group <resource-group-name>
    
  2. Voer de volgende opdrachten uit om de identiteit toegang te geven tot de sleutelkluis:

    # show client id of the managed identity of the cluster
    az aks show -g <resource-group> -n <cluster-name> --query addonProfiles.azureKeyvaultSecretsProvider.identity.clientId -o tsv
    
    # set policy to access keys in your key vault
    az keyvault set-policy -n <keyvault-name> --key-permissions get --spn <identity-client-id>
    
    # set policy to access secrets in your key vault
    az keyvault set-policy -n <keyvault-name> --secret-permissions get --spn <identity-client-id>
    
    # set policy to access certs in your key vault
    az keyvault set-policy -n <keyvault-name> --certificate-permissions get --spn <identity-client-id>
    
  3. Maak SecretProviderClass door de volgende YAML op te slaan in een bestand met de naam secretproviderclass.yml. Vervang de waarden voor userAssignedIdentityID, keyvaultNameen tenantIdde objecten die u wilt ophalen uit uw sleutelkluis. Zie Een identiteit opgeven voor toegang tot de Azure Key Vault-provider voor geheimenarchief CSI-stuurprogramma voor informatie over welke waarden moeten worden gebruikt.

    # This is a SecretProviderClass example using user-assigned identity to access your key vault
    apiVersion: secrets-store.csi.x-k8s.io/v1
    kind: SecretProviderClass
    metadata:
      name: azure-kvname-user-msi
    spec:
      provider: azure
      parameters:
        usePodIdentity: "false"
        useVMManagedIdentity: "true"          # Set to true for using managed identity
        userAssignedIdentityID: <client-id>   # Set the client ID of the user-assigned managed identity to use
        keyvaultName: <key-vault-name>        # Set to the name of your key vault
        cloudName: ""                         # [OPTIONAL for Azure] if not provided, the Azure environment defaults to AzurePublicCloud
        objects:  |
          array:
            - |
              objectName: <name-of-cert>
              objectType: secret              # object types: secret, key, or cert
              objectFormat: pfx
              objectEncoding: base64
              objectVersion: ""
        tenantId: <tenant-id>                 # The tenant ID of the key vault
    
  4. Pas deze toe SecretProviderClass door de volgende opdracht uit te voeren op uw cluster:

    kubectl apply -f secretproviderclass.yml
    

Een sidecar-container implementeren om externe schrijfbewerkingen in te stellen

  1. Kopieer de volgende YAML en sla deze op in een bestand. De YAML gebruikt poort 8081 als de luisterpoort. Als u een andere poort gebruikt, wijzigt u die waarde in de YAML.

    prometheus:
      prometheusSpec:
        externalLabels:
          cluster: <CLUSTER-NAME>  
    
        ##	Azure Managed Prometheus currently exports some default mixins in Grafana.  
        ##  These mixins are compatible with data scraped by Azure Monitor agent on your 
        ##  Azure Kubernetes Service cluster. These mixins aren't compatible with Prometheus 
        ##  metrics scraped by the Kube Prometheus stack. 
        ##  To make these mixins compatible, uncomment the 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  
        ## https://prometheus.io/docs/prometheus/latest/configuration/configuration/#remote_write
        remoteWrite:
          - url: 'http://localhost:8081/api/v1/write'
        
        # Additional volumes on the output StatefulSet definition.
        # Required only for Microsoft Entra ID based auth
        volumes:
          - name: secrets-store-inline
            csi:
              driver: secrets-store.csi.k8s.io
              readOnly: true
              volumeAttributes:
                secretProviderClass: azure-kvname-user-msi
        containers:
          - name: prom-remotewrite
            image: <CONTAINER-IMAGE-VERSION>
            imagePullPolicy: Always
            # Required only for Microsoft Entra ID based auth
            volumeMounts:
              - name: secrets-store-inline
                mountPath: /mnt/secrets-store
                readOnly: true
            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: aadApplication
              - name: AZURE_CLIENT_ID
                value: '<APP-REGISTRATION-CLIENT-ID>'
              - name: AZURE_TENANT_ID
                value: '<TENANT-ID>'
              - name: AZURE_CLIENT_CERTIFICATE_PATH
                value: /mnt/secrets-store/<CERT-NAME>
              - name: CLUSTER
                value: '<CLUSTER-NAME>'
    
  2. Vervang de volgende waarden in het YAML-bestand:

    Weergegeven als Beschrijving
    <CLUSTER-NAME> De naam van uw AKS-cluster.
    <CONTAINER-IMAGE-VERSION> mcr.microsoft.com/azuremonitor/containerinsights/ciprod/prometheus-remote-write/images:prom-remotewrite-20240617.1
    De versie van de externe schrijfcontainerinstallatiekopieën.
    <INGESTION-URL> De waarde voor het opname-eindpunt voor metrische gegevens op de overzichtspagina voor de Azure Monitor-werkruimte.
    <APP-REGISTRATION -CLIENT-ID> De client-id van uw toepassing.
    <TENANT-ID> De tenant-id van de Microsoft Entra-toepassing.
    <CERT-NAME> De naam van het certificaat.
    <CLUSTER-NAME> De naam van het cluster waarop Prometheus wordt uitgevoerd.
  3. Open Azure Cloud Shell en upload het YAML-bestand.

  4. Gebruik Helm om het YAML-bestand toe te passen en uw Prometheus-configuratie bij te werken:

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

Verificatie en probleemoplossing

Zie Problemen met externe schrijfbewerkingen en beheerde Azure Monitor-service voor externe schrijfbewerkingen voor Prometheus voor informatie over verificatie en probleemoplossing.

Volgende stappen