L’Agent Datadog recueille une métrique clé de Gunicorn : le nombre de processus de travail en cours d’exécution. Il envoie également un check de service, qui vérifie si Gunicorn est en cours d’exécution ou non.
Gunicorn peut fournir directement d’autres métriques via DogStatsD, y compris :
Le taux de requêtes total
Le taux de requêtes par code de statut (2xx, 3xx, 4xx, 5xx)
La durée des requêtes (moyenne, médiane, maximum, 95e centile, etc.)
Le taux de message de log par niveau de log (critical, error, warning, exception)
Configuration
Installation
Le check Gunicorn de l’Agent Datadog est inclus avec le package de l’Agent Datadog : vous n’avez donc rien d’autre à installer sur vos serveurs Gunicorn.
Le check Gunicorn nécessite l’environnement Python de votre application Gunicorn pour obtenir le package setproctitle. Sans celui-ci, l’Agent Datadog signale qu’il ne parvient pas à trouver de processus principal gunicorn (et donc, qu’il ne peut pas non plus trouver de workers). Installez le package setproctitle dans l’environnement Python de votre application si vous souhaitez recueillir la métrique gunicorn.workers.
Depuis la version 19.1, Gunicorn propose une option pour envoyer ses métriques à un daemon qui implémente le protocole StatsD, tel que DogStatsD. Comme pour de nombreuses options de Gunicorn, vous pouvez la passer à gunicorn via l’interface de ligne de commande (--statsd-host) ou la définir dans le fichier de configuration de votre application (statsd_host). Pour vous assurer que vous recueillez toutes les métriques Gunicorn, configurez votre application de façon à envoyer les métriques à DogStatsD sur "localhost:8125", puis redémarrez-la.
Ajoutez ce bloc de configuration à votre fichier gunicorn.d/conf.yaml pour commencer à recueillir vos métriques Gunicorn :
init_config:instances:## @param proc_name - chaîne, obligatoire## Le nom du processus gunicorn. Pour le serveur gunicorn suivant :#### gunicorn --name <NOM_APP_WEB> <CONFIG_APP_WEB>.ini#### le nom du processus est `<NOM_APP_WEB>`- proc_name:<NOM_DE_VOTRE_APP>
Redémarrez l’Agent pour commencer à envoyer vos métriques Gunicorn à Datadog.
Collecte de logs
Disponible à partir des versions > 6.0 de l’Agent
La collecte de logs est désactivée par défaut dans l’Agent Datadog. Vous devez l’activer dans datadog.yaml :
logs_enabled:true
Utilisez la commande suivante pour configurer le chemin du fichier de log d’accès :
--access-logfile <CHEMIN_DU_FICHIER>
Utilisez la commande suivante pour configurer le chemin du fichier de log d’erreurs :
--error-logfile FILE, --log-file <CHEMIN_DU_FICHIER>
Ajoutez ce bloc de configuration à votre fichier gunicorn.d/conf.yaml pour commencer à recueillir vos logs Gunicorn :
Modifiez les valeurs des paramètres path et service en fonction de votre environnement. Consultez le fichier d’exemple gunicorn.yaml pour découvrir toutes les options de configuration disponibles.
Si le statut n’est pas défini sur OK, consultez la section Dépannage.
Utilisez netstat pour vérifier que Gunicorn envoie également ses propres métriques :
$ sudo netstat -nup | grep "127.0.0.1:8125.*ESTABLISHED"
udp 0 0 127.0.0.1:38374 127.0.0.1:8125 ESTABLISHED 15500/gunicorn: mas
Données collectées
Métriques
Événements
Le check Gunicorn n’inclut aucun événement.
Checks de service
gunicorn.is_running Renvoie CRITICAL si l’Agent n’est pas capable de trouver le processus principal Gunicorn. Si ce n’est pas le cas, renvoie OK. Statuses: ok, critical
Dépannage
L’Agent ne trouve pas de processus Gunicorn
Checks====== gunicorn (5.12.1) -----------------
- instance #0 [ERROR]: 'Found no master process with name: gunicorn: master [my_web_app]' - Collected 0 metrics, 0 events &1 service check
- Dependencies:
- psutil: 4.4.1
Soit Gunicorn ne s’exécute pas réellement, soit le paquet setproctitle n’est pas installé dans l’environnement Python de votre application.
Si setproctitle n’est pas installé, Gunicorn apparaît dans la table des processus comme suit :