Anzeigen von IP-Adressen auf einer Weltkarte mit Grafana

gut, Dieses Dokument ist etwas Besonderes, da ich in einer MySQL-Tabelle eine Reihe von öffentlichen IP-Adressen hatte, Ich würde es gerne in Grafana sehen. Grundsätzlich spreche ich über die Besuche des Blogs. Ich habe ein WordPress und ich habe die Datenbank nicht in meinem Besitz, da sie sich in einem externen Hosting befindet… Ich überlasse Ihnen die Schritte, denen ich gefolgt bin, um es zu bekommen, Ich hoffe, es kann für andere Ideen nützlich sein.

ich sagte:, Ich habe eine Tabelle aus einer Datenbank, in der ich öffentliche IPs habe, Was ist das WordPress dieses Blogs, Aber ich habe keinen direkten Zugriff auf die BD, da sie sich in einem Hosting befindet, Nein? Ich hatte mehrere Möglichkeiten, Ich stelle mir vor, dass WordPress eine API hat, die ich direkt angreifen oder auf manuellere Weise ausführen kann, die aber für andere Tabellen verwendet werden kann, die ich da draußen habe.

Was mich nur interessiert, ist eine Tabelle mit den IPs der Blogbesucher, dass in WordPress gespeichert wird, wenn in wp_statistics_visitor, wenn wir in WordPress das Plugin "WP Statistics" installiert haben. Der einzige Weg, den ich mir vorstellen könnte, um diese Daten zu exportieren, war… vom Hosting selbst (SSH aktiviert haben), Erstellen Sie ein Skript und belassen Sie es bei einer geplanten Aufgabe (von cron) täglich laufen (auf der 23:30). Wie Sie sehen, befindet sich dieses Skript in einer txt-Datei (durch Kommas getrennt) öffentliche IP und Datum. Ich verlasse dich saca_visitores.sh:

Echo "SELECT IP, LAST_COUNTER FROM wp_statistics_visitor where LAST_COUNTER = CURDATE( );" | mysql -uUSUARIO -pCONTRASEÑA NOMBRE_BD | sed 's/\t/,/g' &Ampere;gt; web/bujarra.com/public_html/temp/direcciones_ip.txt


Eine Minute später, Auf einem anderen Computer sammle ich diese Textdatei und importiere sie in eine lokale MySQL-Datenbank, wo ich schon mit diesen daten spielen kann. Was meine ich mit spielen?? Dank ipstack können wir den Standort öffentlicher IPs ermitteln, ipstack gibt uns einen kostenlosen API-Schlüssel bis zu 10.000 Konsultationen pro Monat, für das, was es uns wert ist, o como es mi caso podemos generar tantas cuentas en ipstack hasta cubrir vuestra demanda 😉

deshalb, mit dem folgenden Skript (was ich zugebe, kann besser gemacht werden, aber es ist das, worauf mein Wissen ankommt…) Wir können der IP zwei zusätzliche Spalten hinzufügen, die Felder Breite und Länge. Also von dem, was wir im Skript 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 dir hilft, Ich überlasse Ihnen importa_direcciones_ip.sh:

#!/bin/bash
/usr/bin/curl 'http://www.bujarra.com/temp/direcciones_ip.txt' &Ampere;gt; /home/hector/bujarra_direcciones_ip.txt
mysqlimport --ignore-lines=1 --fields-terminated-by=, --verbose --local -uUSUARIO -pCONTRASEÑA -h SERVIDOR_MYSQL NOMBRE_BD bujarra_direcciones_ip.txt
TOT_LINEAS=`echo "plugin --mode=sql --host=DIRECCION_IP_HONEYPOT --port=9999 --database=chameleon --username=changeme027a088931d22 --password=changeme0f40773877963 --sql-statement=(*) FROM bujarra_ips WHERE fecha = CURDATE();" | mysql -h SERVIDOR_MYSQL -uUSUARIO -pCONTRASEÑA NOMBRE_BD`
TOT_LINEAS=${TOT_LINEAS:8}
TOT_LINEAS=$(( $TOT_LINEAS - 1 ))

while [ $TOT_LINEAS -gt -1 ]
do
  IP=`echo "SELECT ip FROM bujarra_ips WHERE fecha = CURDATE() order BY IP desc LIMIT $TOT_LINEAS,1;" | mysql -h MYSQL_SERVER -uUSER -p PASSWORT DB_NAME`
  IP = ${IP:3}
  Echo "IP: $IP"
  locken "http://api.ipstack.com/$IP?access_key = NUESTRO_TOKEN&Ampere;Ampere;%20Felder = Breitengrad,Längengrad&Ampere;Ampere;Format = 2" &Ampere;gt; ip_address.txt
  LATITUD = `cat ip_address.txt | grep -o -P '(?&Ampere;lt;= Breitengrad":).*(?=,"Längengrad)'' '
  LENGTH = `cat ip_address.txt | grep -o -P '(?&Ampere;lt;= Länge":).*(?=})'`
  Echo "UPDATE bujarra_ips SET Latitude = $ LATITUD, longitud = $ LONGITUD WHERE IP = '$ IP';" | mysql -h MYSQL_SERVER -uUSER -p PASSWORT DB_NAME
  rauswerfen "TOT_LINEAS: $TOT_LINEAS"
  TOT_LINEAS=$(( $TOT_LINEAS - 1 ))
erledigt

gut, falls sich jemand fragt, welches Format die Zieltabelle hat… es ist sehr einfach, Sie haben 5 Felder, IP, Datum, Breitengrad, Länge und Zeitstempel, Wenn Sie den Code zum Erstellen der Tabelle benötigen, lasse ich Sie diesen Code erstellen:

TABELLE ERSTELLEN `bujarra_ips` (
  `IP` CHAR(20) NICHT NULL,
  `date` CHAR(20) NICHT NULL,
  `Breite` CHAR(20) NICHT NULL,
  `Länge` CHAR(20) NICHT NULL,
  `timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)
COLLATE = 'latin1_swedish_ci'
ENGINE = InnoDB
;

Jetzt, wo wir die Daten in der Nähe unserer Grafana haben, haben wir sie gesaugt, Nein? Wir haben bereits einen Connector oder eine Datenquelle für die MySQL-Datenbank erstellt und müssen auch die installiert haben Worldmap Panel, Wie wir auf der Registerkarte Installation sehen, installieren wir es mit einem einfachen Befehl. Nach diesen Prämissen können wir bereits ein Panel in einem Dashboard erstellen, Wir werden auswählen, ob eine Abfrage oder eine Abfrage für die DataSource durchgeführt werden soll, die eine Verbindung zur MySQL-Datenbank herstellt, in der wir die IPs mit ihrem Breiten- und Längengrad speichern. Diese Frage kann uns wert sein:

WÄHLEN
UNIX_TIMESTAMP(`Zeitstempel`) als time_sec,
  "Breitengrad" als Breitengrad,
  `Längengrad` als Längengrad,
  ANZAHL(`ip`) AS-Wert,
  `ip` als Name
FROM bujarra_ips
WO $ __ timeFilter(`Zeitstempel`)
GRUPPE NACH "ip"
ORDER BY `timestamp` 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, welche in dieser Tabelle sind Breitengrad & Längengrad. Wir werden die Wertespalte als metrisches Feld nehmen, das in der Abfrage, wenn Sie schauen, ist die Summe der Zeiten, zu denen diese IP in der Tabelle angezeigt wird. Wenn wir wollen,, Wir können die Größe des Kreises definieren, oder “Schwellenwertoptionen” Geben Sie an, welche Farbe es malen wird, abhängig von den Besuchen, die Sie bei uns gemacht haben.

Wenn alles gut gegangen ist, haben Sie die Position jeder öffentlichen IP, die Sie in der Tabelle haben, auf eine Karte gemalt, Jetzt können Sie mit den Daten spielen, um mehr oder weniger Daten anzuzeigen. Ich verstehe, dass es ein Beitrag ist, wie ich Ihnen vor etwas Bestimmtem gesagt habe, Aber zumindest soll es Ihnen Ideen geben, wie Sie öffentliche IP-Adressen ausnutzen können, die wir in Tabellen einiger Datenbankdienste wie SQL gespeichert haben, MySQL, MariaDB… Wie immer hoffe ich, dass Sie es interessant fanden!

Letzte Artikel von Hector Herrero (Alle anzeigen)