Simpleton 是一个非常简单的 UDP 到数据库日志记录解决方案,它只接受 UDP 数据包并将它们存储在 SQLite3 数据库中。默认情况下,它将它们存储在当前目录中的simpleton.db
中,但您可以使用命令行选项覆盖它。
除了非常简单的测试之外,这对于任何事情都没有多大用处,但您可以对其进行扩展。
为了构建 simpleton,您只需运行make
,二进制文件就会出现在bin
目录中。默认情况下,它将针对 OSX 构建。
make
要为其他平台构建,请编辑Makefile
中的GOOS
和GOARCH
变量。您还可以在运行make
时在命令行中输入这些参数,如下所示。
GOOS=linux GOARCH=amd64 make
您可以在 syslist.go 中找到不同平台的这些变量的值,但最常见的值是:
操作系统 | GOOS | GOARCH |
---|---|---|
操作系统X | 达尔文 | AMD64 |
Linux | 操作系统 | AMD64 |
视窗 | 视窗 | AMD64 |
当然,您可以通过设置正确的 GOOS 和 GOARCH 组合来进行交叉编译(例如在 OSX 机器上编译 Linux 二进制文件),但在 Windows 上您可能会遇到麻烦。 (我还没有为 Windows 构建这个)。
二进制文件将出现在bin
中,因此您可以使用以下命令从主目录运行它:
bin/simpleton
要列出命令行选项,请使用-h
标志:
bin/simpleton -h
以下是运行 Simpleton 的示例,其选项使其侦听特定接口(示例中为 10.1.0.3)和端口(7788)并将数据库存储在/tmp/simpleton.db
中:
bin/simpleton -u 10.1.0.3:7788 -d /tmp/simpleton.db
如果您想查看生成的数据库,可以在计算机上安装 SQLite3 并使用sqlite3
命令检查数据库。要打开上一个示例中的数据库,只需运行:
sqlite3 /tmp/simpleton.db
输入.schema
可查看非常简单的数据库架构。您现在可以对数据执行 SQL 语句。
注意:我不完全确定 SQLite3 的并发性,所以我不会使用数据库作为集成点(你永远不应该)。
这也是代码在数据库访问周围有互斥锁的原因。该代码取自一个具有多个访问数据库的 goroutine 的项目。这个程序没有这个功能,但我保留了互斥锁只是作为提醒。
对于生产用途,您应该使用 PostgreSQL 数据库或类似的数据库,该数据库是为并发而构建的。但对于小型实验以及当并发性有限时,SQLite3 是一个令人惊讶的强大小野兽。
请注意,HTTP 接口没有身份验证或安全机制,因此请勿将其用于测试以外的任何用途。 Web 界面的默认地址为:
http://localhost:8008/
网络界面非常简单。您有两个访问数据的 URL:
/data
/data/{id}
第一个返回 JSON 数组,第二个仅返回 ID 给定的数据条目的有效负载。 /data
路径将仅限于数据库中的 20 个最新条目,但您可以通过设置offset
和limit
URL 参数来分页浏览数据库:
/data?offset=10&limit=10
Simpleton 支持包含静态文件的目录,以便您可以制作一些带有有用内容链接的 HTML 页面,或者可以托管 JS 前端应用程序。
检查命令行帮助以查看可以修改的参数。