Monitoring de latence gRPC avec des histogrammes Prometheus

imbert-julien 10/05/2026
RÉSOLU
imbert-julien
Auteur Actif
Avatar de imbert-julien
imbert-julien
Auteur Actif

Je cherche à instrumenter mes services gRPC en Go pour monitorer la latence précise. J'utilise prometheus/client_golang mais mes histogrammes ne semblent pas refléter les latences réelles (p99 très instable).

Comment configurez-vous vos Buckets pour avoir une précision correcte sans exploser la cardinalité ?

10/05/2026 à 10:34

10 commentaires

Utilise des buckets exponentiels. C'est la base pour le gRPC. Voici un exemple pour une latence en secondes :

prometheus.ExponentialBuckets(0.005, 2, 10)
11/05/2026 à 09:39
imbert-julien
Auteur Actif
Avatar de imbert-julien
imbert-julien
Auteur Actif

J'ai testé, ça donne une meilleure résolution sur les petits temps, mais ça manque de granularité au-delà d'une seconde.

12/05/2026 à 07:01
slanglois
Membre
Avatar de slanglois
slanglois
Membre

Tu peux combiner les buckets. Il n'y a pas de règle d'or, il faut adapter à ton SLA. Si ton SLA est à 200ms, tes buckets doivent être centrés autour.

12/05/2026 à 22:11
imbert-julien
Auteur Actif
Avatar de imbert-julien
imbert-julien
Auteur Actif

Je vois. Est-ce qu'il vaut mieux utiliser des Summary ou des Histogram dans ce cas ?

13/05/2026 à 16:55
xavier83
Membre
Avatar de xavier83
xavier83
Membre

Évite les Summary si tu veux agréger les données entre plusieurs instances. Les histogrammes sont indispensables pour le calcul global.

14/05/2026 à 14:47

Exactement. Pour le p99, si tu as trop de cardinalité, regarde du côté des native histograms si tu es sur une version récente de Prometheus.

15/05/2026 à 12:53
imbert-julien
Auteur Actif
Avatar de imbert-julien
imbert-julien
Auteur Actif

Je vais regarder les native histograms, ça semble être la solution pour éviter de configurer manuellement les buckets.

16/05/2026 à 09:23
slanglois
Membre
Avatar de slanglois
slanglois
Membre

Attention cependant à la consommation CPU/RAM si tu as énormément de labels (cardinalité).

17/05/2026 à 04:18
xavier83
Membre
Avatar de xavier83
xavier83
Membre

C'est vrai. Garde tes labels au strict minimum (méthode, statut).

17/05/2026 à 17:38
imbert-julien
Auteur Actif
Avatar de imbert-julien
imbert-julien
Auteur Actif

C'est noté. Je pars sur une configuration optimisée des buckets et je limite les labels. Merci pour les conseils.

18/05/2026 à 06:48

Laisser une réponse

Vous devez être connecté pour poster un message !

Rejoindre la communauté

Recevoir les derniers articles gratuitement en créant un compte !

S'inscrire
An Error Occurred: Internal Server Error

Oops! An Error Occurred

The server returned a "500 Internal Server Error".

Something is broken. Please let us know what you were doing when this error occurred. We will fix it as soon as possible. Sorry for any inconvenience caused.