_____
.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 是一个使用概率数据结构的快速 Web 日志分析器。它针对非常大的日志文件,通常是 API 日志。无论日志文件大小如何,它都具有恒定的内存使用量,并且大约需要 4MB 的 RAM。
使用两个 HyperLogLog 计数器(一个用于 IPv4,另一个用于 IPv6)执行唯一访客计数,提供 0.10% 的相对准确度。使用并首选 IP 地址的字符串表示形式,因为它们提供更好的精度。
项目设计目标包括:速度、内存使用效率以及保持代码尽可能简单。
Logswan 是一个固执己见的软件:
Logswan 的编写考虑到了安全性,并在 OpenBSD 上沙盒运行(使用 Promise)。实验性 seccomp 支持可用于选定的架构,并且可以通过在调用 CMake 时将ENABLE_SECCOMP
变量设置为1
来启用。它还使用 AFL 和 Honggfuzz 进行了广泛的模糊测试。
目前实现的功能:
Logswan 使用CMake
构建系统,需要Jansson
和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 已使用 Clang 和 GCC 在 OpenBSD、NetBSD、FreeBSD、macOS 和 Linux 上成功构建和测试。
Logswan 软件包适用于:
Logswan 默认在${CMAKE_INSTALL_PREFIX}/share/dbip
中查找 GeoIP2 数据库,该数据库指向/usr/local/share/dbip
。
调用 CMake 时可以使用GEOIP2DIR
变量设置自定义目录:
cmake -DGEOIP2DIR=/var/db/dbip .
可在此处下载免费的 Creative Commons 许可的 DB-IP IP to Country Lite 数据库。
或者,可以在此处免费下载 MaxMind 的 GeoLite2 Country 数据库,但需要接受 EULA 并且不是免费许可的。
logswan [-ghv] [-d db] logfile
如果文件是一个破折号(`-'),logswan 会从标准输入中读取。
选项如下:
-d db Specify path to a GeoIP database.
-g Enable GeoIP lookups.
-h Display usage.
-v Display version.
Logswan 将 JSON 数据输出到stdout 。
Logswan 是根据 BSD 2-Clause 许可证发布的。有关详细信息,请参阅LICENSE
文件。
Logswan 由 Frederic Cambus 开发。
项目主页:https://www.logswan.org
GitHub:https://github.com/fcambus/logswan