Simpleton,一个从UDP到SQLite的简单工具

2020-07-06 04:29:54

Simpleton是一个非常简单的UDP到数据库日志记录解决方案,它只接受UDP数据包并将其存储在SQLite3数据库中。默认情况下,它将它们存储在当前目录的simpleton.db中,但您可以使用命令行选项覆盖此设置。

除了非常简单的测试外,这对任何事情都不是非常有用,但是您可以对其进行扩展。

要构建simpleton,只需运行make,二进制文件就会出现在bin目录中。默认情况下,它将为OSX构建。

要为其他平台构建,请编辑Makefile中的GOOS和GOARCH变量。还可以在运行make时在命令行中输入这些参数,如下所示。

您可以在syslist.go中找到这些变量在不同平台上的值,但最常见的值是:

当然,您可以通过设置正确的GOOS和GOARCH组合来交叉编译(例如在OSX机器上编译Linux二进制文件),尽管Windows可能会遇到麻烦。(我还没有为Windows构建这个)。

二进制文件将出现在bin中,因此您可以使用以下命令从主目录运行它:

下面是一个运行Simpleton的示例,该示例使用选项使其侦听特定的接口(在该示例中为10.1.0.3)和端口(7788),并将数据库存储在/tmp/simpleton.db中:

如果您想查看结果数据库,可以在您的机器上安装SQLite3,然后使用sqlite3命令检查数据库。要打开上一个示例中的数据库,只需运行:

键入.schema以查看非常简单的数据库模式。现在可以对数据执行SQL语句了。

注意:我不完全确定SQLite3的并发性,所以我不会使用数据库作为集成点(永远不应该)。

这也是为什么代码在数据库访问周围有一个互斥锁的原因。代码取自一个有多个大猩猩访问数据库的项目。这个程序没有这个功能,但是我把互斥锁留下来只是为了提醒一下。

对于生产用途,您应该使用为并发而构建的PostgreSQL数据库或类似数据库。但是对于小型实验,当您的并发性有限时,SQLite3是一个令人惊讶的能力强大的小野兽。

请注意,HTTP接口没有身份验证或安全机制,因此除了测试之外,不要将其用于任何其他用途。Web界面的默认地址为:

第一个函数返回一个JSON数组,第二个函数仅返回ID指定的数据条目的有效负载。/Data路径将仅限于数据库中最新的20个条目,但是您可以通过设置偏移量和限制URL参数来对数据库进行分页:

Simpleton支持有一个包含静态文件的目录,这样您就可以制作一些HTML页面,其中包含指向内容的有用链接,或者可以托管JS-前端应用程序。