Dans la continuité de la dernière fois, j'écrirai une histoire en utilisant Diamond. Cette fois, je vais créer mon propre collecteur Diamond avec une fonction pour collecter le débit des tweets et le visualiser avec Graphite + Grafana.
Si vous ne connaissez pas Diamond, Graphite, Grafana, veuillez vous référer à la page suivante. J'ai joué avec Diamond, un outil de collecte de métriques
Tout d'abord, écrivez le répertoire dans lequel vous souhaitez placer le collecteur dans diamond.conf.
diamond.conf
# Directory to load collector modules from
collectors_path = /usr/share/diamond/collectors/
Par exemple, si vous l'installez normalement avec ubuntu, il ressemblera à ce qui précède. Dans ce cas, le collecteur situé dans / usr / share / diamond / collectors est référencé. Dans l'exemple présenté cette fois, le collecteur a été déplacé vers la maison et le chemin a été défini comme suit.
diamond.conf
# Directory to load collector modules from
collectors_path = /home/risuo/local/projects/risuo-diamond-collecter/collectors
Une fois que vous avez choisi le répertoire du collecteur, créez un répertoire appelé "twitter" et un fichier appelé "twitter.py". L'arbre est le suivant.
-[9432]% pwd
/home/risuo/local/projects/risuo-diamond-collecter/collectors
-[9433]% tree twitter
twitter
├── twitter.py
└── twitter.pyc
Cette fois, j'ai créé un collecteur avec les fonctions suivantes
Depuis que j'ai utilisé Graphite comme avant, c'est un flux de données de TwitterCollector-> GraphiteHandler-> Graphite.
Je l'ai écrit comme ça. https://gist.github.com/risuoku/324ba24a8f5ed8de1ff8
Fondamentalement, vous implémenterez une méthode de collecte qui collecte les métriques et les publie (une méthode qui transmet les métriques au gestionnaire). De plus, dans l'implémentation ci-dessus, nous utilisons un outil personnalisé (stapi) pour envelopper tweepy et étendre artificiellement la limite supérieure des restrictions d'API. stapi: https://github.com/risuoku/stapi
Nous recueillons 7 listes publiques.
Comme il est difficile de voir, par exemple, agrandissez la partie inférieure gauche.
En regardant la durée d'une journée, ça ressemble à ça
Jetons un coup d'œil au fichier chuchoté de Graphite directement.
-[21466]% whisper-fetch.py total6.wsp --until=1406654580 | tail -20
1406653440 2.000000
1406653500 3.000000
1406653560 6.000000
1406653620 3.000000
1406653680 2.000000
1406653740 5.000000
1406653800 4.000000
1406653860 3.000000
1406653920 3.000000
1406653980 4.000000
1406654040 0.000000
1406654100 5.000000
1406654160 2.000000
1406654220 2.000000
1406654280 3.000000
1406654340 3.000000
1406654400 4.000000
1406654460 5.000000
1406654520 3.000000
1406654580 4.000000
La colonne de gauche est l'heure unix et la colonne de droite est le nombre de tweets. Vous pouvez voir qu'il est pris toutes les 60 secondes.
C'est le même que le graphique quotidien montré plus tôt, mais je vais le coller à nouveau.
Tu peux voir ça. Des résultats très normaux ont été obtenus.
Comparons le nombre de tweets avec les jours de la semaine, y compris les samedis et dimanches.
En regardant le graphique ci-dessous, y a-t-il quelque chose que vous remarquez?
Si vous regardez de près, vous pouvez voir qu'il frappe à la fois vers 4 heures du matin, alors que le débit devrait être assez faible. En fait, cette liste est une collection de personnes intéressées par des concours de programmation. Quand je l'ai recherché, il semble qu'il y ait eu un événement appelé MemSQL annonce le début [c] up à 2: 00-4: 30 (JST) le 28. est. Le temps de maintien est ici C'est facile à voir. Une fois le concours de programmation terminé, j'ai voulu écrire diverses impressions, et même si c'était tôt le matin, le flux de tweets a augmenté.
Cependant, veuillez noter que si le nombre d'échantillons est petit comme dans cet exemple, il peut changer rapidement sans raison particulière.
Agrégation et visualisation en temps réel des données Twitter avec InfluxDB, Grafana et fluentd Il combine fluent-plugin-twitter, qui est un plug-in fluentd pour l'échantillonnage à partir de l'API de streaming de Twitter, et InfluxDB, Grafana.
J'ai créé un collecteur Diamond qui mesure le débit de la chronologie de la liste et essayé de collecter et de visualiser les données. Cette fois, j'ai présenté un prototype simple, mais en gros, tout peut être collecté tant qu'il s'agit de données de séries chronologiques, alors je vais essayer diverses choses et jouer avec.
Recommended Posts