web-dev-qa-db-fra.com

Le graphite montre "Aucun" pour tous les points de données, même si j'envoie des données informatiques

J'ai installé Graphite via la marionnette ( https://forge.puppetlabs.com/dwerder/graphite ) avec nginx et postgressql. Lorsque je l'envoie des données informatiques manuellement, cela crée la métrique, mais tous ses points de données sont "Aucun" (A.K.A. NULL). Cela se produit aussi si j'exécute l'exemple-Client.py expédié avec du graphite.

echo "jakub.test 42 $(date +%s)" | nc 0.0.0.0 2003 # Carbon listens at 2003
# A minute or so later:
$ whisper-fetch.py --pretty /opt/graphite/storage/whisper/jakub/test.wsp | head -n1
Sun May  4 12:19:00 2014    None
$ whisper-fetch.py --pretty /opt/graphite/storage/whisper/jakub/test.wsp | tail -n1
Mon May  5 12:09:00 2014    None
$ whisper-fetch.py --pretty /opt/graphite/storage/whisper/jakub/test.wsp | grep -v None | wc -l
0

Et:

$ python /opt/graphite/examples/example-client.py 
# Wait until it sends two batches of data ...
$ whisper-fetch.py /opt/graphite/storage/whisper/system/loadavg_15min.wsp | grep -v None | wc -l
0

Ceci est, selon NGREP, les données qui arrivent au port [à partir d'une tentative ultérieure] (ligne 3):

####
T 127.0.0.1:34696 -> 127.0.0.1:2003 [AP]
  jakub.test  45 1399362193. 
####^Cexit
23 received, 0 dropped

C'est la partie pertinente de /opt/graphite/conf/storage-schemas.conf:

[default]
pattern = .*
retentions = 1s:30m,1m:1d,5m:2y

Une idée de ce qui ne va pas? Les propres métriques et données du carbone sont affichées dans l'interface utilisateur. Merci!

Environnement: Ubuntu 13.10 Saucy, Graphite 0.9.12 (via PIP).

PS: J'ai écrit sur mes tentatives de dépannage ici - Graphite montre des métriques mais aucune donnée - Dépannage

[~ # ~] Mise à jour [~ # ~] :

  1. Les points de données dans les fichiers Whisper ne sont enregistrés que tous les min autres, même si la politique de conservation spécifie une précision plus élevée, telle que "1s" ou "10s".
  2. Solution de contournement pour les données ignorées: Utilisez soit un schéma d'agrégation avec xFilesFactor = 0.1 (au lieu de 0,5) ou définir la précision la plus basse à 1 m au lieu de <nombre compris entre 1 et 49> s. - Voir les commentaires ci-dessous la réponse acceptée ou le graphite répond qustion. selon les docs : "xFilesFactor _ doit être un numéro de point flottant compris entre 0 et 1, et spécifie quelle fraction des emplacements du niveau de retenue précédent doit avoir des valeurs non nulles Afin de regrouper à une valeur non nulle. La valeur par défaut est de 0,5. "Il semble donc que, sans égard à une précision spécifiée de 1s, les données sont agrégées à 1 minute et finissent par étant pas parce que 50% des valeurs dans la période des minutes ne sont pas non pas.

[~ # ~ ~] solution [~ # ~]

Alors @jlawrie me mène à la solution. Il s'avère que les données sont en réalité, mais sont agrégées à rien, la raison est double:

  1. L'UI et Whisper-Fetch Afficher les données agrégées à la plus haute précision qui couvre la période de la requête entière, qui est par défaut à 24h. C'est à dire. Tout ce qui porte sur la rétention <1D ne montrera jamais dans l'interface utilisateur ou de récupérer sauf si vous sélectionnez une période plus courte. Étant donné que ma période de conservation du 1s était de 30 minutes, je devrais sélectionner la période de <= 30 derniers min pour voir les données brutes à la plus haute précision collectée.
  2. Lors de l'agrégation de données (de 1s à 1min dans mon cas), le graphite nécessite par défaut que 50% (xfilesFactor = 0.5) de points de données de la période ont une valeur. Sinon, cela ignorera les valeurs existantes et l'agrégez à aucun. Donc, dans mon cas, j'aurais besoin d'envoyer des données au moins 30 fois dans une minute (30 à 50% des années 60 = 1min) pour s'afficher dans la valeur allouée à 1 min. Mais mon application n'envoie que des données toutes les 10 pour que je n'ai que 6 valeurs de 60 possibles.

=> La solution consiste à modifier la première précision de 1s à 10 et n'oubliez pas de sélectionner une période plus courte lorsque je souhaite voir les données brutes (ou étendre sa rétention à 24h pour le montrer par défaut).

8
Jakub Holý

Il existe de nombreuses façons que le graphite perdra des données, c'est pourquoi j'essaie vraiment d'éviter d'utiliser. Permettez-moi de commencer par un simple - essayez de connecter votre application, attendez une seconde (littéralement une seconde), puis de produire les données expressionnées. J'ai trouvé dans de nombreuses circonstances cela résoudra ce problème exact. Une autre chose que vous devriez essayer est de soumettre des données à une fréquence beaucoup plus élevée que la fréquence à laquelle Graphite enregistre les données. J'irai dans cela un peu plus. Une autre erreur fréquente consiste à utiliser l'utilitaire Whisper-Resize.py, qui n'a vraiment pas fonctionné pour moi. Si vos données ne sont pas encore importantes, supprimez simplement les fichiers Whisper et laissez-les être créés avec les nouveaux paramètres de rétention.

Les fichiers de stockage du graphite, les fichiers Whisper, au lieu de stocker les données comme point avec une valeur et une heure (comme vous avez fourni le programme) le stockent en réalité comme ayant une série de machines à sous que la valeur est stockée. Le programme essaie alors de Déterminez quelle fente correspond à une période à l'aide du fichier de données de rétention. Si cela reçoit une donnée qui ne convient pas exactement dans une fente, je pense Que se passe-t-il est qu'il utilise une moyenne, minute ou max selon un autre fichier dans le même répertoire que le fichier de rétention. J'ai trouvé que la meilleure façon de garder cela de tout gâcher était de soumettre des données à une fréquence beaucoup plus élevée que la fréquence où le graphite stockait des données. Honnêtement, il est très compliqué - non seulement existe des périodes de rétention pour le graphite et des algorithmes de moyennant des points de remplissage (je pense), mais ces valeurs sont également appliquées aux fichiers Whisper. Les choses très étranges se produiront lorsque celles-ci ne correspondent pas, alors jusqu'à ce que votre configuration fonctionne, je vous suggérerais de supprimer vos fichiers Whisper à plusieurs reprises et de laisser le graphite les recréer.

Ce programme m'a vraiment frappé comme agissant assez de buggy, donc si vous rencontrez quelque chose comme ça ne présumez pas que c'est votre faute.

1
Some Linux Nerd