Prometheus qui rate des scrapes sur un service auto-scalé k8s

Posté par eugene29 le 08/01/2026
RÉSOLU

eugene29

Membre depuis le 09/03/2020

Salut à tous on a un souci récurrent avec Prometheus dans notre cluster k8s. On a un service qui scale pas mal et Prometheus rate des scrapes régulièrement surtout quand ça scale up ou down. Des fois des pods sont up mais Prometheus ne les voit pas ou met trop de temps à les scrape. J'ai l'impression qu'il manque des métriques sur certains pods


# partie de la config prometheus-operator pour le ServiceMonitor
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: my-app-monitor
  labels:
    app: my-app
spec:
  selector:
    matchLabels:
      app: my-app
  endpoints:
  - port: http-metrics
    path: /metrics
    interval: 30s
    scrapeTimeout: 10s

Commentaires

bnicolas

Membre depuis le 26/02/2019

check ta config de service discovery dans prometheus. est-ce que tu utilises bien prometheus-operator avec servicemonitors ou t'es en vanilla kubernetes sd config ? et c'est quoi ton intervalle de scrape

eugene29

Membre depuis le 09/03/2020

j'ai mis un extrait de servicemonitor c'est bien l'opérateur. l'intervalle est à 30s. le service qui expose les métriques utilise un health check de readiness sur /healthz qui renvoie un 200 quand il est prêt. mais même après le readiness probe ok prometheus rate le scrape

vmichel

Membre depuis le 28/03/2019

hmm un truc classique c'est que ton pod est "ready" mais pas encore "réellement prêt" à servir des métriques. le temps entre le moment où le container démarre et expose son port et le moment où l'appli dedans est vraiment up et expose les métriques peut être plus long que ton readiness probe ne le laisse penser

eugene29

Membre depuis le 09/03/2020

ah ok donc le readiness probe peut être un peu trop optimiste. comment je peux vérifier ça ? et si c le cas comment je corrige le tir

bnicolas

Membre depuis le 26/02/2019

tu peux augmenter le scrape timeout pour voir si ça aide ptete que l'endpoint répond juste lentement au début. ou alors rend ton readiness probe plus intelligent qu'un simple 200 en attendant que l'endpoint /metrics soit lui-même opérationnel

eugene29

Membre depuis le 09/03/2020

j'ai mis le scrape timeout à 30s et j'ai regardé les logs des pods. effectivement y'a un petit délai entre le moment où le readiness passe au vert et où les métriques sont vraiment dispo. mon app est en java et le jvm startup prend un peu de temps

frederic94

Membre depuis le 29/03/2020

pour les apps java qui mettent du temps à boot tu peux essayer un initialDelaySeconds plus long sur ton readiness probe ou même un exec probe qui curl /metrics direct pour être sûr qu'il répond avec des trucs valides avant de marquer le pod comme ready

eugene29

Membre depuis le 09/03/2020

ok je vais rallonger l'initialDelaySeconds du readiness probe pour qu'il attende un peu plus avant de dire que le pod est ready. et tester le curl sur /metrics dans le readiness probe c'est une super idée. merci à tous pour les pistes ça m'aide bien

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