_____
.xiX*****Xix.
.X7' '4Xk,
dXl 'XX. .
xXXl XXl .
4XXX XX'
. ,x iX' _,,xxii
| ²| ,iX7,xiiXXXXXXXl
| .xi,xiXXXXXXXXXXXX:
. ..iXXiXXXXXXXXXXXXXXX7.
. .xXXXXXXXXXXXXXXX'XXXX7 .
| ,XXXXXXXXXXXXXXXX'XXX7' |
: .XXXXX7*'"' 2XXX7'XX7' |
__/ _____ ____ XX' _____ 47' ___ ___ _____ __
.\_ ___/ _ __/ _/_______ _/______/ / ____/ _ ___/ _____
. / __ Y _ __ __ _________ _____ // ____ _ _ ______ / __///
:/ / | |' / / / / Y / :
|______/_________/____| /____ /_____/_____/____|____/_______/ |
+--------------------- ____/ --- ____/ ----:----------------------h7/dS!----+
. | :
: . : |
| . Logswan . |
| : . |
|_|_______________________|__|
| :
.
Logswan est un analyseur de journaux Web rapide utilisant des structures de données probabilistes. Il est destiné aux fichiers journaux très volumineux, généralement les journaux des API. Il a une utilisation constante de la mémoire quelle que soit la taille du fichier journal et prend environ 4 Mo de RAM.
Le comptage des visiteurs uniques est effectué à l'aide de deux compteurs HyperLogLog (un pour IPv4 et un autre pour IPv6), offrant une précision relative de 0,10 %. Les représentations sous forme de chaîne des adresses IP sont utilisées et préférées car elles offrent une meilleure précision.
Les objectifs de conception du projet incluent : la vitesse, l’efficacité de l’utilisation de la mémoire et le maintien du code aussi simple que possible.
Logswan est un logiciel avisé :
Logswan est écrit dans un souci de sécurité et fonctionne en sandbox sur OpenBSD (en utilisant Gage). La prise en charge expérimentale de seccomp est disponible pour les architectures sélectionnées et peut être activée en définissant la variable ENABLE_SECCOMP
sur 1
lors de l'appel de CMake. Il a également été largement fuzzé à l'aide d'AFL et de Honggfuzz.
Fonctionnalités actuellement implémentées :
Logswan utilise le système de construction CMake
et nécessite les bibliothèques et fichiers d'en-tête Jansson
et libmaxminddb
.
pkg_add -r cmake jansson libmaxminddb
pkgin in cmake jansson libmaxminddb
pkg install cmake jansson libmaxminddb
brew install cmake jansson libmaxminddb
apk add cmake gcc make musl-dev jansson-dev libmaxminddb-dev
apt-get install build-essential cmake libjansson-dev libmaxminddb-dev
dnf install cmake gcc make jansson-devel libmaxminddb-devel
mkdir build
cd build
cmake ..
make
Logswan a été construit et testé avec succès sur OpenBSD, NetBSD, FreeBSD, macOS et Linux avec Clang et GCC.
Les packages Logswan sont disponibles pour :
Logswan recherche les bases de données GeoIP2 dans ${CMAKE_INSTALL_PREFIX}/share/dbip
par défaut, qui pointe vers /usr/local/share/dbip
.
Un répertoire personnalisé peut être défini à l'aide de la variable GEOIP2DIR
lors de l'appel de CMake :
cmake -DGEOIP2DIR=/var/db/dbip .
La base de données gratuite DB-IP IP to Country Lite sous licence Creative Commons peut être téléchargée ici.
Alternativement, la base de données GeoLite2 Country de MaxMind peut être téléchargée gratuitement ici, mais nécessite l'acceptation d'un CLUF et n'est pas sous licence libre.
logswan [-ghv] [-d db] logfile
Si le fichier est un simple tiret (`-'), logswan lit à partir de l'entrée standard.
Les options sont les suivantes :
-d db Specify path to a GeoIP database.
-g Enable GeoIP lookups.
-h Display usage.
-v Display version.
Logswan génère les données JSON sur stdout .
Logswan est publié sous la licence BSD 2-Clause. Voir le fichier LICENSE
pour plus de détails.
Logswan est développé par Frédéric Cambus.
Page d'accueil du projet : https://www.logswan.org
GitHub : https://github.com/fcambus/logswan