_____
.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 ist ein schneller Web-Log-Analysator, der probabilistische Datenstrukturen verwendet. Es ist auf sehr große Protokolldateien ausgerichtet, typischerweise API-Protokolle. Die Speichernutzung ist unabhängig von der Größe der Protokolldatei konstant und benötigt etwa 4 MB RAM.
Die Zählung eindeutiger Besucher erfolgt mithilfe von zwei HyperLogLog-Zählern (einer für IPv4 und einer für IPv6), was eine relative Genauigkeit von 0,10 % ergibt. String-Darstellungen von IP-Adressen werden verwendet und bevorzugt, da sie eine höhere Präzision bieten.
Zu den Zielen des Projektdesigns gehören: Geschwindigkeit, Speichernutzungseffizienz und möglichst einfacher Code.
Logswan ist eine eigenständige Software :
Logswan wurde unter Berücksichtigung der Sicherheit geschrieben und läuft in einer Sandbox unter OpenBSD (mit Pledge). Experimentelle Seccomp-Unterstützung ist für ausgewählte Architekturen verfügbar und kann aktiviert werden, indem die Variable ENABLE_SECCOMP
beim Aufruf von CMake auf 1
gesetzt wird. Es wurde auch umfassend mit AFL und Honggfuzz gefuzzt.
Derzeit implementierte Funktionen:
Logswan verwendet das CMake
Build-System und erfordert Jansson
und libmaxminddb
-Bibliotheken und Header-Dateien.
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 wurde erfolgreich auf OpenBSD, NetBSD, FreeBSD, macOS und Linux mit Clang und GCC erstellt und getestet.
Logswan-Pakete sind verfügbar für:
Logswan sucht standardmäßig nach GeoIP2-Datenbanken in ${CMAKE_INSTALL_PREFIX}/share/dbip
, was auf /usr/local/share/dbip
verweist.
Ein benutzerdefiniertes Verzeichnis kann mithilfe der Variablen GEOIP2DIR
beim Aufrufen von CMake festgelegt werden:
cmake -DGEOIP2DIR=/var/db/dbip .
Die kostenlose, von Creative Commons lizenzierte Datenbank DB-IP IP to Country Lite kann hier heruntergeladen werden.
Alternativ kann die GeoLite2-Länderdatenbank von MaxMind hier kostenlos heruntergeladen werden, erfordert jedoch die Annahme einer EULA und ist nicht frei lizenziert.
logswan [-ghv] [-d db] logfile
Wenn die Datei ein einzelner Bindestrich (`-') ist, liest logswan aus der Standardeingabe.
Die Optionen sind wie folgt:
-d db Specify path to a GeoIP database.
-g Enable GeoIP lookups.
-h Display usage.
-v Display version.
Logswan gibt JSON-Daten an stdout aus.
Logswan wird unter der BSD 2-Clause-Lizenz veröffentlicht. Einzelheiten finden Sie in LICENSE
Datei.
Logswan wurde von Frederic Cambus entwickelt.
Projekthomepage: https://www.logswan.org
GitHub: https://github.com/fcambus/logswan