Collectez les métriques Prometheus et OpenMetrics exposées par votre application s’exécutant dans Kubernetes à l’aide de l’Agent Datadog et des intégrations OpenMetrics ou Prometheus. Par défaut, toutes les métriques récupérées par la vérification Prometheus générique sont considérées comme des métriques personnalisées.
Depuis la version 6.5.0, l’Agent inclut les vérifications OpenMetrics et Prometheus, capables d’interroger des endpoints Prometheus. Pour un usage avancé de l’interface OpenMetricsCheck, y compris la création d’une vérification personnalisée, consultez la section Outils pour développeurs.
Cette page explique l’utilisation de base de ces checks, qui vous permettent d’interroger des métriques personnalisées à partir de endpoints Prometheus. Pour une explication du mappage entre les métriques Prometheus et celles de Datadog, consultez le guide Mappage de métriques Prometheus avec des métriques Datadog.
Remarque : nous vous conseillons d’utiliser le check OpenMetrics du fait de son efficacité accrue et de sa prise en charge complète du format texte Prometheus. N’utilisez le check Prometheus que lorsque l’endpoint de métriques ne prend pas en charge un format texte.
Configurez votre check OpenMetrics ou Prometheus à l’aide de la fonctionnalité Autodiscovery, en appliquant les annotations suivantes à votre pod exposant les métriques OpenMetrics/Prometheus :
Remarque : les annotations AD v2 ont été ajoutées dans la version 7.36 de l’Agent Datadog afin de simplifier la configuration de l’intégration. Pour les versions précédentes de l’Agent Datadog, utilisez les annotations AD v1.
Correspond au nom du conteneur qui expose les métriques.
<ENDPOINT_PROMETHEUS>
Le chemin d’URL pour les métriques traitées par le conteneur, au format Prometheus.
<PRÉFIXE_ESPACENOMMAGE_MÉTRIQUES_POUR_DATADOG>
L’espace de nommage spécifié ici sera ajouté comme préfixe à chaque métrique lors de son affichage dans Datadog.
<MÉTRIQUE_À_RÉCUPÉRER>
La clé de la métrique Prometheus à récupérer à partir de l’endpoint Prometheus.
<NOUVEAU_NOM_MÉTRIQUE>
Remplace la clé de métrique <MÉTRIQUE_À_RÉCUPÉRER> par le <NOUVEAU_NOM_MÉTRIQUE> dans Datadog.
La configuration metrics est une liste de métriques à récupérer en tant que métriques personnalisées. Indiquez chaque métrique à collecter ainsi que le nom souhaité dans Datadog sous forme de paires clé-valeur, par exemple : {"<METRIC_TO_FETCH>":"<NEW_METRIC_NAME>"}. Pour éviter des frais excessifs liés aux métriques personnalisées, Datadog recommande de limiter la portée aux seules métriques nécessaires. Vous pouvez également fournir une liste de noms de métriques sous forme de chaînes de caractères, interprétées comme des expressions régulières, pour collecter les métriques souhaitées avec leur nom d’origine. Pour récupérer toutes les métriques, utilisez ".*" plutôt que "*".
Remarque : les expressions régulières peuvent entraîner l’envoi d’un volume important de métriques custom.
Utilisez le fichier prometheus.yaml de Prometheus pour lancer un exemple de déploiement Prometheus qui comporte la configuration Autodiscovery sur le pod :
Remarque : les annotations AD v2 ont été ajoutées dans la version 7.36 de l’Agent Datadog afin de simplifier la configuration de l’intégration. Pour les versions précédentes de l’Agent Datadog, utilisez les annotations AD v1.
Rendez-vous sur votre page Fleet Automation et filtrez par l’intégration openmetrics pour consulter des informations détaillées sur l’état de vos vérifications.
Accédez à votre page Metric summary pour visualiser les métriques recueillies à partir de cet exemple de pod. Cette configuration recueillera les métriques promhttp_metric_handler_requests, promhttp_metric_handler_requests_in_flight, ainsi que toutes les métriques commençant par go_memory qui sont exposées.
Collecte de métriques avec les annotations Prometheus (Prometheus Check)
Grâce à la fonctionnalité Autodiscovery Prometheus, l’Agent Datadog peut détecter les annotations Prometheus natives (comme prometheus.io/scrape, prometheus.io/path ou prometheus.io/port) et planifier automatiquement des checks OpenMetrics de façon à recueillir des métriques Prometheus dans Kubernetes.
Remarque : nous vous conseillons d’utiliser le check OpenMetrics du fait de son efficacité accrue et de sa prise en charge complète du format texte Prometheus. N’utilisez le check Prometheus que lorsque l’endpoint de métriques ne prend pas en charge un format texte.
Prérequis
Agent Datadog v7.27+ ou v6.27+ (pour les checks de pod)
Agent de cluster Datadog v1.11+ (pour les checks de service et d’endpoint)
Configuration
Il est conseillé de commencer par vérifier quels pods et services contiennent l’annotation prometheus.io/scrape=true avant d’activer cette fonctionnalité. Pour ce faire, utilisez les commandes suivantes :
kubectl get pods -o=jsonpath='{.items[?(@.metadata.annotations.prometheus\.io/scrape=="true")].metadata.name}' --all-namespaces
kubectl get services -o=jsonpath='{.items[?(@.metadata.annotations.prometheus\.io/scrape=="true")].metadata.name}' --all-namespaces
Une fois la fonctionnalité Prometheus Scrape activée, l’Agent Datadog recueille des métriques custom à partir de ces ressources. Si vous ne souhaitez pas recueillir de métriques custom à partir de ces ressources, vous pouvez supprimer cette annotation ou mettre à jour les règles Autodiscovery comme décrit dans la section Configuration avancée.
Remarque : l’activation de cette fonctionnalité sans configuration avancée peut entraîner une augmentation importante du nombre de métriques personnalisées, avec des conséquences sur la facturation. Consultez la section de configuration avancée pour apprendre à limiter la collecte à un sous-ensemble de conteneurs/pods/services.
Configuration de base
Mettez à jour la configuration de votre opérateur Datadog pour inclure ce qui suit :
Si l’Agent de cluster est activé, à l’intérieur de son manifeste cluster-agent-deployment.yaml, ajoutez les variables d’environnement suivantes pour le conteneur de l’Agent de cluster :
Grâce à ces lignes, l’Agent Datadog détecte les pods qui possèdent des annotations Prometheus natives et génère les checks OpenMetrics correspondants.
En outre, lorsqu’il est activé, l’Agent de cluster Datadog détecte également les services qui possèdent des annotations Prometheus natives et génère les checks OpenMetrics correspondants.
prometheus.io/scrape=true : requis.
prometheus.io/path : facultatif (valeur par défaut : /metrics).
prometheus.io/port : facultatif (valeur par défaut : %%port%%). Template variable remplacée par le port du conteneur ou service.
Ces paramètres permettent de générer un check qui recueille toutes les métriques exposées, en se basant sur la configuration par défaut de l’intégration OpenMetrics.
Configuration avancée
Vous pouvez configurer davantage la collecte de métriques (au-delà des annotations Prometheus natives) à l’aide du champ additionalConfigs.
Configurations de checks OpenMetrics supplémentaires
Utilisez additionalConfigs.configurations pour définir des configurations de checks OpenMetrics supplémentaires. Consultez la liste des paramètres OpenMetrics pris en charge que vous pouvez passer via additionalConfigs.
Règles personnalisées d’Autodiscovery
Utilisez additionalConfigs.autodiscovery pour définir des règles personnalisées d’Autodiscovery. Ces règles peuvent reposer sur les noms de conteneurs, les annotations Kubernetes, ou les deux.
Si kubernetes_container_names et kubernetes_annotations sont tous deux définis, une logique ET est appliquée (les deux règles doivent correspondre).
Exemples
La configuration suivante cible un conteneur nommé my-app exécuté dans un pod avec l’annotation app=my-app. La configuration du check OpenMetrics est personnalisée pour activer l’option send_distribution_buckets et définir un délai d’attente personnalisé de 5 secondes.
Mettez à jour la configuration de votre opérateur Datadog pour inclure ce qui suit :
Pour DaemonSet, la configuration avancée se définit dans la variable d’environnement DD_PROMETHEUS_SCRAPE_CHECKS, et non dans un champ additionalConfigs.
Proposer une intégration personnalisée comme intégration officielle
Par défaut, toutes les métriques récupérées par le check Prometheus générique sont considérées comme des métriques custom. Si vous surveillez un logiciel prêt à l’emploi et que vous pensez qu’il mérite une intégration officielle, n’hésitez pas à apporter votre contribution !
Les intégrations officielles utilisent des répertoires dédiés. Le check générique intègre un système de création d’instances qui se charge de coder en dur la configuration par défaut et les métadonnées des métriques. Reportez-vous au référentiel sur l’intégration kube-proxy pour obtenir un exemple.
Pour aller plus loin
Documentation, liens et articles supplémentaires utiles: