8 votes

Graphite cesse de collecter des données de manière aléatoire

Nous avons un serveur Graphite pour collecter des données via collectd, statsd, JMXTrans ... Depuis quelques jours, nous avons fréquemment des trous dans nos données. En fouillant dans les données que nous avons encore, nous pouvons constater une augmentation de la taille du cache carbone (de 50K à 4M). Nous ne voyons pas d'augmentation du nombre de métriques collectées (metricsReceived est stable à environ 300K). Nous constatons une augmentation du nombre de requêtes, qui passe de 1000 à 1500 en moyenne.

Étrangement, le cpuUsage diminue légèrement de 100% (nous avons 4 CPU) à 50% lorsque la taille du cache augmente.

Étrangement, nous constatons à nouveau une augmentation du nombre d'octets lus sur le disque, et une diminution du nombre d'octets écrits.

Nous avons configuré le carbone principalement avec des valeurs par défaut :

  • MAX_CACHE_SIZE = inf.
  • MAX_UPDATES_PAR_SECONDE = 5000
  • MAX_CRÉATIONS_PAR_MINUTE = 2000

Il est évident que quelque chose a changé dans notre système, mais nous ne comprenons pas quoi, ni comment nous pouvons trouver cette cause ...

Une aide ?

2voto

Il ne s'agit pas d'un bug de la pile graphite, mais plutôt d'un goulot d'étranglement au niveau des entrées/sorties, très probablement parce que votre stockage n'a pas le nombre d'IOPS suffisant. Pour cette raison, la file d'attente continue de s'accumuler, et déborde à 4M. À ce moment-là, vous perdre autant de données en attente, qui se reflètent plus tard, sous forme de "trous" aléatoires dans votre graphique. Votre système ne peut pas keep up avec l'échelle à laquelle il reçoit les métriques. Il garde remplir et déborder .

Étrangement, le cpuUsage diminue légèrement de 100% ( à 50% lorsque la taille du cache augmente.

Cela s'explique par le fait que votre système commence à échanger des données et que les processeurs ont beaucoup de temps d'inactivité, en raison de l'attente des entrées-sorties.

Pour ajouter au contexte, j'ai 500 IOPS provisionnées chez aws sur un système sur lequel je reçois environ 40K métriques. La file d'attente est stable à 50K.

1voto

Michael Martinez Points 2505

Un autre répondant a mentionné un goulot d'étranglement au niveau des entrées/sorties du disque. Je parlerai du goulot d'étranglement du réseau comme d'une autre cause de ce problème.

Dans mon environnement, nous utilisons un cluster de serveurs d'interface utilisateur frontale (httpd, memcached), un autre cluster de relais de couche intermédiaire (carbon-c-relay qui effectue le transfert et l'agrégation) et une couche dorsale (httpd, memcached, carbon-c-relay et carbon-cache). Chacun de ces clusters se compose de plusieurs instances dans EC2 et traite au total 15 millions de métriques par minute.

Nous avions un problème où nous voyions des écarts pour les métriques générées par la fonction "somme" agrégée, et aussi les valeurs agrégées étaient incorrectes (trop basses). Le problème s'atténuait en redémarrant carbon-c-relay dans la couche intermédiaire, mais les écarts recommençaient à apparaître après plusieurs heures.

L'agrégation avait lieu à la fois dans la couche intermédiaire et dans la couche dorsale (la couche dorsale agrégeait les métriques agrégées qui lui étaient transmises par la couche intermédiaire).

Les hôtes de la couche intermédiaire n'étaient pas limités par le processeur, ni par le disque, et n'avaient aucune contrainte sur la mémoire. Ceci, combiné au fait que le problème n'apparaissait que quelques heures après le redémarrage des processus de relais, signifiait qu'il y avait un goulot d'étranglement dans le réseau. Notre solution consistait simplement à ajouter des hôtes supplémentaires à la couche intermédiaire. Grâce à cette mesure, les métriques agrégées se sont instantanément comportées correctement et n'ont pas connu d'écarts.

L'endroit exact de la pile réseau où se trouvait le goulot d'étranglement ? Je ne pourrais pas vous le dire. Cela pourrait être sur les hôtes linux, cela pourrait être du côté d'Amazon.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X