Development #19766
stats pour prometheus
0%
Description
De #19765 :
À mon sens on peut utiliser Prometheus mais côté Django on gagnera à développer notre propre module, qui fournira les métriques et paramètres (ex: tenant) qui nous intéressent.
Fichiers
Révisions associées
Historique
Mis à jour par Frédéric Péters il y a plus de 6 ans
- Fichier 0001-general-add-support-for-prometheus-stats-19766.patch 0001-general-add-support-for-prometheus-stats-19766.patch ajouté
- Fichier Capture d’écran 2017-10-29 à 17.49.12.png Capture d’écran 2017-10-29 à 17.49.12.png ajouté
- Statut changé de Nouveau à En cours
- Patch proposed changé de Non à Oui
Voilà, nombre de requêtes HTTP, taille des réponses, nombre de requêtes SQL dans la requête HTTP, temps des requêtes SQL de la requête HTTP, avec paramètres ("labels") sur le hostname, le nom de la vue, le statut HTTP de la réponse, la méthode HTTP de la requête.
Par rapport à django-prometheus, la vue permettant à Prometheus de récupérer les statistiques est directement intégrée dans le middleware.
Côté configuration, j'imagine une entrée par plateforme (ex: "SaaS", "3M", etc.).
- job_name: saas_prod scheme: 'https' metrics_path: '/__metrics__/' static_configs: - targets: ['portail-citoyen-publik.entrouvert.com', 'connexion-publik.entrouvert.com', 'demarches-publik.entrouvert.com']
À noter que je précise les services en dur ici mais qu'il y a dans Prometheus du code pour découvrir les targets automatiquement ("service discovery"), celui qui pourrait nous être utile c'est le file_sd_config qui permet de pointer vers un fichier extérieur à la configuration (qui est pris en compte sans reload de prometheus).
Mis à jour par Frédéric Péters il y a plus de 6 ans
Mis à jour par Frédéric Péters il y a plus de 6 ans
(le patch initial était un demi-retour en arrière à un moment où j'ai pensé que ce n'était pas utilie d'enregistrer l'hostname)
Mis à jour par Frédéric Péters il y a plus de 6 ans
- Fichier 0001-general-add-support-for-prometheus-stats-19766.patch 0001-general-add-support-for-prometheus-stats-19766.patch ajouté
+ mesure de la durée des requêtes HTTP, que j'avais oubliée.
Mis à jour par Emmanuel Cazenave il y a plus de 6 ans
C'était l'occasion de m'intéresser aux middleware django.
Je crois qu'il y a une coquille dans l'initialisation des objets prometheus, la string 'Bytes of requests by host'
est utilisée trop souvent.
response_size = len(response.content)
est ce que ça pète pas dans le cas d'une 'streaming response' ou est ce qu'on ne fait jamais la chose ?
sql_queries_count = len(connection.queries)
j'ai l'impression que ce sera inexact si le cursor de la db a été appelé avec executemany
(https://github.com/django/django/blob/1.11.9/django/db/backends/utils.py#L105), mais je sais pas si la chose est courante
Mis à jour par Frédéric Péters il y a environ 6 ans
- Fichier 0001-general-add-support-for-prometheus-stats-19766.patch 0001-general-add-support-for-prometheus-stats-19766.patch ajouté
J'avais raté cette relecture, merci. J'ai pris en compte sauf pour le nombre de requêtes, executemany ne semble pas utilisé en interne par l'ORM (d'un git grep dans django 1.11), de notre côté on ne fait pas d'appels directs, et dans la documentation ils parlent uniquement de len(connection.queries). Par contre à relire la documentation c'est uniquement dispo en debug, du coup j'ai modifié pour ne rien publier comme stat quand l'info n'est pas disponible.
Mis à jour par Emmanuel Cazenave il y a environ 6 ans
Ack.
Il me semble qu'on aura toujours les infos disponibles parce que tu fais connection.force_debug_cursor = True
et que dans django (1.11 au moins) :
@property def queries_logged(self): return self.force_debug_cursor or settings.DEBUG
For the record, je veux bien un lien vers la doc à ce sujet que je n'ai pas trouvé.
Mis à jour par Frédéric Péters il y a environ 6 ans
- Statut changé de En cours à Résolu (à déployer)
Il me semble qu'on aura toujours les infos disponibles parce que tu fais connection.force_debug_cursor = True et que dans django (1.11 au moins) :
Ah oui totalement zappé que je faisais ça :/
commit c1768632e127ab0fc2277b66c96cb9e0294cfb22 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Sun Oct 29 17:31:03 2017 +0100 general: add support for prometheus stats (#19766)
Mis à jour par Frédéric Péters il y a plus de 5 ans
- Statut changé de Résolu (à déployer) à Solution déployée
general: add support for prometheus stats (#19766)