[PYTHON] Visualisez le flux des tweets avec Diamond + Graphite + Grafana

introduction

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

Créez votre propre collectionneur

Préparation

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

Chose que tu veux faire

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.

la mise en oeuvre

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

Ce qui a été fait

Nous recueillons 7 listes publiques.

Vue à Grafana

grafana_3.png

Comme il est difficile de voir, par exemple, agrandissez la partie inférieure gauche. grafana_4.png

En regardant la durée d'une journée, ça ressemble à ça grafana_5.png

Afficher le fichier chuchotement

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.

Essayez de faire quelque chose comme l'analyse

Examiner la différence de quantité de tweets en fonction de l'heure de la journée

grafana_5.png 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.

grafana_6.png

grafana_7.png

Trouvez un point où la quantité de tweets est spéciale

En regardant le graphique ci-dessous, y a-t-il quelque chose que vous remarquez?

grafana_8.png

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é.

grafana_9.png

Cependant, veuillez noter que si le nombre d'échantillons est petit comme dans cet exemple, il peut changer rapidement sans raison particulière.

Histoire similaire

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.

Résumé / impression

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

Visualisez le flux des tweets avec Diamond + Graphite + Grafana
Visualisez le comportement de l'algorithme de tri avec matplotlib
Visualisez la gamme d'insertions internes et externes avec python
Visualisez le vocabulaire caractéristique d'un document avec D3.js
Résumé du flux de base de l'apprentissage automatique avec Python
Visualisez le statut d'appréciation des œuvres d'art avec OpenCV
Visualisez les résultats des arbres de décision réalisés avec Python scikit-learn
Suivez le flux de communication de la connexion de pont de Docker avec nftables
Visualisons le nombre de personnes infectées par le virus corona avec matplotlib
Visualisez l'état de la réponse du recensement national 2020
J'ai essayé de visualiser la tranche d'âge et la distribution des taux d'Atcoder
J'ai essayé de visualiser le texte du roman "Weather Child" avec Word Cloud
Alignez la taille de la barre de couleurs avec matplotlib
Visualisez la valeur limite du perceptron multicouche
Vérifier l'existence du fichier avec python
Visualisez les effets de l'apprentissage profond / de la régularisation
Analyse émotionnelle des tweets avec apprentissage en profondeur
La troisième nuit de la boucle avec pour
La deuxième nuit de la boucle avec pour
Visualisez les données d'exportation du journal Piyo
Recevez beaucoup de vos tweets avec Tweepy
Compter le nombre de caractères avec écho
Simulons la transition du taux d'infection par rapport à la densité de population avec python