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:
- Een toepassing registreren bij Microsoft Entra ID.
- Haal de client-id van de Microsoft Entra-toepassing op.
- Wijs de rol Monitoring Metrics Publisher toe aan de regel voor het verzamelen van werkruimtegegevens aan de toepassing.
- Maak een Azure-sleutelkluis en genereer een certificaat.
- Voeg een certificaat toe aan de Microsoft Entra-toepassing.
- Voeg een CSI-stuurprogramma en -opslag toe voor het cluster.
- 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
- Ga in Azure Portal naar het menu Microsoft Entra ID en selecteer App-registraties.
- Kopieer in de lijst met toepassingen de waarde voor de toepassings-id (client) voor de geregistreerde 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.
Selecteer Overzicht in het resourcemenu voor uw Azure Monitor-werkruimte. Selecteer de koppeling voor de regel voor gegevensverzameling.
Selecteer toegangsbeheer (IAM) in het resourcemenu voor de regel voor gegevensverzameling.
Selecteer Toevoegen en selecteer vervolgens Roltoewijzing toevoegen.
Selecteer de rol Monitoring Metrics Publisher en selecteer Vervolgens.
Selecteer Gebruiker, groep of service-principal en kies leden selecteren. Selecteer de toepassing die u hebt gemaakt en kies vervolgens Selecteren.
Als u de roltoewijzing wilt voltooien, selecteert u Beoordelen en toewijzen.
Een Azure-sleutelkluis maken en een certificaat genereren
- Als u nog geen Azure-sleutelkluis hebt, maakt u een kluis.
- Maak een certificaat met behulp van de richtlijnen in Een certificaat toevoegen aan Key Vault.
- 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
Selecteer Certificaten en geheimen in het resourcemenu voor uw Microsoft Entra-toepassing.
Selecteer op het tabblad Certificaten het certificaat uploaden en selecteer het certificaat dat u hebt gedownload.
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.
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>
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>
Maak
SecretProviderClass
door de volgende YAML op te slaan in een bestand met de naam secretproviderclass.yml. Vervang de waarden vooruserAssignedIdentityID
,keyvaultName
entenantId
de 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
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
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>'
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. Open Azure Cloud Shell en upload het YAML-bestand.
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
- Metrische Prometheus-gegevens verzamelen van een AKS-cluster
- Meer informatie over beheerde Azure Monitor-service voor Prometheus
- Extern schrijven in beheerde Azure Monitor-service voor Prometheus
- Prometheus-gegevens verzenden naar Azure Monitor met behulp van verificatie van beheerde identiteiten
- Prometheus-gegevens verzenden naar Azure Monitor met behulp van Microsoft Entra Workload-ID (preview)-verificatie
- Prometheus-gegevens verzenden naar Azure Monitor met behulp van door Microsoft Entra beheerde identiteitsverificatie (preview)