Envoyer des données Prometheus à Azure Monitor en utilisant l’authentification Microsoft Entra
Cet article décrit comment configurer l’écriture à distance pour envoyer des données depuis un serveur Prometheus autogéré s’exécutant dans votre cluster Azure Kubernetes Service (AKS) ou dans votre cluster Kubernetes avec Azure Arc en utilisant l’authentification Microsoft Entra un conteneur side-car fournit par Azure Monitor. Notez que vous pouvez également configurer l’écriture à distance directement dans la configuration Prometheus pour la même.
Remarque
Nous vous recommandons de configurer directement Prometheus s’exécutant sur votre cluster Kubernetes pour écrire à distance dans l’espace de travail Azure Monitor. Voir Envoyer des données Prometheus vers Azure Monitor en utilisant l’authentification Microsoft Entra ID pour en apprendre d’avantage. Les étapes ci-dessous utilisent le conteneur side-car Azure Monitor.
Configurations de cluster
Cet article s’applique aux configurations de cluster suivantes :
- Cluster Azure Kubernetes Service
- Cluster Kubernetes avec Azure Arc
- Cluster Kubernetes s’exécutant dans un autre cloud ou en local
Remarque
Pour un cluster AKS ou un cluster Kubernetes avec Azure Arc, nous vous recommandons d’utiliser l’authentification avec une identité managée. Pour plus d’informations, consultez Service managé Azure Monitor pour l’écriture à distance Prometheus pour l’identité managée.
Prérequis
Versions prises en charge
- Les versions de Prometheus ultérieures à la version 2.48 sont requises pour l’authentification avec l’application Microsoft Entra ID.
Espace de travail Azure Monitor
Cet article traite de l'envoi de métriques Prometheus à un espace de travail Azure Monitor. Pour créer un espace de travail Azure Monitor, consultez Gérer un espace de travail Azure Monitor.
Autorisations
Les autorisations d’administrateur pour le cluster ou la ressource sont nécessaires pour effectuer les étapes de cet article.
Configurer une application pour Microsoft Entra ID
Le processus de configuration de l’écriture à distance de Prometheus pour une charge de travail en utilisant l’authentification Microsoft Entra implique d’effectuer les tâches suivantes :
- Enregistrer une application avec Microsoft Entra ID.
- Obtenez l’ID client de l’application Microsoft Entra.
- Attribuer à l’application le rôle Éditeur d’indicateurs de performance d’analyse sur la règle de collecte de données d’espace de travail.
- Créer un coffre de clés Azure et générer un certificat.
- Ajouter un certificat à l’application Microsoft Entra.
- Ajouter un pilote et un stockage CSI pour le cluster.
- Déployer un conteneur side-car pour configurer l’écriture à distance.
Les tâches sont décrites dans les sections suivantes.
Inscrire une application avec Microsoft Entra ID
Effectuez les étapes pour Inscrire une application auprès de Microsoft Entra ID et créer un principal de service.
Obtenir l’ID client de l’application Microsoft Entra
- Dans le portail Azure, accédez au menu Microsoft Entra ID, puis sélectionnez Inscriptions d’applications.
- Dans la liste des applications, copiez la valeur de ID d’application (client) pour l’application inscrite.
Attribuer à l’application le rôle Éditeur d’indicateurs de performance d’analyse sur la règle de collecte de données d’espace de travail
L’application nécessite le rôle Éditeur d’indicateurs de performance d’analyse sur la règle de collecte de données associée à votre espace de travail Azure Monitor.
Dans le menu des ressources de votre espace de travail Azure Monitor, sélectionnez Vue d’ensemble. Pour Règle de collecte de données, sélectionnez le lien.
Dans le menu des ressources de la règle de collecte de données, sélectionnez Contrôle d’accès (IAM).
Sélectionnez Ajouter, puis sélectionnez Ajouter une attribution de rôle.
Sélectionnez le rôle Éditeur d’indicateurs de performance d’analyse, puis sélectionnez Suivant.
Sélectionnez Utilisateur, groupe ou principal de service, puis choisissez Sélectionner les membres. Sélectionnez l’application que vous avez créée, puis choisissez Sélectionner.
Pour terminer le processus d’attribution de rôle, sélectionnez Vérifier + attribuer.
Créer un coffre de clés Azure et générer un certificat
- Si vous n’avez pas encore de coffre de clés Azure, créez un coffre.
- Créez un certificat en utilisant les instructions fournies dans Ajouter un certificat à un coffre de clés.
- Téléchargez le certificat au format CER en utilisant les instructions fournies dans Exporter un certificat depuis Key Vault.
Ajouter un certificat à l’application Microsoft Entra
Dans le menu des ressources de votre application Microsoft Entra, sélectionnez Certificats et secrets.
Sous l’onglet Certificats, sélectionnez Charger un certificat, puis sélectionnez le certificat que vous avez téléchargé.
Avertissement
Les certificats ont une date d’expiration. Il incombe à l’utilisateur de veiller à la validité des certificats.
Ajouter un pilote et un stockage CSI pour le cluster
Remarque
La configuration du pilote CSI d’Azure Key Vault n’est qu’un des moyens d’obtenir un certificat monté sur un pod. Le conteneur d’écriture à distance a besoin d’un chemin d’accès local à un certificat dans le pod seulement pour la valeur de <AZURE_CLIENT_CERTIFICATE_PATH>
à l’étape Déployer un conteneur side-car pour configurer l’écriture à distance.
Cette étape est nécessaire seulement si vous n’avez pas activé le fournisseur Azure Key Vault pour le pilote CSI du magasin de secrets lors de la création de votre cluster.
Pour activer le fournisseur Azure Key Vault pour le pilote CSI du magasin de secrets de votre cluster, exécutez la commande Azure CLI suivante :
az aks enable-addons --addons azure-keyvault-secrets-provider --name <aks-cluster-name> --resource-group <resource-group-name>
Pour accorder à l’identité l’accès au coffre de clés, exécutez les commandes suivantes :
# 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>
Créez un objet
SecretProviderClass
en enregistrant le code YAML suivant dans un fichier nommé secretproviderclass.yml. Remplacez les valeurs pouruserAssignedIdentityID
,keyvaultName
,tenantId
et les objets à récupérer auprès de votre coffre de clés. Pour plus d’informations sur les valeurs à utiliser, consultez Fournir une identité pour accéder au fournisseur Azure Key Vault pour le pilote CSI du magasin de secrets.# 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
Appliquez
SecretProviderClass
en exécutant la commande suivante sur votre cluster :kubectl apply -f secretproviderclass.yml
Déployer un conteneur side-car pour configurer l’écriture à distance
Copiez le code YAML suivant et enregistrez-le dans un fichier. Le code YAML utilise le port 8081 comme port d’écoute. Si vous utilisez un autre port, modifiez cette valeur dans le 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>'
Remplacez les valeurs suivantes dans le YAML :
Valeur Description <CLUSTER-NAME>
Le nom de votre cluster AKS. <CONTAINER-IMAGE-VERSION>
mcr.microsoft.com/azuremonitor/containerinsights/ciprod/prometheus-remote-write/images:prom-remotewrite-20240617.1
La version d’image conteneur d’écriture distante.<INGESTION-URL>
La valeur pour Point de terminaison d’ingestion des métriques de la page Vue d’ensemble de l’espace de travail Azure Monitor. <APP-REGISTRATION -CLIENT-ID>
L’ID client de votre application. <TENANT-ID>
L’ID de locataire de l’application Microsoft Entra. <CERT-NAME>
Nom du certificat. <CLUSTER-NAME>
Le nom du cluster sur lequel Prometheus s’exécute. Ouvrez Azure Cloud Shell et chargez le fichier YAML.
Utilisez Helm pour appliquer le fichier YAML et mettre à jour votre configuration 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>
Vérification et résolution des problèmes
Pour plus d'informations sur la vérification et la résolution des problèmes, consultez Résolution des problèmes de l'écriture distante et le service géré pour Prometheus Azure Monitor pour l'écriture distante Prometheus.
Étapes suivantes
- Collecter des métriques Prometheus à partir du cluster AKS
- En savoir plus sur le service géré Azure Monitor pour Prometheus
- Écriture à distance dans le service managé Azure Monitor pour Prometheus
- Envoyer des données Prometheus à Azure Monitor en utilisant l’authentification avec une identité managée
- Envoyer des données Prometheus à Azure Monitor en utilisant l’authentification Microsoft Entra Workload ID (préversion)
- Envoyer des données Prometheus à Azure Monitor en utilisant l’authentification avec une identité managée par un pod Microsoft Entra (préversion)