2017-06-06 6 views
4

J'ai configuré une pile de surveillance de docker en utilisant Prometheus, Grafana et cAdvisor. Tout en utilisant cette requête pour obtenir des conteneurs en cours d'exécution:Surveillance du docker Prometheus cAdvisor

count_scalar(container_last_seen{name=~container1|container2}) 

Il ramasse les conteneurs Allright, dès que je lance un nouveau conteneur, il est ramassé tout de suite. Le problème est lorsqu'un conteneur est arrêté ou supprimé, il ne le prend pas, il le montre toujours comme un conteneur en cours d'exécution. A partir du point de terminaison cAdvisor/metrics, il est supprimé dès que le conteneur s'arrête.

Y at-il un problème avec la requête?

(c'est ce que je l'ai utilisé pour la pile: https://github.com/vegasbrianc/prometheus)

Répondre

3

Il semble être lié à la amount of time cAdvisor stores the data in memory.

Bien que cAdvisor conserve les données en mémoire, vous avez toujours une date valide dans container_last_seen métrique. Ainsi, l'instruction count_scalar "voit" toujours le conteneur car sa valeur est valide.

Dans mon installation de test, cAdvisor conserve les données pendant 5 minutes. Après cette durée, j'obtiens les bonnes informations de votre formule car la métrique container_last_seen a disparu.

Vous pouvez modifier cette configuration cAdvisor avec le drapeau --storage_duration.

--storage_duration=2m0s: How long to store data. 

En tant alternatif si vous wan't alerte rapide, vous pouvez également envisager d'exécuter une requête qui comparerait la date vu la dernière avec la date actuelle:

count_scalar(time()-container_last_seen{name=~"container1|container2"}<=60)