Wysyłanie danych rozwiązania Prometheus do usługi Azure Monitor przy użyciu uwierzytelniania firmy Microsoft Entra
W tym artykule opisano sposób konfigurowania zdalnego zapisu w celu wysyłania danych z własnego serwera Prometheus działającego w klastrze usługi Azure Kubernetes Service (AKS) lub klastrze Kubernetes z włączoną usługą Azure Arc przy użyciu uwierzytelniania Microsoft Entra i kontenera samochodu bocznego zapewnianego przez usługę Azure Monitor. Należy pamiętać, że można również bezpośrednio skonfigurować zapis zdalny w konfiguracji Prometheus dla tego samego.
Uwaga
Zalecamy bezpośrednie skonfigurowanie rozwiązania Prometheus uruchomionego w klastrze Kubernetes w celu zdalnego zapisu w obszarze roboczym usługi Azure Monitor. Aby dowiedzieć się więcej, zobacz Wysyłanie danych prometheus do usługi Azure Monitor przy użyciu uwierzytelniania identyfikatora Entra firmy Microsoft. W poniższych krokach użyto kontenera samochodu bocznego usługi Azure Monitor.
Konfiguracje klastrów
Ten artykuł dotyczy następujących konfiguracji klastra:
- Klaster usługi Azure Kubernetes Service;
- Klaster Kubernetes z obsługą usługi Azure Arc
- Klaster Kubernetes działający w innej chmurze lub lokalnie
Uwaga
W przypadku klastra usługi AKS lub klastra Kubernetes z włączoną usługą Azure Arc zalecamy użycie uwierzytelniania tożsamości zarządzanej. Aby uzyskać więcej informacji, zobacz Usługa zarządzana usługi Azure Monitor dla zdalnego zapisu w usłudze Prometheus dla tożsamości zarządzanej.
Wymagania wstępne
Obsługiwane wersje
- Wersje Prometheus większe niż wersja 2.48 są wymagane do uwierzytelniania aplikacji Entra ID firmy Microsoft.
Obszar roboczy usługi Azure Monitor
W tym artykule opisano wysyłanie metryk rozwiązania Prometheus do obszaru roboczego usługi Azure Monitor. Aby utworzyć obszar roboczy usługi Azure Monitor, zobacz Zarządzanie obszarem roboczym usługi Azure Monitor.
Uprawnienia
Uprawnienia administratora dla klastra lub zasobu są wymagane do wykonania kroków opisanych w tym artykule.
Konfigurowanie aplikacji dla identyfikatora Entra firmy Microsoft
Proces konfigurowania zdalnego zapisu rozwiązania Prometheus dla aplikacji przy użyciu uwierzytelniania Microsoft Entra obejmuje wykonanie następujących zadań:
- Rejestrowanie aplikacji usługi Tożsamości Microsoft Entra.
- Pobierz identyfikator klienta aplikacji Microsoft Entra.
- Przypisz rolę Wydawca metryk monitorowania w regule zbierania danych obszaru roboczego do aplikacji.
- Utwórz magazyn kluczy platformy Azure i wygeneruj certyfikat.
- Dodaj certyfikat do aplikacji Microsoft Entra.
- Dodaj sterownik CSI i magazyn dla klastra.
- Wdróż kontener przyczepki, aby skonfigurować zdalny zapis.
Zadania są opisane w poniższych sekcjach.
Rejestrowanie aplikacji przy użyciu identyfikatora Entra firmy Microsoft
Wykonaj kroki, aby zarejestrować aplikację przy użyciu identyfikatora Entra firmy Microsoft i utworzyć jednostkę usługi.
Pobieranie identyfikatora klienta aplikacji Microsoft Entra
- W witrynie Azure Portal przejdź do menu Microsoft Entra ID i wybierz pozycję Rejestracje aplikacji.
- Na liście aplikacji skopiuj wartość identyfikatora aplikacji (klienta) dla zarejestrowanej aplikacji.
Przypisywanie roli Wydawca metryk monitorowania w regule zbierania danych obszaru roboczego do aplikacji
Aplikacja musi mieć przypisaną rolę Wydawca metryk monitorowania w regule zbierania danych skojarzonej z obszarem roboczym usługi Azure Monitor.
W menu zasobów dla obszaru roboczego usługi Azure Monitor wybierz pozycję Przegląd. W obszarze Reguła zbierania danych wybierz link.
W menu zasobów dla reguły zbierania danych wybierz pozycję Kontrola dostępu (Zarządzanie dostępem i tożsamościami).
Wybierz pozycję Dodaj, a następnie wybierz pozycję Dodaj przypisanie roli.
Wybierz rolę Wydawca metryk monitorowania, a następnie wybierz przycisk Dalej.
Wybierz pozycję Użytkownik, grupa lub jednostka usługi, a następnie wybierz pozycję Wybierz członków. Wybierz utworzoną aplikację, a następnie wybierz pozycję Wybierz.
Aby ukończyć przypisanie roli, wybierz pozycję Przejrzyj i przypisz.
Tworzenie magazynu kluczy platformy Azure i generowanie certyfikatu
- Jeśli nie masz jeszcze magazynu kluczy platformy Azure, utwórz magazyn.
- Utwórz certyfikat, korzystając ze wskazówek w temacie Dodawanie certyfikatu do usługi Key Vault.
- Pobierz certyfikat w formacie CER, korzystając ze wskazówek w temacie Eksportowanie certyfikatu z usługi Key Vault.
Dodawanie certyfikatu do aplikacji Microsoft Entra
W menu zasobów aplikacji Microsoft Entra wybierz pozycję Certyfikaty i wpisy tajne.
Na karcie Certyfikaty wybierz pozycję Przekaż certyfikat i wybierz pobrany certyfikat.
Ostrzeżenie
Certyfikaty mają datę wygaśnięcia. Jest to odpowiedzialność użytkownika za utrzymywanie ważności certyfikatów.
Dodawanie sterownika CSI i magazynu dla klastra
Uwaga
Konfiguracja sterownika CSI usługi Azure Key Vault jest tylko jednym ze sposobów uzyskania certyfikatu zainstalowanego na zasobniku. Kontener zapisu zdalnego wymaga lokalnej ścieżki do certyfikatu w zasobniku tylko dla <AZURE_CLIENT_CERTIFICATE_PATH>
wartości w kroku Wdrażanie kontenera przyczepki w celu skonfigurowania zdalnego zapisu.
Ten krok jest wymagany tylko wtedy, gdy podczas tworzenia klastra nie został włączony dostawca usługi Azure Key Vault dla sterownika CSI magazynu wpisów tajnych.
Aby włączyć dostawcę usługi Azure Key Vault dla sterownika CSI magazynu wpisów tajnych dla klastra, uruchom następujące polecenie interfejsu wiersza polecenia platformy Azure:
az aks enable-addons --addons azure-keyvault-secrets-provider --name <aks-cluster-name> --resource-group <resource-group-name>
Aby udzielić tożsamości dostępu do magazynu kluczy, uruchom następujące polecenia:
# 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>
Utwórz
SecretProviderClass
, zapisując następujący kod YAML w pliku o nazwie secretproviderclass.yml. Zastąp wartości dlauserAssignedIdentityID
,keyvaultName
,tenantId
i obiektów, które mają być pobierane z magazynu kluczy. Aby uzyskać informacje o tym, jakich wartości użyć, zobacz Zapewnianie tożsamości w celu uzyskania dostępu do dostawcy usługi Azure Key Vault dla sterownika CSI magazynu wpisów tajnych.# 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
Zastosuj
SecretProviderClass
, uruchamiając następujące polecenie w klastrze:kubectl apply -f secretproviderclass.yml
Wdrażanie kontenera przyczepki w celu skonfigurowania zdalnego zapisu
Skopiuj następujący kod YAML i zapisz go w pliku. Kod YAML używa portu 8081 jako portu nasłuchiwania. Jeśli używasz innego portu, zmodyfikuj ją w pliku 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>'
Zastąp następujące wartości w pliku YAML:
Wartość Opis <CLUSTER-NAME>
Nazwa klastra usługi AKS. <CONTAINER-IMAGE-VERSION>
mcr.microsoft.com/azuremonitor/containerinsights/ciprod/prometheus-remote-write/images:prom-remotewrite-20240617.1
Zdalna wersja obrazu kontenera zapisu.<INGESTION-URL>
Wartość punktu końcowego pozyskiwania metryk na stronie Przegląd obszaru roboczego usługi Azure Monitor. <APP-REGISTRATION -CLIENT-ID>
Identyfikator klienta aplikacji. <TENANT-ID>
Identyfikator dzierżawy aplikacji Microsoft Entra. <CERT-NAME>
Nazwa certyfikatu. <CLUSTER-NAME>
Nazwa klastra, na którym działa rozwiązanie Prometheus. Otwórz usługę Azure Cloud Shell i przekaż plik YAML.
Użyj narzędzia Helm, aby zastosować plik YAML i zaktualizować konfigurację rozwiązania 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>
Weryfikacja i rozwiązywanie problemów
Aby uzyskać informacje dotyczące weryfikacji i rozwiązywania problemów, zobacz Rozwiązywanie problemów z zdalnym zapisem i usługą zarządzaną Azure Monitor dla zdalnego zapisu w usłudze Prometheus.
Następne kroki
- Zbieranie metryk rozwiązania Prometheus z klastra usługi AKS
- Dowiedz się więcej o usłudze zarządzanej Azure Monitor dla rozwiązania Prometheus
- Zdalne zapisywanie w usłudze zarządzanej Azure Monitor dla rozwiązania Prometheus
- Wysyłanie danych rozwiązania Prometheus do usługi Azure Monitor przy użyciu uwierzytelniania tożsamości zarządzanej
- Wysyłanie danych rozwiązania Prometheus do usługi Azure Monitor przy użyciu uwierzytelniania Tożsamość obciążeń Microsoft Entra (wersja zapoznawcza)
- Wysyłanie danych rozwiązania Prometheus do usługi Azure Monitor przy użyciu uwierzytelniania tożsamości zarządzanej przez pod firmy Microsoft (wersja zapoznawcza)