Simpleton — это очень простое решение для ведения журнала UDP в базе данных, которое просто принимает UDP-пакеты и сохраняет их в базе данных SQLite3. По умолчанию они сохраняются в simpleton.db
в текущем каталоге, но вы можете переопределить это с помощью параметров командной строки.
Это не очень полезно для чего-либо, кроме действительно простого тестирования, но вы можете расширить его.
Чтобы собрать Simpleton, вы просто запускаете make
, и двоичный файл появится в каталоге bin
. По умолчанию он будет создан для OSX.
make
Для сборки для других платформ отредактируйте переменные GOOS
и GOARCH
в Makefile
. Вы также можете ввести эти параметры в командной строке при запуске make
, вот так.
GOOS=linux GOARCH=amd64 make
Значения этих переменных для разных платформ можно найти в syslist.go, но наиболее распространенными являются следующие значения:
ОС | ГСНО | ГОАРЧ |
---|---|---|
ОС X | Дарвин | amd64 |
Линукс | Linux | amd64 |
Окна | окна | amd64 |
Конечно, вы можете выполнить кросс-компиляцию (например, скомпилировать двоичные файлы Linux на машинах OSX), просто установив правильную комбинацию GOOS и GOARCH, хотя с 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, поэтому я бы не стал использовать базу данных в качестве точки интеграции (никогда не следует этого делать).
Именно поэтому в коде предусмотрена блокировка мьютекса при доступе к базе данных. Код был взят из проекта, в котором есть несколько горутин, обращающихся к базе данных. В этой программе этого нет, но я оставил блокировку мьютекса просто для напоминания.
Для производственного использования вам следует использовать базу данных PostgreSQL или аналогичную базу данных, созданную для параллелизма. Но для небольших экспериментов и при ограниченном параллелизме SQLite3 — удивительно способный маленький зверь.
Обратите внимание, что интерфейс HTTP не имеет механизмов аутентификации или безопасности , поэтому не используйте его ни для чего, кроме тестирования. Адрес веб-интерфейса по умолчанию:
http://localhost:8008/
Веб-интерфейс довольно прост. У вас есть два URL-адреса для доступа к данным:
/data
/data/{id}
Первый возвращает массив JSON, второй возвращает только полезную нагрузку записи данных, заданную идентификатором. Путь /data
будет ограничен только 20 новейшими записями в базе данных, но вы можете просматривать базу данных, установив параметры URL-адреса offset
и limit
:
/data?offset=10&limit=10
Simpleton поддерживает каталог со статическими файлами, чтобы вы могли создавать HTML-страницы с полезными ссылками на контент или, возможно, размещать приложения JS-интерфейса.
Проверьте справку командной строки, чтобы увидеть параметры, с которыми вы можете работать.