Visualisierung von IP-Adressen auf einer Weltkarte mit Grafana

Brunnen, Dieses Dokument ist etwas Besonderes, da es eine Reihe von öffentlichen IP-Adressen in einer MySQL-Tabelle hatte, dass ich es in Grafana visualisieren möchte. Im Grunde spreche ich von den Besuchen des Blogs 🙂, ich habe ein WordPress und ich habe die Datenbank nicht in meinem Besitz, da sie auf einem externen Hosting liegt… Ich überlasse Ihnen die Schritte, die ich befolgt habe, um es zu erreichen, Ich hoffe, dass es für andere Ideen nützlich sein kann.

Was ich gesagt habe, Ich habe eine Tabelle in einer Datenbank, in der ich einige öffentliche IPs habe, Was ist das WordPress dieses Blogs?, aber hey, ich habe keinen direkten Zugriff auf die DB, da sie sich auf einem Hosting befindet, Nein? Ich hatte mehrere Möglichkeiten, Ich stelle mir vor, dass WordPress eine API hat, die ich direkt oder eher manuell angreifen kann, aber die für andere Tabellen, die ich da draußen habe, nützlich sein kann.

Was mich interessiert, ist nur eine Tabelle, die die IPs der Besucher des Blogs hat, die in WordPress gespeichert werden, wenn in wp_statistics_visitor wir das Plugin "WP Statistics" in WordPress installiert haben. Die einzige Möglichkeit, die ich mir vorstellen konnte, um diese Daten zu exportieren, War… vom Hosting selbst (SSH aktiviert hat), Erstellen eines Skripts und Belassen Sie es in einer geplanten Aufgabe (über Cron) die täglich läuft (am 23:30). Dieses Skript wird, wie Sie sehen können, in einer txt-Datei hinterlassen (durch Kommas getrennt) die öffentliche IP und das Datum. Ich lasse dich saca_visitantes.sh:

ECHO "IP AUSWÄHLEN, LAST_COUNTER VON wp_statistics_visitor, wobei LAST_COUNTER = CURDATE( );" | mysql -uUSERNAME -pPASSWORD NOMBRE_BD | sed 's/\t/,/g' &AMPERE;Gt; web/bujarra.com/public_html/temp/direcciones_ip.txt


Eine Minute später, Auf einem anderen Rechner nehme ich diese Textdatei und importiere sie in eine lokale MySQL-Datenbank, Wo kann ich mit diesen Daten spielen?. Was meine ich mit spielen?? Nun, dank ipstack können wir den Standort von öffentlichen IPs ermitteln, ipstack stellt uns einen kostenlosen API-KEY von bis zu 10.000 Monatliche Konsultationen, Es ist also von einigem Nutzen für uns, Oder, wie es in meinem Fall der Fall ist, wir können so viele Konten in ipstack generieren, wie Ihre Anforderungen 😉 erfüllen

Deshalb, mit dem folgenden Skript (Was, ich gebe zu, besser gemacht werden kann, Aber genau darum geht mein Wissen…) Wir können zwei zusätzliche Spalten zur IP hinzufügen, die Felder "Breitengrad" und "Längengrad". Von dem, was wir im Drehbuch interpretieren können, Zuerst laden wir die txt-Datei herunter, dann importieren wir es in MySQL; und am Ende werden wir dank dieser API jede importierte Zeile ändern und die Latitude-Felder hinzufügen & Länge. Falls es Ihnen hilft, Ich lasse dich importa_direcciones_ip.sh:

#!/bin/bash
/usr/bin/curl 'http://www.bujarra.com/temp/direcciones_ip.txt' &AMPERE;Gt; /Startseite/Hektor/bujarra_direcciones_ip.txt mysqlimport --ignore-lines=1 --fields-terminated-by=, --verbose --local -uUSER -pPASSWORD -h SERVIDOR_MYSQL NOMBRE_BD bujarra_direcciones_ip.txt TOT_LINEAS='echo "ANZAHL AUSWÄHLEN(*) VON bujarra_ips WOBEI DATUM = CURDATE();" | mysql -h SERVIDOR_MYSQL -uUSER -pPASSWORD NOMBRE_BD' TOT_LINEAS=${TOT_LINEAS:8}
TOT_LINEAS=$(( $TOT_LINEAS - 1 ))

während [ $TOT_LINEAS -gt -1 ]
do IP='echo "WÄHLEN SIE IP AUS bujarra_ips WOBEI DATUM = CURDATE() order BY IP desc LIMIT $TOT_LINES,1;" | mysql -h SERVIDOR_MYSQL -uUSER -pPASSWORD NOMBRE_BD' IP=${IP:3}
  ECHO "IP: $IP"
  Locke "HTTP (Englisch)://api.ipstack.com/$IP?access_key=NUESTRO_TOKEN&AMPERE;AMPERE;%20fields=Breitengrad,Länge&AMPERE;AMPERE;format=2" &AMPERE;Gt; direcciones_ip.txt LATITUDE='Katze direcciones_ip.txt | grep -o -P '(?&AMPERE;Lt;=Breitengrad":).*(?=,"Länge)'`
  LONGITUD=`cat direcciones_ip.txt | grep -o -P '(?&AMPERE;Lt;=Länge":).*(?=})'`
  echo "UPDATE bujarra_ips SET latitude=$LATITUD, longitud=$LONGITUD WHERE IP = '$IP';" | mysql -h SERVIDOR_MYSQL -uUSERNAME -pPASSWORD NOMBRE_BD echo "TOT_LINEAS: $TOT_LINEAS"
  TOT_LINEAS=$(( $TOT_LINEAS - 1 ))
Fertig

Brunnen, Falls sich jemand fragt, welches Format die Zieltabelle hat… Es ist sehr einfach, Hat 5 Felder, IP, Datum, Breite, Länge und Zeitstempel, Wenn Sie den Code zum Erstellen der Tabelle benötigen, überlasse ich Ihnen diesen Code zum Erstellen:

TABELLE 'bujarra_ips' ERSTELLEN (
  'IP'-ZEICHEN(20) NICHT NULL,
  'Datum' ZEICHEN(20) NICHT NULL,
  'latitude' ZEICHEN(20) NICHT NULL,
  'Länge' ZEICHEN(20) NICHT NULL,
  'timestamp' TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP BEI UPDATE CURRENT_TIMESTAMP
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
;

Jetzt, da wir die Daten in der Nähe unseres Grafana haben, haben wir sie gesaugt, Nein? Wir haben bereits einen Konnektor oder eine Datenquelle für die MySQL-Datenbank erstellt, und wir müssen auch die Weltkarten-Panel, die, wie wir auf der Registerkarte Installation sehen, mit einem einfachen Befehl installieren. Nach diesen Prämissen werden wir in der Lage sein, ein Panel innerhalb eines Dashboards zu erstellen, Wir wählen aus, ob wir eine Abfrage oder Abfrage für die Datenquelle durchführen möchten, die eine Verbindung zur MySQL-Datenbank herstellt, in der wir die IPs mit ihrem Breiten- und Längengrad speichern. Diese Abfrage kann für uns nützlich sein:

WÄHLEN SIE UNIX_TIMESTAMP('Zeitstempel') Also time_sec,
  'latitude' als Breitengrad,
  'Längengrad' als Längengrad,
  ZÄHLEN('geistiges Eigentum') AS-Wert,
  'ip' als Name VON bujarra_ips WO $__timeFilter('Zeitstempel')
GRUPPIEREN NACH 'ip' SORTIEREN NACH 'Zeitstempel' ASC

In den Anzeigeoptionen geben wir an, dass die “Standortdaten” ist Tabelle und unten müssen wir die Felder angeben, die die Breiten- und Längengraddaten liefern, die in dieser Tabelle Breitengrade sind & Länge. Wir nehmen die Wertespalte als Metrikfeld, dass in der Abfrage, wenn Sie, ist die Summe der Male, die die IP in der Tabelle erscheint. Wenn wir wollen, Wir können die Größe des Kreises definieren, oder in “Optionen für Schwellenwerte” Geben Sie an, welche Farbe Sie malen werden, abhängig von den Besuchen, die Sie bei uns gemacht haben.

Wenn alles gut für Sie gelaufen ist, wird die Position jeder öffentlichen IP, die Sie in der Tabelle haben, auf einer Karte dargestellt werden, Jetzt können Sie mit den Daten spielen, um mehr oder weniger Daten zu visualisieren. Ich verstehe, dass es sich um einen Beitrag handelt, wie ich Ihnen zuvor etwas Bestimmtes gesagt habe, aber zumindest soll es Ihnen Ideen geben, wie Sie öffentliche IPs ausnutzen können, die wir in Tabellen eines Datenbankdienstes wie SQL gespeichert haben, MySQL (Englisch), MariaDB… Wie immer hoffe ich, dass Sie es interessant fanden!

Empfohlene Beiträge

Verfasser

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, Zögern Sie nicht, mich zu kontaktieren, Ich werde versuchen, dir zu helfen, wann immer ich kann, Teilen ist Leben ;) . Genießen Sie Dokumente!!!