Dela via


Ansluta självhanterad Prometheus till Azure Monitor-hanterad tjänst för Prometheus

Azure Monitor-hanterad tjänst för Prometheus är avsedd att ersätta självhanterade Prometheus så att du inte behöver hantera en Prometheus-server i dina Kubernetes-kluster. Det kan dock finnas scenarier där du vill fortsätta att använda självhanterad Prometheus i dina Kubernetes-kluster samtidigt som du skickar data till Managed Prometheus för långsiktig datakvarhållning och för att skapa en centraliserad vy över dina kluster. Detta kan vara en tillfällig lösning när du migrerar till Managed Prometheus eller en långsiktig lösning om du har specifika krav för självhanterad Prometheus.

Architecture

Remote_write är en funktion i Prometheus som gör att du kan skicka mått från en lokal Prometheus-instans till fjärrlagring eller till en annan Prometheus-instans. Använd den här funktionen för att skicka mått från självhanterad Prometheus som körs i dina Kubernetes-kluster eller virtuella datorer till en Azure Monitor-arbetsyta som används av Managed Prometheus.

Följande diagram illustrerar den här konfigurationen. En datainsamlingsregel (DCR) i Azure Monitor tillhandahåller en slutpunkt för den självhanterade Prometheus-instansen för att skicka mått och definierar den Azure Monitor-arbetsyta där data skickas.

Diagram som visar användning av fjärrskrivning för att skicka mått från lokal Prometheus till Managed Prometheus.

Autentiseringstyper

Konfigurationskraven för fjärrskrivning beror på vilken autentiseringstyp som används för att ansluta till Azure Monitor-arbetsytan. I följande tabell beskrivs de autentiseringstyper som stöds. Informationen för varje konfiguration beskrivs i följande avsnitt.

Typ Kluster som stöds
Systemtilldelad hanterad identitet Azure Kubernetes-tjänsten (AKS)
Virtuell Azure-dator/VMSS
Användartilldelad hanterad identitet Azure Kubernetes-tjänsten (AKS)
Arc-aktiverade Kubernetes
Virtuell Azure-dator/VMSS
Microsoft Entra ID Azure Kubernetes-tjänsten (AKS)
Kubernetes-kluster med Arc-stöd
Kluster som körs i ett annat moln eller lokalt
Virtuell Azure-dator/VMSS
Arc-aktiverade servrar
Virtuell dator som körs i ett annat moln eller lokalt

Anmärkning

Du kan också använda autentisering med Microsoft Entra ID-arbetsbelastningsidentitet, men du måste använda en sidecar-behållare för att tillhandahålla en abstraktion för inmatning av Prometheus remote write-mätdata och för att hjälpa till med autentisering av paket. Se Skicka Prometheus-data till Azure Monitor med Microsoft Entra arbetsbelastnings-ID-autentisering för konfiguration. |

Azure Monitor-arbetsyta

Azure Monitor-arbetsytan måste skapas innan du kan konfigurera fjärrskrivning. Detta aktiverar automatiskt Managed Prometheus. Om du inte redan har en kan du läsa Hantera en Azure Monitor-arbetsyta.

Skapa identitet för autentisering

Innan du kan konfigurera fjärrskrivning måste du skapa den identitet som du ska använda för att autentisera till Azure Monitor-arbetsytan. I följande avsnitt beskrivs hur du skapar varje typ av identitet om du inte återanvänder en befintlig.

Du skapar inte direkt en systemtilldelad hanterad identitet utan aktiverar den i stället på en virtuell dator eller azur-skalningsuppsättning. För en virtuell Azure-dator kan du aktivera identiteten när du skapar den virtuella datorn eller aktivera den senare från dess identitetssida i Azure-portalen. För en VMSS måste du aktivera den när du har skapat den. De olika alternativen för att aktivera systemhanterad identitet finns i Konfigurera hanterade identiteter på virtuella Azure-datorer (VM) och Konfigurera hanterade identiteter för Azure-resurser på en VM-skalningsuppsättning.

Skärmbild som visar skärmen för att aktivera systemtilldelad hanterad identitet för en virtuell Azure-dator.

För ett AKS-kluster måste den hanterade identiteten tilldelas virtuella maskinskalsuppsättningar för klustret. AKS skapar en resursgrupp som innehåller de virtuella maskinernas skalningsuppsättningar. Öppna den här resursgruppen från sidan Egenskaper på klustrets meny i Azure-portalen. Klicka på Infrastrukturresursgrupp för att visa en lista över resurserna i den här resursgruppen. Du måste aktivera systemhanterad identitet för varje VM-skalningsuppsättning i resursgruppen.

Skärmbild som visar infrastrukturresursgruppen för ett AKS-kluster.

Tilldela roller

När den identitet som du ska använda har skapats måste den ges åtkomst till den datainsamlingsregel (DCR) som är associerad med Azure Monitor-arbetsytan som tar emot fjärrskrivningsdata. Denna DCR skapas automatiskt när du skapar arbetsytan. Du anger den här identiteten i fjärrskrivningskonfigurationen för klustret eller den virtuella datorn.

  1. I översiktsfönstret för Azure Monitor-arbetsytan väljer du länken Datainsamlingsregel. Då öppnas den datainsamlingsregel (DCR) som är associerad med arbetsytan.

    Skärmbild som visar DCR-länken för en Azure Monitor-arbetsyta.

  2. På sidan för datainsamlingsregeln väljer du Åtkomstkontroll (IAM). Välj Lägg till och sedan Lägg till rolltilldelning.

    Skärmbild som visar sidan Åtkomstkontroll för en DCR.

  3. Välj rollen Publicerare av övervakningsmått och välj sedan Nästa.

    Skärmbild som visar hur du lägger till en rolltilldelning i en DCR.

  4. Välj den identitet som ska tilldelas rollen.

    1. För systemtilldelad hanterad identitet väljer du Hanterad identitet och sedan Välj medlemmar. I listrutan Hanterad identitet väljer du vm/VMSS eller var och en av VMSS i AKS-klustret.

    Skärmbild som visar val av systemtilldelade hanterade identitetsmedlemmar.

    1. För användartilldelad hanterad identitet väljer du avsnittet Användartilldelad hanterad identitet . Välj den identitet som du skapade.

    Skärmbild som visar val av medlemmar i hanterade identiteter.

    1. För Entra-ID väljer du Användare, grupp eller tjänstens huvudnamn och sedan Välj medlemmar. Välj det program som du skapade och välj sedan Välj.

    Skärmbild som visar val av Medlemmar i Entra-ID.

  5. Välj Välj för att bekräfta ditt val och sedan Granska och tilldela för att slutföra rolltilldelningen.


Konfigurera fjärrskrivning i konfigurationsfilen

Det sista steget är att lägga till fjärrskrivning i konfigurationsfilen för din självhanterade Prometheus-server. Förutom information om den identitet som du skapade behöver du även slutpunkten för måttinmatning för Azure Monitor-arbetsytan. Hämta det här värdet från sidan Översikt för din Azure Monitor-arbetsyta i Azure-portalen.

Skärmbild som visar slutpunkten för måttinmatning för en Azure Monitor-arbetsyta.

Avsnittet remote-write i Prometheus-konfigurationsfilen ser ut ungefär som i följande exempel, beroende på vilken autentiseringstyp du använder.

Hanterad identitet

remote_write:   
  - url: "<metrics ingestion endpoint for your Azure Monitor workspace>"
    azuread:
      cloud: 'AzurePublic'  # Options are 'AzurePublic', 'AzureChina', or 'AzureGovernment'.
      managed_identity:  
        client_id: "<client-id of the managed identity>"

Entra-ID

remote_write:   
  - url: "<metrics ingestion endpoint for your Azure Monitor workspace>"
    azuread:
      cloud: 'AzurePublic'  # Options are 'AzurePublic', 'AzureChina', or 'AzureGovernment'.
      oauth:  
        client_id: "<client-id from the Entra app>"
        client_secret: "<client secret from the Entra app>"
        tenant_id: "<Azure subscription tenant Id>"

Tillämpa konfigurationsfiluppdateringar

Virtuell dator

För en virtuell dator blir konfigurationsfilen promtheus.yml om du inte anger en annan som används prometheus --config.file <path-to-config-file> när du startar Prometheus-servern.

Kubernetes-kluster

För ett Kubernetes-kluster lagras konfigurationsfilen vanligtvis i en ConfigMap. Följande är ett exempel på en ConfigMap som innehåller en fjärrskrivningskonfiguration med hanterad identitet för självhanterad Prometheus som körs i ett Kubernetes-kluster.

  GNU nano 6.4
apiVersion: v1
kind: ConfigMap
metadata:
  name: prometheus-server-conf # must match what your pod mounts
  namespace: monitoring  # adjust to your namespace
data:
  prometheus.yml: |-
   global:
     scrape_interval: 15s
     evaluation_interval: 15s
     external_labels:
       cluster: "aks11"

   scrape_configs:
     - job_name: "prometheus"
       static_configs:
         - targets: ["localhost:9090"]

   remote_write:
     - url: "https://aks-amw-0mi2.eastus-1.metrics.ingest.monitor.azure.com/dataCollectionRules/dcr-00000000000000000000000000000000/streams/Microsoft-PrometheusMetrics/api/v1/write?api-version=2023-04-24"
       azuread:
         cloud: 'AzurePublic'
         managed_identity:
           client_id: "00001111-aaaa-2222-bbbb-3333cccc4444"

Använd följande kommando för att tillämpa konfigurationsfiluppdateringarna.

kubectl apply -f <configmap-file-name>.yaml

Starta om Prometheus för att hämta den nya konfigurationen. Om du använder en distribution kan du starta om poddarna genom att köra följande kommando.

kubectl -n monitoring rollout restart deploy <prometheus-deployment-name>

Versionsinformation

Detaljerade viktig information om bilbilden på fjärrskrivningssidan finns i viktig information om fjärrskrivning.

Felsökning

HTTP 403-fel i Prometheus-loggen

Det tar cirka 30 minuter innan tilldelningen av rollen börjar gälla. Under den här tiden kan du se ett HTTP 403-fel i Prometheus-loggen. Kontrollera att du har konfigurerat den hanterade identiteten eller Microsoft Entra-ID-programmet korrekt med rollen Monitoring Metrics Publisher på arbetsytans DCR. Om konfigurationen är korrekt väntar du 30 minuter innan rolltilldelningen börjar gälla.

Inga Kubernetes-data samlas in

Om data inte samlas in i Managed Prometheus kör du följande kommando för att hitta fel i fjärrskrivningscontainern.

kubectl --namespace <Namespace> describe pod <Prometheus-Pod-Name>

Containern startas om upprepade gånger

En container som startas om regelbundet beror troligen på felkonfiguration av containern. Kör följande kommando för att visa konfigurationsvärdena som angetts för containern. Kontrollera särskilt AZURE_CLIENT_ID konfigurationsvärdena och IDENTITY_TYPE.

kubectl get pod <Prometheus-Pod-Name> -o json | jq -c  '.spec.containers[] | select( .name | contains("<Azure-Monitor-Side-Car-Container-Name>"))'

Utdata från det här kommandot har följande format:

{"env":[{"name":"INGESTION_URL","value":"https://my-azure-monitor-workspace.eastus2-1.metrics.ingest.monitor.azure.com/dataCollectionRules/dcr-00000000000000000/streams/Microsoft-PrometheusMetrics/api/v1/write?api-version=2021-11-01-preview"},{"name":"LISTENING_PORT","value":"8081"},{"name":"IDENTITY_TYPE","value":"userAssigned"},{"name":"AZURE_CLIENT_ID","value":"00000000-0000-0000-0000-00000000000"}],"image":"mcr.microsoft.com/azuremonitor/prometheus/promdev/prom-remotewrite:prom-remotewrite-20221012.2","imagePullPolicy":"Always","name":"prom-remotewrite","ports":[{"containerPort":8081,"name":"rw-port","protocol":"TCP"}],"resources":{},"terminationMessagePath":"/dev/termination-log","terminationMessagePolicy":"File","volumeMounts":[{"mountPath":"/var/run/secrets/kubernetes.io/serviceaccount","name":"kube-api-access-vbr9d","readOnly":true}]}

Data som tappats bort i högvolymmiljöer

Datainsamlingsregeln (DCR) och datainsamlingsslutpunkten (DCE) för Azure Monitor-arbetsytan omfattas av datainmatningsgränser som anges i Azure Monitor-tjänstgränser. Du omfattas mest av dessa gränser när du konfigurerar fjärrskrivning för flera kluster som skickar data till samma slutpunkt.

Överväg fjärrskrivningsjustering för att justera konfigurationsinställningarna för bättre prestanda. Om du fortfarande ser att data försvinner, kan du överväga att skapa ytterligare datainsamlingsregler och datainsamlingsändpunkter för att distribuera inmatningsbelastningen över flera slutpunkter. Den här metoden hjälper till att optimera prestanda och säkerställa effektiv datahantering. Se Instruktioner för hur du skapar en anpassad datainsamlingsslutpunkt (DCE) och en anpassad datainsamlingsregel (DCR) för en befintlig Azure Monitor-arbetsyta (AMW) för att mata in Prometheus-mått.

Nästa steg