Partager via


Envoyer des mesures Prometheus à l’espace de travail Log Analytics avec Container Insights

Cet article explique comment envoyer des métriques Prometheus de votre cluster Kubernetes surveillé par Container Insights à un espace de travail Log Analytics. Avant d’effectuer cette configuration, vous devez d’abord vous assurer que vous supprimez les métriques Prometheus de votre cluster à l’aide du service managé Azure Monitor pour Prometheus, qui est la méthode recommandée pour surveiller vos clusters. Utilisez la configuration décrite dans cet article uniquement si vous souhaitez également envoyer ces mêmes données à un espace de travail Log Analytics où vous pouvez les analyser à l’aide de requêtes de journal et d’alertes de recherche de journal.

Cette configuration nécessite la configuration du module complémentaire de surveillance pour l’agent Azure Monitor, qui est le même que celui utilisé par Container Insights pour envoyer des données à un espace de travail Log Analytics. Cela nécessite d’exposer le point de terminaison de métriques Prometheus via vos exportateurs ou pods, puis de configurer le module complémentaire de monitoring pour l’agent Azure Monitor utilisé par Container Insights, comme illustré dans le diagramme suivant.

Diagramme de l’architecture de surveillance de conteneur envoyant des mesures Prometheus aux journaux d’activité Azure Monitor.

Paramètres de scraping Prometheus (pour les métriques stockées en tant que journaux)

Le scraping actif des métriques de Prometheus s’effectue depuis l’une des deux perspectives ci-dessous, puis les métriques sont envoyées à l’espace de travail Log Analytics configuré :

  • À l'échelle du cluster : Configuré dans la section ConfigMap [Prometheus data_collection_settings.cluster].
  • Largeur du nœud : définie dans la section ConfigMap [Prometheus_data_collection_settings.node].
Point de terminaison Étendue Exemple
Annotation de pod À l’ensemble du cluster prometheus.io/scrape: "true"
prometheus.io/path: "/mymetrics"
prometheus.io/port: "8000"
prometheus.io/scheme: "http"
Service Kubernetes À l’ensemble du cluster http://my-service-dns.my-namespace:9100/metrics
http://metrics-server.kube-system.svc.cluster.local/metrics
URL/point de terminaison Par nœud et/ou à l'échelle du cluster http://myurl:9101/metrics

Quand une URL est indiquée, Container Insights ne capture que le point de terminaison. Quand le service Kubernetes est spécifié, le nom du service est résolu avec le serveur DNS du cluster pour obtenir l’adresse IP. Ensuite, le service résolu est supprimé.

Étendue Clé Type de données Valeur Descriptif
À l’ensemble du cluster Spécifiez l’une des trois méthodes suivantes pour capturer les points de terminaison pour les mesures.
urls Chaîne Tableau séparé par des virgules Point de terminaison HTTP (adresse IP ou chemin d’URL valide spécifié). Par exemple : urls=[$NODE_IP/metrics]. ($NODE_IP est un paramètre Container Insights spécifique et peut être utilisé à la place d’une adresse IP de nœud. Doit être tout en majuscules.)
kubernetes_services Chaîne Tableau séparé par des virgules Tableau de services Kubernetes pour la capture des mesures à partir des kube-state-metrics. Les noms de domaine complets doivent être utilisés ici. Exemple : kubernetes_services = ["http://metrics-server.kube-system.svc.cluster.local/metrics",http://my-service-dns.my-namespace.svc.cluster.local:9100/metrics]
monitor_kubernetes_pods Booléen True ou False Lorsque la valeur est définie sur true dans les paramètres du cluster, l’agent Container Insights scrape les pods Kubernetes sur l’ensemble du cluster pour les annotations Prometheus suivantes :
prometheus.io/scrape:
prometheus.io/scheme:
prometheus.io/path:
prometheus.io/port:
prometheus.io/scrape Booléen True ou False Active le raclage du pod et monitor_kubernetes_pods doit être défini sur true.
prometheus.io/scheme Chaîne http La valeur par défaut est la capture de HTTP.
prometheus.io/path Chaîne Tableau séparé par des virgules Chemin d’accès de la ressource HTTP à partir duquel récupérer les mesures. Si le chemin d’accès aux mesures n’est pas /metrics, définissez-le avec cette annotation.
prometheus.io/port Chaîne 9102 Spécifiez un port à utiliser pour l'extraction de données. Si le port n’est pas défini, la valeur 9102 est utilisée par défaut.
monitor_kubernetes_pods_namespaces Chaîne Tableau séparé par des virgules Liste verte d’espaces de noms pour la capture des métriques à partir des pods Kubernetes.
Par exemple : monitor_kubernetes_pods_namespaces = ["default1", "default2", "default3"]
À l’ensemble du nœud urls Chaîne Tableau séparé par des virgules Point de terminaison HTTP (adresse IP ou chemin d’URL valide spécifié). Par exemple : urls=[$NODE_IP/metrics]. ($NODE_IP est un paramètre Container Insights spécifique et peut être utilisé à la place d’une adresse IP de nœud. Doit être tout en majuscules.)
À l'échelle du nœud ou du cluster interval Chaîne années 60 La valeur par défaut de l’intervalle de collection est d’une minute (60 secondes). Vous pouvez modifier la collection pour [prometheus_data_collection_settings.node] et/ou [prometheus_data_collection_settings.cluster] en unités de temps telles que s, m et h.
À l'échelle du nœud ou du cluster fieldpass
fielddrop
Chaîne Tableau séparé par des virgules Vous pouvez spécifier certaines mesures à collecter ou non à partir du point de terminaison en définissant la liste Autoriser (fieldpass) et Interdire (fielddrop). Vous devez d’abord définir la liste verte.

Configurer ConfigMaps pour spécifier la configuration de scraping Prometheus (pour les métriques stockées en tant que journaux)

Effectuez les étapes suivantes pour configurer votre fichier de configuration ConfigMap pour votre cluster. ConfigMaps est une liste globale et il ne peut y avoir qu’un seul élément ConfigMap appliqué à l’agent. Vous ne pouvez pas avoir un autre élément ConfigMaps qui annule les collectes.

  1. Téléchargez le fichier YAML ConfigMap du modèle et enregistrez-le en tant que container-azm-ms-agentconfig.yaml. Si vous avez déjà déployé un ConfigMap dans votre cluster et que vous souhaitez le mettre à jour avec une configuration plus récente, vous pouvez modifier le fichier ConfigMap que vous utilisiez précédemment.

  2. Modifiez le fichier YAML ConfigMap avec vos personnalisations pour capturer les métriques Prometheus.

    Pour effectuer la collecte des services Kubernetes sur l’ensemble du cluster, configurez le fichier ConfigMap à l’aide de l’exemple suivant.

    prometheus-data-collection-settings: |- ​
    # Custom Prometheus metrics data collection settings
    [prometheus_data_collection_settings.cluster] ​
    interval = "1m"  ## Valid time units are s, m, h.
    fieldpass = ["metric_to_pass1", "metric_to_pass12"] ## specify metrics to pass through ​
    fielddrop = ["metric_to_drop"] ## specify metrics to drop from collecting
    kubernetes_services = ["http://my-service-dns.my-namespace:9102/metrics"]
    
  3. Exécutez la commande kubectl suivante : kubectl apply -f <configmap_yaml_file.yaml>.

    Exemple : kubectl apply -f container-azm-ms-agentconfig.yaml.

Quelques minutes peuvent être nécessaires pour que la modification de configuration soit effective. Tous les pods ama-logs dans le cluster vont redémarrer. Lorsque les redémarrages sont terminés, un message similaire à celui-ci s’affiche avec les résultats : configmap "container-azm-ms-agentconfig" created.

Vérifier la configuration

Pour vérifier que la configuration a été correctement appliquée à un cluster, utilisez la commande suivante pour passer en revue les journaux à partir d’un pod d’agent : kubectl logs ama-logs-fdf58 -n=kube-system.

S’il existe des erreurs de configuration au niveau des pods de l’agent Azure Monitor, la sortie affichera des erreurs similaires à celles-ci :

***************Start Config Processing******************** 
config::unsupported/missing config schema version - 'v21' , using defaults

Les erreurs liées à l’application de modifications de configuration sont également disponibles pour consultation. Les options suivantes sont disponibles pour résoudre des problèmes supplémentaires liés aux modifications de configuration et à la capture des métriques Prometheus :

  • À partir de journaux d’activité d’un pod d’agent à l’aide de la même commande kubectl logs.

  • À partir de données en direct. Les journaux de données en direct affichent des erreurs similaires à l’exemple suivant :

    2019-07-08T18:55:00Z E! [inputs.prometheus]: Error in plugin: error making HTTP request to http://invalidurl:1010/metrics: Get http://invalidurl:1010/metrics: dial tcp: lookup invalidurl on 10.0.0.10:53: no such host
    
  • À partir de la table KubeMonAgentEvents dans votre espace de travail Log Analytics. Les données sont envoyées toutes les heures avec une gravité Avertissement pour les erreurs de capture et une gravité Erreur pour les erreurs de configuration. S’il n'y a pas d'erreur, l’entrée dans la table contient des données avec une gravité Info, ce qui indique qu’aucune erreur n’est signalée. La propriété Tags contient plus d’informations sur le pod et l’ID de conteneur sur lesquels l’erreur s’est produite, ainsi que sur la première occurrence, la dernière occurrence et le nombre au cours de la dernière heure.

  • Pour Azure Red Hat OpenShift v3.x et v4.x, vérifiez les journaux de l’agent Azure Monitor en recherchant la table ContainerLog pour vérifier si la collecte de journaux d’openshift-azure-logging est activée.

Des erreurs empêchent l’agent Azure Monitor d’analyser le fichier, ce qui provoque son redémarrage et l’utilisation de la configuration par défaut. Une fois que vous avez corrigé les erreurs dans ConfigMap sur les clusters autres qu’Azure Red Hat OpenShift v3.x, enregistrez le fichier YAML et appliquez le modèle ConfigMaps mis à jour en exécutant la commande kubectl apply -f <configmap_yaml_file.yaml.

Pour Azure Red Hat OpenShift v3.x, modifiez et enregistrez le ConfigMaps mis à jour en exécutant la commande oc edit configmaps container-azm-ms-agentconfig -n openshift-azure-logging.

Interroger les données de métriques Prometheus

Pour afficher les métriques Prometheus récupérées par Azure Monitor ainsi que toutes les erreurs de configuration ou de récupération signalées par l'agent, consultez les données de requête des métriques Prometheus.

Consulter les métriques Prometheus dans Grafana

Container Insights prend en charge l’affichage des métriques stockées dans votre espace de travail Log Analytics, dans les tableaux de bord Grafana. Nous avons fourni un modèle que vous pouvez télécharger à partir du dépôt de tableaux de bord de Grafana. Utilisez le modèle pour commencer et faites-y référence pour vous aider à apprendre comment interroger d'autres données à partir de vos clusters surveillés pour les visualiser dans des tableaux de bord Grafana personnalisés.

Étapes suivantes