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
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
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.
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
Wir sammeln 7 öffentliche Listen.
Da es zum Beispiel schwer zu sehen ist, vergrößern Sie unten links.
Wenn man sich die Zeitspanne eines Tages ansieht, sieht es so aus
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.
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.
Wenn Sie sich die Grafik unten ansehen, fällt Ihnen etwas auf?
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.
Beachten Sie jedoch, dass sich die Anzahl der Proben, wenn sie wie in diesem Beispiel klein ist, ohne besonderen Grund schnell ändern kann.
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.
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