Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Ce guide explique comment configurer et utiliser Azure Managed Prometheus pour collecter les métriques des charges de travail du module complémentaire de maillage de services Istio dans votre cluster Azure Kubernetes.
Prerequisites
Effectuer les étapes d’activation du module complémentaire Istio sur le cluster en fonction de la documentation
Activer le service géré Azure Monitor pour Prometheus
Azure Monitor service managé pour Prometheus collecte des données à partir de Azure cluster Kubernetes. Pour activer Azure Monitor service managé pour Prometheus, vous devez créer un espace de travail Azure Monitor pour stocker les métriques :
export AZURE_MONITOR_WORKSPACE=<azure-monitor-workspace-name>
export AZURE_MONITOR_WORKSPACE_ID=$(az monitor account create \
--name $AZURE_MONITOR_WORKSPACE \
--resource-group $RESOURCE_GROUP \
--location $LOCATION \
--query id -o tsv)
Activer le module complémentaire Prometheus
Pour collecter les métriques Prometheus à partir de votre cluster Kubernetes, activez le module complémentaire Prometheus :
az aks update --enable-azure-monitor-metrics --name $CLUSTER --resource-group $RESOURCE_GROUP --azure-monitor-workspace-resource-id $AZURE_MONITOR_WORKSPACE_ID
Personnaliser la collecte des métriques Prometheus dans le service managé Azure Monitor
Créez une configuration de scrape dans un fichier nommé prometheus-config, similaire à l’exemple ci-dessous. Cette configuration active la collecte basée sur les annotations des pods, ce qui permet à Prometheus de détecter automatiquement les pods portant des annotations spécifiques et d’en collecter les métriques.
Important
La configuration de scraping ci-dessous n’est qu’un exemple. Nous vous recommandons vivement de la personnaliser en fonction de vos besoins. S’il n’est pas ajusté, cela peut entraîner des coûts inattendus à partir d’une collecte de métriques fréquente et d’un stockage de données accru.
global:
scrape_interval: 30s
scrape_configs:
- job_name: workload
scheme: http
kubernetes_sd_configs:
- role: endpoints
relabel_configs:
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
action: keep
regex: true
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
action: replace
target_label: __metrics_path__
regex: (.+)
- source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
action: replace
regex: ([^:]+)(?::\d+)?;(\d+)
replacement: $1:$2
target_label: __address__
Pour activer la collecte basée sur les annotations des pods, créez la configmap ama-metrics-prometheus-config qui fait référence au fichier prometheus-config dans l’espace de noms kube-system.
kubectl create configmap ama-metrics-prometheus-config --from-file=prometheus-config -n kube-system
Vérifier la collecte de métriques
Configurez les autorisations d'accès : accédez à votre espace de travail Azure Monitor dans Azure portail et créez une attribution de rôle pour vous-même afin d'accorder le rôle « Lecteur de données de supervision » sur la ressource de l'espace de travail.
Générer un exemple de trafic : envoyez quelques requêtes à la page de produit créée précédemment, par exemple :
curl -s "http://${GATEWAY_URL_EXTERNAL}/productpage" | grep -o "<title>.*</title>"Afficher/interroger les métriques dans le portail Azure : accédez à l’explorateur Prometheus dans votre espace de travail Azure Monitor et interrogez les métriques. L’exemple ci-dessous montre les résultats de la requête
istio_requests_total.
Supprimer des ressources
Si vous voulez nettoyer le maillage du service Istio et les entrées (en conservant le cluster), exécutez la commande suivante :
az aks mesh disable --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}
Si vous voulez nettoyer toutes les ressources créées à partir des documents sur les procédures Istio, exécutez la commande suivante :
az group delete --name ${RESOURCE_GROUP} --yes --no-wait