Visualisieren, was wir mit Grafana telefoniert haben

gut, In diesem Beitrag werden wir etwas wie immer anders sehen und das können wir einfach zu unserer Grafana-Installation hinzufügen, und es ist nichts weiter als die Nutzung der Nutzungsdaten unserer Telefonanrufe. Ich benutze es seit langer Zeit und wollte es teilen, falls Sie interessiert waren, Ich war neugierig, wie viel ich mit dem Handy gesprochen habe, mit wem, wie sie mich nannten und ich anrief, sehen Sie es nach Zeitplänen, Menschen… Nougat!

Wir werden es über eine App tun, die auf dem Handy installiert ist, Wie beim mythischen IFTTT werden wir die verpassten Anrufe, die wir in Google Spreadsheet-Tabellen haben, aufzeichnen, die Anrufe, die wir erhalten und die Anrufe, die wir tätigen, Der Name des Kontakts wird in denselben Blättern gespeichert, Ihre Telefonnummer und die Dauer jedes Anrufs, außer wann. Jetzt mit der neuen Version von Grafana (die 7) Wir können Google Spreadsheet Sheets direkt konsultieren, aber diesmal werde ich dir einen anderen Weg zeigen, da ich es schon lange benutze und es noch nicht entwickelt habe 🙂 Was ich bisher mache ist, Verwenden einer Aufgabe, die mit einem Cron auf einem Linux-Computer geplant ist (es könnte Grafana selbst sein), Nun, ich lade die Tabellen herunter und speichere sie dann in einer MySQL-Datenbank. Und es wird diese BD sein, die wir mit Grafana visualisieren, in der Lage sein, unser Dashboard nach unseren Wünschen zu gestalten!

Wir beginnen mit dem, was gesagt wurde, Auf unserem Handy werden wir IFTTT installieren, und wir werden drei Automatisierungen hinzufügen:

  • Protokollieren Sie die Anrufe, die Sie auf Ihrem Android-Telefon erhalten, automatisch in einer Google-Tabelle
  • Protokollieren Sie die auf Ihrem Android-Telefon getätigten Anrufe automatisch in einer Google-Tabelle
  • Anrufliste, Verpasster Anruf

Wir werden jeden von ihnen so konfigurieren, dass wir alle diese Datensätze in einer anderen Tabelle speichern. Denken Sie auf Ihrem Mobiltelefon daran, dass diese App weiterhin im Hintergrund ausgeführt werden kann und dass der Akku des Mobiltelefons keine Einschränkungen aufweist., So werden unsere Daten immer in Echtzeit ausgeführt und gespeichert.

gut, Wir beginnen mit den Skripten, die ich bisher verwendet habe, Zuerst benötigen wir dieses Python-Skript, mit dem wir Dateien von Google Drive herunterladen können (DescargaFicheroDesdeGoogleDrive.py) und dann erstelle einfach ein Skript mit bash selbst, was es tut, (ich) Leeren Sie die MySQL-Tabellen, in denen die Anrufdatensätze gespeichert werden, (ii) Jedes SpreadSheet wird heruntergeladen und lokal in CSV gespeichert, und wie Sie sehen können, transformiert oder eliminiert es übrig gebliebene Zeichen:

BajaFicheroGoogleDriveYmeteEnCSV.sh

#!/bin / bash
mysql -h MYSQL_SERVER -user -pPASSWORDBDNAME_e -e "TRUNCATE TABLE made_calls"
mysql -h MYSQL_SERVER -user -pPASSWORDBDNAME_e -e "TRUNCATE TABLE receive_calls"
mysql -h MYSQL_SERVER -user -pPASSWORDBDNAME_e -e "TRUNCATE TABLE miss_calls"

Python DownloadFicheroDesdeGoogleDrive.py llamadas_realizadas.ini
awk '{gsub(/,/,"",$2)}1'messages_made.csv &Ampere;gt; ruft_made.csv1
sed 's /"//g 'Calls_made.csv1 &Ampere;gt; calls_made.csv
mysql -h MYSQL_SERVER -uUSER -p PASSWORT DB_NAME -e "LOAD DATA LOCAL INFILE 'made_calls.csv' IN TABLE made_calls FELDER BEENDET VON ','"

Python DownloadFileFromGoogleDrive.py Calls_received.ini
awk '{gsub(/,/,"",$2)}1'receive_calls.csv &Ampere;gt; Calls_received.csv1
sed 's /"//g 'Calls_received.csv1 &Ampere;gt; Calls_received.csv
mysql -h MYSQL_SERVER -uUSER -pPASSWORD DB_NAME -e "LOAD DATA LOCAL INFILE 'receive_calls.csv' IN TABLE receive_calls FELDER BEENDET VON ','"

Python DownloadFileFromGoogleDrive.py miss_calls.ini
sed's / Missed,//g 'miss_calls.csv &Ampere;gt; miss_calls.csv1
sed 's / ,, /, / g' failed_calls.csv1 &Ampere;gt; miss_calls.csv2
awk '{gsub(/,/,"",$2)}1'miss_calls.csv2 &Ampere;gt; Missed_Calls.csv3
sed 's /"//g 'miss_calls.csv3 &Ampere;gt; miss_calls.csv
mysql -h MYSQL_SERVER -uUSER -p PASSWORT DB_NAME  "LOAD DATA LOCAL INFILE 'Missed_Calls.csv' IN TABLE Missed_Calls FELDER BEENDET VON ','"

Wie Sie sehen können, fordert uns das Python-Skript für jede Tabellenkalkulation, die wir herunterladen möchten, eine INI-Datei an, eine für getätigte Anrufe, ein anderer für die Empfangenen und ein anderer für die Verlorenen. Dies wäre das Format jeder Datei, Beispiel von “ruft_made.ini”

[fileDownloadFromDrive]
clientsecretkeypath = /PATH/api_gugel.json
Tabellenkalkulations-ID =
Dateiname = llamadas_realizadas.csv
Dateipfad = / PATH /
mimetype = text / csv

wie wir sehen,, Zum einen benötigen wir die ID des Google Sheet, Dieser Teil ist sehr einfach, Es reicht aus, das Blatt mit einem Browser zu öffnen und in der URL wird die ID kommen, Beispiel: “https://docs.google.com/spreadsheets/d/XXXXXXXXXXXXXXXXXXXXXXXX_XXXXXXXXXXXXXXXXX/edit#gid=0”. Der etwas mühsamere Teil besteht darin, die Datei mit den Zugangsdaten über die API abzurufen, Was ist die JSON-Datei?. Da es ein langer Prozess ist und das einige schon wissen werden, Das ist mehr, was wir in einem anderen Beitrag gesehen haben, Ich denke, es ist am besten, in diesem Teil die offizielle Google-Dokumentation zu belassen, Dort wird uns erklärt, dass wir ein Projekt erstellen und über OAuth Zugriff gewähren müssen 2.0, überprüfen: https://developers.google.com/sheets/api/guides/authorizing. Sobald wir die IDs jedes Blattes und des JSON mit den Zugangsdaten haben, können Sie das obige Skript ausprobieren, Einmal validiert, geht es darum, es in einen Cron zu legen und es mit der Periorität auszuführen, die uns interessiert.

Dies wird, wie Sie sehen werden, in gespeichert 3 verschiedene Tabellen in einem MySQL, Ich überlasse Ihnen den Code zum Erstellen einer Beispieltabelle, Sind die 3 gleiche Tabellen, außer dass der von Missed_Calls keine Duration-Spalte hat, und wie wir sehen, speichert das Wann war der Anruf, Die Telefonnummer, den Namen, wie wir ihn auf der Tagesordnung unseres Mobiltelefons haben, und die Dauer des Anrufs:

CREATE TABLE `made_calls` (
`wann` CHAR(50) NULL COLLATE 'utf8mb4_general_ci',
`Telefon` CHAR(50) NULL COLLATE 'utf8mb4_general_ci',
`name` CHAR(50) NULL COLLATE 'utf8mb4_general_ci',
`duracion` FLOAT NULL
)
COLLATE = 'utf8mb4_general_ci'
ENGINE = InnoDB;

gut, Nun, mit all dem fertig, Wir konnten unsere Zeichnungen bereits in Grafana nach Belieben anfertigen, wie wir sehen, Wir haben einige Textfelder, in denen wir die Summe auf dem Telefon sehen, was wir genannt haben, wie sie uns genannt haben, Die Gesamtzahl der empfangenen oder getätigten Anrufe. Beachten Sie, dass all dies mit dem von uns ausgewählten Datumszeitraum gefiltert wird, So können wir zum Beispiel die Daten der letzten Woche sehen, des Monats… und Sie werden die Zeit halluzinieren, die wir damit verbringen, am Gerät zu hängen. Und wir können die Daten so visualisieren, wie wir wollen, Eine grafische Darstellung der gesprochenen Zeiten, in denen Sie beim Bewegen der Maus angeben, wer, oder eine Tabelle der gesamten akkumulierten Zeit, sowie einige Käsesorten, bei denen wir sehen werden, mit wem wir am meisten telefonieren.

Ich hinterlasse Ihnen einige Beispiele, die ich in diesem Bild habe, und füge hier die Abfragen ein, die ich gemacht habe, ja, Denken Sie zunächst daran, den Connector von Grafana zu Ihrer MySQL-Datenbank herzustellen, seit der “Datenquellen”.

Insgesamt am Telefon:

SELECT Summe(Dauer)
VON (
SUMME AUSWÄHLEN(Dauer) als Dauer FROM Aufrufe_made WHERE STR_TO_DATE(wann, '% M% d% Y bei% l:%i% p ') $__timeFilter()
Gewerkschaft alle
SUMME AUSWÄHLEN(Dauer) as Duration FROM receive_calls WHERE STR_TO_DATE(wann, '% M% d% Y bei% l:%i% p ') $__timeFilter()
) ein

Insgesamt angerufen:

SUMME AUSWÄHLEN(Dauer) FROM llamadas_realizadas WHERE STR_TO_DATE(wann, '% M% d% Y bei% l:%i% p ') $__timeFilter()


Insgesamt erhalten:

SUMME AUSWÄHLEN(Dauer) FROM llamadas_recibidas WHERE STR_TO_DATE(wann, '% M% d% Y bei% l:%i% p ') $__timeFilter()

Gesamtzahl der eingegangenen Anrufe:

SELECT count(*) FROM llamadas_recibidas WHERE STR_TO_DATE(wann, '% M% d% Y bei% l:%i% p ') $__timeFilter()


Insgesamt getätigte Anrufe:

SELECT count(*) FROM llamadas_realizadas WHERE STR_TO_DATE(wann, '% M% d% Y bei% l:%i% p ') $__timeFilter( )

Diagramm der Anrufe und ihrer Dauer (der mit den Punkten)
Metrische Anrufe getätigt:

WÄHLEN Sie Duracion als Wert, Nombre als Metrik, DATE_SUB(TIMESTAMP(str_to_date(wann, '% M% d% Y bei% l:%i% p ')), INTERVALL 2 STUNDE) als time_sec FROM llamadas_realizadas WHERE STR_TO_DATE(wann, '% M% d% Y bei% l:%i% p ') $__timeFilter( ) ORDER BY time_sec ASC;

Metrik für empfangene Anrufe:

WÄHLEN Sie Duracion als Wert, Nombre als Metrik, DATE_SUB(TIMESTAMP(str_to_date(wann, '% M% d% Y bei% l:%i% p ')), INTERVALL 2 STUNDE) als time_sec FROM llamadas_recibidas WHERE STR_TO_DATE(wann, '% M% d% Y bei% l:%i% p ') $__timeFilter( ) ORDER BY time_sec ASC;

Metriken Anrufe getätigt:

WÄHLEN 0 als Wert, Nombre als Metrik, DATE_SUB(Zeitstempel(str_to_date(wann, '% M% d% Y bei% l:%i% p ')), INTERVALL 2 STUNDE) als time_sec FROM llamadas_perdidas WHERE STR_TO_DATE(wann, '% M% d% Y bei% l:%i% p ') $__timeFilter( ) ORDER BY time_sec ASC;

Diagramm der Dauer der empfangenen und getätigten Anrufe

Metrische Anrufe getätigt:

wählen (@Summe := @sum + Dauer) als Wert, "Erreicht" als Metrik, DATE_SUB(Zeitstempel(str_to_date(wann, '% M% d% Y bei% l:%i% p ')), INTERVALL 2 STUNDE) als time_sec FROM llamadas_realizadas cross join (Wählen Sie @sum := 0) params WHERE STR_TO_DATE(wann, '% M% d% Y bei% l:%i% p ') $__timeFilter( );

Metrik für empfangene Anrufe:

wählen (@Summe := @sum + Dauer) als Wert, "Empfangen" als Metrik, DATE_SUB(Zeitstempel(str_to_date(wann, '% M% d% Y bei% l:%i% p ')), INTERVALL 2 STUNDE) als time_sec FROM llamadas_recibidas cross join (Wählen Sie @sum := 0 ) params WHERE STR_TO_DATE(wann, '% M% d% Y bei% l:%i% p ') $__timeFilter( );

Käse von empfangenen Anrufen:

WÄHLEN Sie Duracion als Wert, Nombre als Metrik, DATE_SUB(Zeitstempel(str_to_date(wann, '% M% d% Y bei% l:%i% p ')), INTERVALL 2 STUNDE) als time_sec FROM llamadas_recibidas WHERE STR_TO_DATE(wann, '% M% d% Y bei% l:%i% p ') $__timeFilter( ) ORDER BY time_sec ASC;


Käse für Anrufe gemacht:

WÄHLEN Sie Duracion als Wert, Nombre als Metrik, DATE_SUB(Zeitstempel(str_to_date(wann, '% M% d% Y bei% l:%i% p ')), INTERVALL 2 STUNDE) als time_sec FROM llamadas_realizadas WHERE STR_TO_DATE(wann, '% M% d% Y bei% l:%i% p ') $__timeFilter( )ORDER BY time_sec ASC;

Ich hoffe du bist interessiert und kannst dir für etwas dienen, nicht nur so, Wenn nicht für andere Ideen und Sie möchten diese Daten nutzen, Ich werde Ihnen in Kürze ein weiteres Beispiel geben, in diesem Fall aus E-Mails, Es ist auch interessant zu wissen, wie viele E-Mails wir empfangen oder senden… ich sagte:, wie immer, vielen Dank für Ihre Zeit!