Odeslání dat Prometheus do služby Azure Monitor pomocí ověřování Microsoft Entra
Tento článek popisuje, jak nastavit vzdálené zápisy pro odesílání dat ze serveru Prometheus spravovaného v clusteru Azure Kubernetes Service (AKS) nebo clusteru Kubernetes s podporou Služby Azure Arc pomocí ověřování Microsoft Entra a kontejneru bočního vozu, který poskytuje Azure Monitor. Všimněte si, že pro stejnou konfiguraci můžete také přímo nakonfigurovat vzdálené zápisy v konfiguraci Prometheus.
Poznámka:
Doporučujeme přímo nakonfigurovat Prometheus spuštěný v clusteru Kubernetes na vzdálené zápisy do pracovního prostoru služby Azure Monitor. Další informace najdete v tématu Odesílání dat Prometheus do služby Azure Monitor pomocí ověřování Microsoft Entra Id. Následující postup používá kontejner bočního auta služby Azure Monitor.
Konfigurace clusterů
Tento článek se týká následujících konfigurací clusteru:
- Cluster Azure Kubernetes Service
- Cluster Kubernetes s podporou Azure Arc
- Cluster Kubernetes spuštěný v jiném cloudu nebo v místním prostředí
Poznámka:
Pro cluster AKS nebo cluster Kubernetes s podporou Azure Arc doporučujeme použít ověřování spravované identity. Další informace najdete ve spravované službě Azure Monitoru pro vzdálený zápis pro spravovanou identitu.
Požadavky
Podporované verze
- Pro ověřování aplikace Microsoft Entra ID se vyžadují verze Prometheus větší než verze 2.48.
Pracovní prostor služby Azure Monitor
Tento článek se zabývá odesíláním metrik Prometheus do pracovního prostoru služby Azure Monitor. Pokud chcete vytvořit pracovní prostor Služby Azure Monitor, přečtěte si téma Správa pracovního prostoru služby Azure Monitor.
Oprávnění
K dokončení kroků v tomto článku se vyžadují oprávnění správce clusteru nebo prostředku.
Nastavení aplikace pro Microsoft Entra ID
Proces nastavení vzdáleného zápisu Prometheus pro aplikaci pomocí ověřování Microsoft Entra zahrnuje dokončení následujících úloh:
- Registrace aplikace pomocí Microsoft Entra ID.
- Získejte ID klienta aplikace Microsoft Entra.
- Přiřaďte aplikaci roli Vydavatele metrik monitorování v pravidle shromažďování dat pracovního prostoru.
- Vytvořte trezor klíčů Azure a vygenerujte certifikát.
- Přidejte certifikát do aplikace Microsoft Entra.
- Přidejte ovladač CSI a úložiště pro cluster.
- Nasaďte kontejner sajdkáru pro nastavení vzdáleného zápisu.
Úkoly jsou popsány v následujících částech.
Registrace aplikace pomocí Microsoft Entra ID
Dokončete kroky registrace aplikace s ID Microsoft Entra a vytvořte instanční objekt.
Získání ID klienta aplikace Microsoft Entra
- Na webu Azure Portal přejděte do nabídky Microsoft Entra ID a vyberte Registrace aplikací.
- V seznamu aplikací zkopírujte hodnotu ID aplikace (klienta) registrované aplikace.
Přiřazení role Vydavatele metrik monitorování v pravidle shromažďování dat pracovního prostoru k aplikaci
Aplikace musí mít přiřazenou roli Vydavatele metrik monitorování v pravidle shromažďování dat, které je přidružené k vašemu pracovnímu prostoru služby Azure Monitor.
V nabídce prostředků pro váš pracovní prostor Azure Monitoru vyberte Přehled. V případě pravidla shromažďování dat vyberte odkaz.
V nabídce prostředků pravidla shromažďování dat vyberte Řízení přístupu (IAM).
Vyberte Přidat a pak vyberte Přidat přiřazení role.
Vyberte roli Vydavatel metrik monitorování a pak vyberte Další.
Vyberte Uživatele, skupinu nebo instanční objekt a pak zvolte Vybrat členy. Vyberte aplikaci, kterou jste vytvořili, a pak zvolte Vybrat.
Pokud chcete přiřazení role dokončit, vyberte Zkontrolovat a přiřadit.
Vytvoření trezoru klíčů Azure a vygenerování certifikátu
- Pokud ještě nemáte trezor klíčů Azure, vytvořte trezor.
- Vytvořte certifikát pomocí pokynů v části Přidání certifikátu do služby Key Vault.
- Stáhněte si certifikát ve formátu CER pomocí pokynů v exportu certifikátu ze služby Key Vault.
Přidání certifikátu do aplikace Microsoft Entra
V nabídce prostředků pro vaši aplikaci Microsoft Entra vyberte Certifikáty a tajné kódy.
Na kartě Certifikáty vyberte Nahrát certifikát a vyberte certifikát, který jste stáhli.
Upozorňující
Certifikáty mají datum vypršení platnosti. Je zodpovědností uživatele, aby certifikáty zůstaly platné.
Přidání ovladače CSI a úložiště pro cluster
Poznámka:
Konfigurace ovladače CSI služby Azure Key Vault je jen jedním ze způsobů, jak získat certifikát připojený k podu. Vzdálený kontejner zápisu potřebuje místní cestu k certifikátu v podu pouze pro <AZURE_CLIENT_CERTIFICATE_PATH>
hodnotu v kroku Nasazení kontejneru sajdkáru pro nastavení vzdáleného zápisu.
Tento krok se vyžaduje jenom v případě, že jste při vytváření clusteru nezapnuli zprostředkovatele služby Azure Key Vault pro ovladač CSI úložiště tajných kódů.
Pokud chcete pro váš cluster zapnout zprostředkovatele služby Azure Key Vault pro ovladač CSI úložiště tajných kódů, spusťte následující příkaz Azure CLI:
az aks enable-addons --addons azure-keyvault-secrets-provider --name <aks-cluster-name> --resource-group <resource-group-name>
Pokud chcete identitě udělit přístup k trezoru klíčů, spusťte tyto příkazy:
# 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>
Vytvořte
SecretProviderClass
uložením následujícího YAML do souboru s názvem secretproviderclass.yml. Nahraďte hodnoty prouserAssignedIdentityID
,keyvaultName
tenantId
a objekty, které se mají načíst z trezoru klíčů. Informace o tom, jaké hodnoty použít, najdete v tématu Poskytnutí identity pro přístup k poskytovateli služby Azure Key Vault pro ovladač CSI úložiště tajných kódů.# 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
Použijte
SecretProviderClass
spuštěním následujícího příkazu v clusteru:kubectl apply -f secretproviderclass.yml
Nasazení kontejneru sajdkáru pro nastavení vzdáleného zápisu
Zkopírujte následující YAML a uložte ho do souboru. YAML používá jako naslouchající port port 8081. Pokud používáte jiný port, upravte tuto hodnotu v 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>'
V souboru YAML nahraďte následující hodnoty:
Hodnota Popis <CLUSTER-NAME>
Název clusteru AKS <CONTAINER-IMAGE-VERSION>
mcr.microsoft.com/azuremonitor/containerinsights/ciprod/prometheus-remote-write/images:prom-remotewrite-20240617.1
Verze image vzdáleného zápisu kontejneru pro zápis<INGESTION-URL>
Hodnota koncového bodu příjmu metrik ze stránky Přehled pracovního prostoru služby Azure Monitor. <APP-REGISTRATION -CLIENT-ID>
ID klienta vaší aplikace. <TENANT-ID>
ID tenanta aplikace Microsoft Entra. <CERT-NAME>
Název certifikátu. <CLUSTER-NAME>
Název clusteru, na kterém běží Systém Prometheus. Otevřete Azure Cloud Shell a nahrajte soubor YAML.
Použijte Helm k instalaci souboru YAML a aktualizaci konfigurace Prometheus:
# 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>
Ověření a řešení potíží
Informace o ověřování a řešení potíží najdete v tématu Řešení potíží se vzdáleným zápisem a spravovanou službou Azure Monitor pro vzdálený zápis pro Prometheus.
Další kroky
- Shromažďování metrik Promethea z clusteru AKS
- Další informace o spravované službě Azure Monitor pro Prometheus
- Vzdálený zápis ve spravované službě Azure Monitor pro Prometheus
- Odesílání dat Prometheus do služby Azure Monitor pomocí ověřování spravované identity
- Odesílání dat Prometheus do služby Azure Monitor pomocí ověřování ID úloh Microsoft Entra (Preview)
- Odeslání dat Prometheus do služby Azure Monitor pomocí ověřování spravované podem Microsoft Entra (Preview)