Skicka Prometheus-data till Azure Monitor med hjälp av Microsoft Entra-autentisering
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 AKS-kluster (Azure Kubernetes Service) eller Azure Arc-aktiverade Kubernetes-kluster med hjälp av Microsoft Entra-autentisering och en sidobilscontainer som Azure Monitor tillhandahåller. Observera att du också kan konfigurera fjärrskrivning direkt i Prometheus-konfigurationen för samma sak.
Kommentar
Vi rekommenderar att du konfigurerar Prometheus som körs direkt i kubernetes-klustret för fjärrskrivning till Azure Monitor-arbetsytan. Mer information finns i Skicka Prometheus-data till Azure Monitor med Hjälp av Microsoft Entra-ID-autentisering . Stegen nedan använder azure monitor-sidobilcontainern.
Klusterkonfigurationer
Den här artikeln gäller för följande klusterkonfigurationer:
- Azure Kubernetes Service-kluster
- Azure Arc-aktiverat Kubernetes-kluster
- Kubernetes-kluster som körs i ett annat moln eller lokalt
Kommentar
För ett AKS-kluster eller ett Azure Arc-aktiverat Kubernetes-kluster rekommenderar vi att du använder hanterad identitetsautentisering. Mer information finns i Azure Monitor-hanterad tjänst för Prometheus fjärrskrivning för hanterad identitet.
Förutsättningar
Versioner som stöds
- Prometheus-versioner som är större än v2.48 krävs för Microsoft Entra ID-programautentisering.
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 Microsoft Entra-ID
Processen för att konfigurera Prometheus fjärrskrivning för ett program med hjälp av Microsoft Entra-autentisering innebär att du utför följande uppgifter:
- Registrera ett program med Microsoft Entra ID.
- Hämta klient-ID för Microsoft Entra-programmet.
- Tilldela utgivarrollen Övervakningsmått för arbetsytans datainsamlingsregel till programmet.
- Skapa ett Azure-nyckelvalv och generera ett certifikat.
- Lägg till ett certifikat i Microsoft Entra-programmet.
- Lägg till en CSI-drivrutin och lagring för klustret.
- Distribuera en sidovagnscontainer för att konfigurera fjärrskrivning.
Uppgifterna beskrivs i följande avsnitt.
Registrera ett program med Microsoft Entra-ID
Slutför stegen för att registrera ett program med Microsoft Entra-ID och skapa ett huvudnamn för tjänsten.
Hämta klient-ID:t för Microsoft Entra-programmet
- I Azure Portal går du till Microsoft Entra-ID-menyn och väljer Appregistreringar.
- I listan över program kopierar du värdet för program-ID (klient)-ID för det registrerade programmet.
Tilldela utgivarrollen Övervakningsmått för arbetsytans datainsamlingsregel till programmet
Programmet måste tilldelas rollen Monitoring Metrics Publisher för datainsamlingsregeln som är associerad med din Azure Monitor-arbetsyta.
På resursmenyn för din Azure Monitor-arbetsyta väljer du Översikt. För Datainsamlingsregel väljer du länken.
På resursmenyn för datainsamlingsregeln väljer du Åtkomstkontroll (IAM).
Välj Lägg till och sedan Lägg till rolltilldelning.
Välj utgivarrollen Övervakningsmått och välj sedan Nästa.
Välj Användare, grupp eller tjänstens huvudnamn och välj sedan Välj medlemmar. Välj det program som du skapade och välj sedan Välj.
Slutför rolltilldelningen genom att välja Granska + tilldela.
Skapa ett Azure-nyckelvalv och generera ett certifikat
- Om du inte redan har ett Azure-nyckelvalv skapar du ett valv.
- Skapa ett certifikat med hjälp av vägledningen i Lägg till ett certifikat i Key Vault.
- Ladda ned certifikatet i CER-format med hjälp av vägledningen i Exportera ett certifikat från Key Vault.
Lägga till ett certifikat i Microsoft Entra-programmet
På resursmenyn för ditt Microsoft Entra-program väljer du Certifikat och hemligheter.
På fliken Certifikat väljer du Ladda upp certifikat och väljer det certifikat som du laddade ned.
Varning
Certifikat har ett förfallodatum. Det är användarens ansvar att hålla certifikaten giltiga.
Lägga till en CSI-drivrutin och lagring för klustret
Kommentar
Azure Key Vault CSI-drivrutinskonfiguration är bara ett av sätten att få ett certifikat monterat på en podd. Fjärrskrivningscontainern behöver en lokal sökväg till ett certifikat i podden endast för <AZURE_CLIENT_CERTIFICATE_PATH>
värdet i steget Distribuera en sidovagnscontainer för att konfigurera fjärrskrivning.
Det här steget krävs bara om du inte aktiverade Azure Key Vault Provider for Secrets Store CSI-drivrutinen när du skapade klustret.
Om du vill aktivera Azure Key Vault-providern för Secrets Store CSI-drivrutinen för klustret kör du följande Azure CLI-kommando:
az aks enable-addons --addons azure-keyvault-secrets-provider --name <aks-cluster-name> --resource-group <resource-group-name>
Kör följande kommandon för att ge identiteten åtkomst till nyckelvalvet:
# 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>
Skapa
SecretProviderClass
genom att spara följande YAML i en fil med namnet secretproviderclass.yml. Ersätt värdena föruserAssignedIdentityID
,keyvaultName
,tenantId
och de objekt som ska hämtas från nyckelvalvet. Information om vilka värden som ska användas finns i Ange en identitet för åtkomst till Azure Key Vault-providern för Secrets Store CSI-drivrutinen.# 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
Använd
SecretProviderClass
genom att köra följande kommando i klustret:kubectl apply -f secretproviderclass.yml
Distribuera en sidovagnscontainer för att konfigurera fjärrskrivning
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 det värdet i 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>'
Ersätt följande värden i YAML-filen:
Värde beskrivning <CLUSTER-NAME>
Namnet på ditt AKS-kluster. <CONTAINER-IMAGE-VERSION>
mcr.microsoft.com/azuremonitor/containerinsights/ciprod/prometheus-remote-write/images:prom-remotewrite-20250214.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. <APP-REGISTRATION -CLIENT-ID>
Programmets klient-ID. <TENANT-ID>
Klientorganisations-ID för Microsoft Entra-programmet. <CERT-NAME>
Namnet på certifikatet. <CLUSTER-NAME>
Namnet på klustret som Prometheus körs på. Öppna Azure Cloud Shell och ladda upp YAML-filen.
Använd Helm för att tillämpa YAML-filen och uppdatera Prometheus-konfigurationen:
# 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>
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
- Samla in Prometheus-mått från ett AKS-kluster
- Läs mer om azure monitor-hanterad tjänst för Prometheus
- Fjärrskrivning i Azure Monitor-hanterad tjänst för Prometheus
- Skicka Prometheus-data till Azure Monitor med hjälp av hanterad identitetsautentisering
- Skicka Prometheus-data till Azure Monitor med hjälp av Microsoft Entra-arbetsbelastnings-ID (förhandsversion)
- Skicka Prometheus-data till Azure Monitor med hjälp av Microsoft Entra-poddhanterad identitetsautentisering (förhandsversion)