Simpleton est une solution de journalisation UDP vers base de données très simple qui accepte simplement les paquets UDP et les stocke dans une base de données SQLite3. Par défaut, il les stocke dans simpleton.db
dans le répertoire courant, mais vous pouvez remplacer cela avec des options de ligne de commande.
Ce n'est pas très utile pour autre chose que des tests très simples, mais vous pouvez le développer.
Pour construire simpleton, exécutez simplement make
et le binaire apparaîtra dans le répertoire bin
. Par défaut, il sera construit pour OSX.
make
Pour créer pour d'autres plates-formes, veuillez modifier les variables GOOS
et GOARCH
dans le Makefile
. Vous pouvez également saisir ces paramètres sur la ligne de commande lorsque vous exécutez make
, comme ceci.
GOOS=linux GOARCH=amd64 make
Vous pouvez trouver les valeurs de ces variables pour différentes plates-formes dans syslist.go, mais les valeurs les plus courantes sont :
Système d'exploitation | GOOS | GOARCHE |
---|---|---|
OS X | darwin | amd64 |
Linux | Linux | amd64 |
Fenêtres | fenêtres | amd64 |
Bien sûr, vous pouvez effectuer une compilation croisée (par exemple, compiler des binaires Linux sur des machines OSX) en définissant simplement la bonne combinaison de GOOS et GOARCH, même si sous Windows, vous pourriez rencontrer des problèmes. (Je n'ai pas construit ceci pour Windows).
Le binaire apparaîtra dans bin
, vous pourrez donc l'exécuter depuis le répertoire principal avec :
bin/simpleton
Pour lister les options de ligne de commande, vous utilisez l'indicateur -h
:
bin/simpleton -h
Voici un exemple d'exécution de Simpleton avec des options pour lui faire écouter une interface particulière (10.1.0.3 dans l'exemple) et un port (7788) et stocker la base de données dans /tmp/simpleton.db
:
bin/simpleton -u 10.1.0.3:7788 -d /tmp/simpleton.db
Si vous souhaitez parcourir la base de données résultante, vous pouvez installer SQLite3 sur votre ordinateur et inspecter la base de données à l'aide de la commande sqlite3
. Pour ouvrir la base de données dans l'exemple précédent, exécutez simplement :
sqlite3 /tmp/simpleton.db
Tapez .schema
pour voir le schéma de base de données très simple. Vous pouvez désormais exécuter des instructions SQL sur les données.
Remarque : je ne suis pas entièrement sûr de la concurrence de SQLite3, je n'utiliserais donc pas la base de données comme point d'intégration (vous ne devriez jamais le faire).
C'est également pourquoi le code dispose d'un verrou mutex autour des accès à la base de données. Le code provient d'un projet dans lequel plusieurs goroutines accèdent à la base de données. Ce programme n'a pas cela, mais j'ai laissé le mutex verrouillé juste pour rappel.
Pour les utilisations en production, vous devez utiliser une base de données PostgreSQL ou similaire, conçue pour la concurrence. Mais pour les petites expériences et lorsque la concurrence est limitée, SQLite3 est une petite bête étonnamment performante.
Notez que l'interface HTTP n'a aucun mécanisme d'authentification ou de sécurité , ne l'utilisez donc pas à d'autres fins que des tests. L'adresse par défaut de l'interface web est :
http://localhost:8008/
L'interface Web est assez simple. Vous disposez de deux URL qui accèdent aux données :
/data
/data/{id}
Le premier renvoie un tableau JSON, le second renvoie uniquement la charge utile de la saisie de données donnée par ID. Le chemin /data
sera limité aux 20 entrées les plus récentes de la base de données, mais vous pouvez parcourir la base de données en définissant les paramètres d'URL offset
et limit
:
/data?offset=10&limit=10
Simpleton prend en charge la création d'un répertoire avec des fichiers statiques afin que vous puissiez créer des pages HTML avec des liens utiles vers le contenu ou peut-être pour héberger des applications frontales JS.
Consultez l'aide de la ligne de commande pour voir les paramètres que vous pouvez manipuler.