Inviare i dati di Prometheus a Monitoraggio di Azure usando l'autenticazione di Microsoft Entra
Questo articolo descrive come configurare la scrittura remota per inviare dati da un server Prometheus autogestito in esecuzione nel cluster del servizio Azure Kubernetes o nel cluster Kubernetes abilitato per Azure Arc usando l'autenticazione di Microsoft Entra e un contenitore di auto side fornito da Monitoraggio di Azure. Si noti che è anche possibile configurare direttamente la scrittura remota nella configurazione di Prometheus per lo stesso.
Nota
È consigliabile configurare direttamente Prometheus in esecuzione nel cluster Kubernetes per la scrittura remota nell'area di lavoro di Monitoraggio di Azure. Vedere Inviare i dati di Prometheus a Monitoraggio di Azure usando l'autenticazione di Microsoft Entra La procedura seguente usa il contenitore di auto sul lato Monitoraggio di Azure.
Configurazioni dei cluster
Questo articolo si applica alle seguenti configurazioni cluster:
- Cluster del servizio Azure Kubernetes
- Cluster Kubernetes con abilitazione di Azure Arc
- Cluster Kubernetes in esecuzione in un cloud o in locale diverso
Nota
Per un cluster del servizio Azure Kubernetes o per un cluster Kubernetes abilitato per Azure Arc, è consigliabile usare l'autenticazione dell'identità gestita. Per altre informazioni, vedere Servizio gestito di Monitoraggio di Azure per la scrittura remota Prometheus per l'identità gestita.
Prerequisiti
Versioni supportate
- È necessario disporre di Prometheus versione 2.48 o successive per poter eseguire l'autenticazione a Microsoft Entra ID.
Area di lavoro di Monitoraggio di Azure
Questo articolo illustra l'invio di metriche Prometheus a un'area di lavoro di Monitoraggio di Azure. Per creare un'area di lavoro di Monitoraggio di Azure, vedere Gestire un'area di lavoro di Monitoraggio di Azure.
Autorizzazioni
Per completare i passaggi descritti in questo articolo, sono necessarie autorizzazioni di amministratore per il cluster o la risorsa.
Configurare un’applicazione per Microsoft Entra ID.
Il processo di configurazione della scrittura remota Prometheus per un'applicazione tramite l'autenticazione di Microsoft Entra comporta il completamento delle attività seguenti:
- Registrare un'applicazione con Microsoft Entra ID.
- Ottenere l'ID client dell'applicazione Microsoft Entra.
- Assegnare il ruolo Autore metriche di monitoraggio nella regola di raccolta dati dell'area di lavoro all'applicazione.
- Creare un Azure Key Vault e generare un certificato.
- Aggiungere un certificato all'applicazione Microsoft Entra.
- Aggiungere un driver CSI e una risorsa di archiviazione per il cluster.
- Distribuire un contenitore sidecar per configurare la scrittura remota.
Le attività sono descritte nelle sezioni seguenti.
Registrare un'applicazione con Microsoft Entra ID
Completare i passaggi per Registrare un'applicazione con Microsoft Entra ID e creare un'entità servizio
Ottenere l'ID client dell'applicazione Microsoft Entra
- Nel portale di Azure, passare al menu Microsoft Entra ID e selezionare Registrazioni app.
- Nell'elenco delle applicazioni, copiare il valore di ID applicazione (client) per l'applicazione registrata.
Assegnare il ruolo Autore metriche di monitoraggio nella regola di raccolta dati dell'area di lavoro all'applicazione
All'applicazione deve essere assegnato il ruolo Autore metriche di monitoraggio nella regola di raccolta dati associata all'area di lavoro di Monitoraggio di Azure.
Nel menu delle risorse per l'area di lavoro di Monitoraggio di Azure, selezionare Panoramica. Per regola di raccolta dati, selezionare il collegamento.
Nella menu delle risorse per la regola di raccolta dati, selezionare Controllo di accesso (IAM).
Selezionare Aggiungi e quindi selezionare Aggiungi assegnazione di ruolo.
Selezionare il ruolo Editore metriche di monitoraggio, quindi selezionare Avanti.
Selezionare Utente, gruppo o entità servizio, quindi scegliere Seleziona membri. Selezionare l'applicazione creata e quindi scegliere Seleziona.
Per completare l'assegnazione di ruolo, selezionare Rivedi e assegna.
Creare un Azure Key Vault e generare un certificato
- Se non si ha già un Azure Key Vault, creare un vault.
- Creare un certificato usando le linee guida in Aggiungere un certificato a Key Vault.
- Scaricare il certificato in formato CER usando le indicazioni riportate in Esportare un certificato da Key Vault.
Aggiungere un certificato all'applicazione Microsoft Entra
Nel menu delle risorse per l'applicazione Microsoft Entra, selezionare Certificati e segreti.
Nella scheda Certificati selezionare Carica certificato e selezionare il certificato scaricato.
Avviso
I certificati hanno una data di scadenza. È responsabilità dell'utente mantenere validi i certificati.
Aggiungere un driver CSI e una risorsa di archiviazione per il cluster
Nota
La configurazione del driver CSI di Azure Key Vault è solo uno dei modi per ottenere un certificato montato in un pod. Il contenitore di scrittura remota richiede un percorso locale di un certificato nel pod solo per il valore <AZURE_CLIENT_CERTIFICATE_PATH>
nel passaggio Distribuire un contenitore sidecar per configurare la scrittura remota.
Questo passaggio è obbligatorio solo se non è stato attivato il provider di Azure Key Vault per il driver CSI dell'archivio segreti al momento della creazione del cluster.
Per attivare il provider di Azure Key Vault per il driver CSI dell'archivio segreti per il cluster, eseguire il comando seguente dell'interfaccia della riga di comando di Azure:
az aks enable-addons --addons azure-keyvault-secrets-provider --name <aks-cluster-name> --resource-group <resource-group-name>
Per concedere all'identità l'accesso all'insieme di credenziali delle chiavi, eseguire questi comandi:
# 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>
Creare
SecretProviderClass
salvando il codice YAML seguente in un file denominato secretproviderclass.yml. Sostituire i valori peruserAssignedIdentityID
,keyvaultName
,tenantId
e gli oggetti da recuperare dall'insieme di credenziali delle chiavi. Per informazioni sui valori da usare, vedere Fornire un'identità per accedere al provider di Azure Key Vault per il driver CSI dell'archivio segreti.# 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
Applicare
SecretProviderClass
eseguendo il seguente comando nel cluster:kubectl apply -f secretproviderclass.yml
Distribuire un contenitore sidecar per configurare la scrittura remota
Copiare il seguente YAML e salvarlo in un file. YAML usa la porta 8081 come porta di ascolto. Se si usa una porta diversa, modificare tale valore in 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>'
Sostituire i valori seguenti nel file YAML:
valore Descrizione <CLUSTER-NAME>
Il nome del cluster del servizio Azure Kubernetes. <CONTAINER-IMAGE-VERSION>
mcr.microsoft.com/azuremonitor/containerinsights/ciprod/prometheus-remote-write/images:prom-remotewrite-20240617.1
La versione dell’immagine della scrittura remota.<INGESTION-URL>
Valore per endpoint di inserimento delle metriche dalla pagina Panoramica per l'area di lavoro Monitoraggio di Azure. <APP-REGISTRATION -CLIENT-ID>
ID client dell'applicazione. <TENANT-ID>
L'ID tenant dell'applicazione Microsoft Entra. <CERT-NAME>
Nome del certificato. <CLUSTER-NAME>
Nome del cluster in cui è in esecuzione Prometheus. Aprire Azure Cloud Shell e caricare il file YAML.
Usare Helm per applicare il file YAML e aggiornare la configurazione di 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>
Verifica e risoluzione dei problemi
Per informazioni sulla verifica e sulla risoluzione dei problemi, vedere Risoluzione dei problemi relativi alla scrittura remota e Servizio gestito di Monitoraggio di Azure per scrittura remota del servizio gestito per Prometheus.
Passaggi successivi
- Raccogliere le metriche Prometheus da un cluster del servizio Azure Kubernetes
- Altre informazioni sul servizio gestito di Monitoraggio di Azure per Prometheus
- Scrittura remota nel servizio gestito per Prometheus di Monitoraggio di Azure
- Inviare dati di Prometheus a Monitoraggio di Azure usando l'autenticazione con identità gestita
- Inviare dati di Prometheus a Monitoraggio di Azure usando l'autenticazione con dei carichi di lavoro (anteprima) di Microsoft Entra ID
- Inviare dati di Prometheus a Monitoraggio di Azure usando l'autenticazione con identità gestita da pod (anteprima) di Microsoft Entra