Simpleton ist eine absolut einfache UDP-zu-Datenbank-Protokollierungslösung, die lediglich UDP-Pakete akzeptiert und sie in einer SQLite3-Datenbank speichert. Standardmäßig werden sie in simpleton.db
im aktuellen Verzeichnis gespeichert, Sie können dies jedoch mit Befehlszeilenoptionen überschreiben.
Dies ist für nichts anderes als wirklich einfache Tests besonders nützlich, aber Sie können es erweitern.
Um Simpleton zu erstellen, führen Sie einfach make
aus und die Binärdatei wird im bin
Verzeichnis angezeigt. Standardmäßig wird es für OSX erstellt.
make
Um für andere Plattformen zu erstellen, bearbeiten Sie bitte die Variablen GOOS
und GOARCH
im Makefile
. Sie können diese Parameter auch wie folgt in der Befehlszeile eingeben, wenn Sie make
ausführen.
GOOS=linux GOARCH=amd64 make
Sie können die Werte für diese Variablen für verschiedene Plattformen in syslist.go finden, aber die häufigsten Werte sind:
Betriebssystem | GOOS | GOARCH |
---|---|---|
OSX | Darwin | amd64 |
Linux | Linux | amd64 |
Windows | Fenster | amd64 |
Natürlich können Sie eine Cross-Kompilierung durchführen (z. B. Linux-Binärdateien auf OSX-Rechnern kompilieren), indem Sie einfach die richtige Kombination von GOOS und GOARCH festlegen. Unter Windows könnten jedoch Probleme auftreten. (Ich habe das nicht für Windows erstellt).
Die Binärdatei wird in bin
angezeigt, sodass Sie sie vom Hauptverzeichnis aus ausführen können mit:
bin/simpleton
Um die Befehlszeilenoptionen aufzulisten, verwenden Sie das Flag -h
:
bin/simpleton -h
Hier ist ein Beispiel für die Ausführung von Simpleton mit Optionen, um eine bestimmte Schnittstelle (im Beispiel 10.1.0.3) und einen Port (7788) abzuhören und die Datenbank in /tmp/simpleton.db
zu speichern:
bin/simpleton -u 10.1.0.3:7788 -d /tmp/simpleton.db
Wenn Sie in der resultierenden Datenbank herumstöbern möchten, können Sie SQLite3 auf Ihrem Computer installieren und die Datenbank mit dem Befehl sqlite3
überprüfen. Um die Datenbank im vorherigen Beispiel zu öffnen, führen Sie einfach Folgendes aus:
sqlite3 /tmp/simpleton.db
Geben Sie .schema
ein, um das sehr einfache Datenbankschema anzuzeigen. Sie können nun SQL-Anweisungen für die Daten ausführen.
Hinweis: Ich bin mir über die Parallelität von SQLite3 nicht ganz sicher, daher würde ich die Datenbank nicht als Integrationspunkt verwenden (das sollten Sie niemals tun).
Aus diesem Grund verfügt der Code auch über eine Mutex-Sperre für Datenbankzugriffe. Der Code stammt aus einem Projekt, bei dem mehrere Goroutinen auf die Datenbank zugreifen. Dieses Programm hat das nicht, aber ich habe die Mutex-Sperre nur zur Erinnerung beibehalten.
Für Produktionszwecke sollten Sie eine PostgreSQL-Datenbank oder eine ähnliche Datenbank verwenden, die auf Parallelität ausgelegt ist. Aber für kleine Experimente und wenn die Parallelität begrenzt ist, ist SQLite3 ein überraschend leistungsfähiges kleines Biest.
Beachten Sie, dass die HTTP-Schnittstelle über keine Authentifizierungs- oder Sicherheitsmechanismen verfügt. Verwenden Sie sie daher nur für Tests. Die Standardadresse der Weboberfläche lautet:
http://localhost:8008/
Die Weboberfläche ist recht einfach. Sie haben zwei URLs, die auf Daten zugreifen:
/data
/data/{id}
Der erste gibt ein JSON-Array zurück, der zweite gibt nur die Nutzlast des durch die ID angegebenen Dateneintrags zurück. Der /data
Pfad ist auf die 20 neuesten Einträge in der Datenbank beschränkt, Sie können jedoch durch die Datenbank blättern, indem Sie offset
und limit
-URL-Parameter festlegen:
/data?offset=10&limit=10
Simpleton unterstützt ein Verzeichnis mit statischen Dateien, sodass Sie einige HTML-Seiten mit nützlichen Links zum Inhalt erstellen oder vielleicht JS-Frontend-Anwendungen hosten können.
Sehen Sie in der Befehlszeilenhilfe nach, mit welchen Parametern Sie experimentieren können.