[PYTHON] Visualisieren Sie den Tweet-Fluss mit Diamond + Graphite + Grafana

Einführung

Ich werde vom letzten Mal an eine Geschichte mit Diamond schreiben. Dieses Mal werde ich meinen eigenen Diamantenkollektor mit der Funktion erstellen, die Flussrate von Tweets zu erfassen und mit Graphite + Grafana zu visualisieren.

Wenn Sie nichts über Diamond, Graphite, Grafana wissen, lesen Sie bitte die folgende Seite. Ich habe mit Diamond, einem Tool zum Sammeln von Metriken, gespielt

Machen Sie Ihren eigenen Sammler

Vorbereitung

Schreiben Sie zunächst das Verzeichnis, in dem Sie den Collector ablegen möchten, in die Datei diamant.conf.

diamond.conf


# Directory to load collector modules from
collectors_path = /usr/share/diamond/collectors/

Wenn Sie es beispielsweise normal mit Ubuntu installieren, sieht es wie oben aus. In diesem Fall wird auf den Kollektor in / usr / share / diamant / collectors verwiesen. In dem diesmal vorgestellten Beispiel wurde der Kollektor nach Hause verschoben und der Pfad wie folgt festgelegt.

diamond.conf


# Directory to load collector modules from
collectors_path = /home/risuo/local/projects/risuo-diamond-collecter/collectors

Wenn Sie sich für das Collector-Verzeichnis entschieden haben, erstellen Sie ein Verzeichnis mit dem Namen "twitter" und eine Datei mit dem Namen "twitter.py". Der Baum ist wie folgt.

-[9432]% pwd
/home/risuo/local/projects/risuo-diamond-collecter/collectors
-[9433]% tree twitter
twitter
├── twitter.py
└── twitter.pyc

Was du machen willst

Dieses Mal habe ich einen Kollektor mit den folgenden Funktionen erstellt

Da ich Graphite wie zuvor verwendet habe, handelt es sich um einen Datenfluss von TwitterCollector-> GraphiteHandler-> Graphite.

Implementierung

Ich habe es so geschrieben. https://gist.github.com/risuoku/324ba24a8f5ed8de1ff8

Grundsätzlich implementieren Sie eine Erfassungsmethode, die Metriken sammelt und veröffentlicht (eine Methode, die Metriken an den Handler übergibt). In der obigen Implementierung verwenden wir außerdem ein selbst erstelltes Tool (Stapi), um Tweepy zu verpacken und die Obergrenze der API-Einschränkungen künstlich zu erweitern. stapi: https://github.com/risuoku/stapi

Was wurde gemacht

Wir sammeln 7 öffentliche Listen.

Ansicht in Grafana

grafana_3.png

Da es zum Beispiel schwer zu sehen ist, vergrößern Sie unten links. grafana_4.png

Wenn man sich die Zeitspanne eines Tages ansieht, sieht es so aus grafana_5.png

Flüsterdatei anzeigen

Werfen wir einen direkten Blick auf die Flüsterdatei von Graphite.

-[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

Die linke Spalte ist die Unix-Zeit und die rechte Spalte ist die Anzahl der Tweets. Sie können sehen, dass es alle 60 Sekunden aufgenommen wird.

Versuchen Sie so etwas wie eine Analyse

Untersuchen Sie den Unterschied in der Anzahl der Tweets je nach Tageszeit

grafana_5.png Es ist das gleiche wie das zuvor gezeigte Tagesdiagramm, aber ich werde es erneut einfügen.

Sie können sehen, dass. Es wurden sehr normale Ergebnisse erhalten.

Vergleichen wir die Anzahl der Tweets mit Wochentagen, einschließlich Samstagen und Sonntagen.

grafana_6.png

grafana_7.png

Finden Sie einen Punkt, an dem die Anzahl der Tweets besonders ist

Wenn Sie sich die Grafik unten ansehen, fällt Ihnen etwas auf?

grafana_8.png

Wenn Sie genau hinschauen, trifft es sofort um 4 Uhr morgens, wenn die Durchflussrate normalerweise recht klein sein sollte. Tatsächlich ist diese Liste eine Sammlung von Personen, die an Programmierwettbewerben interessiert sind. Als ich es nachgeschlagen habe, scheint es am 28. um 2: 00-4: 30 (JST) ein Ereignis namens MemSQL kündigt den Start [c] up an. ist. Die Haltezeit ist hier Es ist leicht zu sehen. Nachdem der Programmierwettbewerb beendet war, wollte ich verschiedene Eindrücke schreiben, und obwohl es früh am Morgen war, nahm der Fluss der Tweets zu.

grafana_9.png

Beachten Sie jedoch, dass sich die Anzahl der Proben, wenn sie wie in diesem Beispiel klein ist, ohne besonderen Grund schnell ändern kann.

Ähnliche Geschichte

Echtzeit-Aggregation und Visualisierung von Twitter-Daten mit InfluxDB, Grafana und fluentd Es kombiniert Fluent-Plugin-Twitter, ein fließendes Plug-In für Sampling aus der Streaming-API von Twitter, und InfluxDB, Grafana.

Zusammenfassung / Eindruck

Ich habe einen Diamantkollektor erstellt, der die Flussrate der Zeitachse der Liste misst, und versucht, die Daten zu sammeln und zu visualisieren. Dieses Mal habe ich einen einfachen Prototyp vorgestellt, aber im Grunde kann alles gesammelt werden, solange es sich um Zeitreihendaten handelt, also werde ich verschiedene Dinge ausprobieren und damit spielen.

Recommended Posts

Visualisieren Sie den Tweet-Fluss mit Diamond + Graphite + Grafana
Visualisieren Sie das Verhalten des Sortieralgorithmus mit matplotlib
Visualisieren Sie den Bereich der internen und externen Einfügungen mit Python
Visualisieren Sie das charakteristische Vokabular eines Dokuments mit D3.js.
Zusammenfassung des grundlegenden Ablaufs des maschinellen Lernens mit Python
Visualisieren Sie mit OpenCV den Wertschätzungsstatus von Kunstwerken
Visualisieren Sie die Ergebnisse von Entscheidungsbäumen, die mit Python scikit-learn erstellt wurden
Verfolgen Sie den Kommunikationsfluss der Docker-Bridge-Verbindung mit nftables
Stellen wir uns die Anzahl der mit Matplotlib mit dem Coronavirus infizierten Personen vor
Visualisieren Sie den Antwortstatus der Volkszählung 2020
Ich habe versucht, die Altersgruppe und die Ratenverteilung von Atcoder zu visualisieren
Ich habe versucht, den Text des Romans "Wetterkind" mit Word Cloud zu visualisieren
Richten Sie die Größe der Farbleiste an der Matplotlib aus
Visualisieren Sie den Grenzwert des mehrschichtigen Perzeptrons
Überprüfen Sie die Existenz der Datei mit Python
Visualisieren Sie die Auswirkungen von Deep Learning / Regularisierung
Emotionale Analyse von Tweets mit Deep Learning
Die dritte Nacht der Runde mit für
Die zweite Nacht der Runde mit für
Visualisieren Sie die Exportdaten des Piyo-Protokolls
Holen Sie sich viele Ihrer Tweets mit Tweepy
Zählen Sie die Anzahl der Zeichen mit Echo
Simulieren wir den Übergang der Infektionsrate in Bezug auf die Bevölkerungsdichte mit Python