Simpleton adalah solusi logging UDP ke database sederhana yang hanya menerima paket UDP dan menyimpannya dalam database SQLite3. Secara default, ia menyimpannya di simpleton.db
di direktori saat ini, tetapi Anda dapat menimpanya dengan opsi baris perintah.
Ini tidak terlalu berguna untuk apa pun kecuali pengujian yang sangat sederhana, tetapi Anda dapat mengembangkannya.
Untuk membangun yang sederhana, Anda cukup menjalankan make
dan biner akan muncul di direktori bin
. Secara default, ini akan dibuat untuk OSX.
make
Untuk membangun platform lain harap edit variabel GOOS
dan GOARCH
di Makefile
. Anda juga dapat memasukkan parameter ini pada baris perintah saat menjalankan make
, seperti ini.
GOOS=linux GOARCH=amd64 make
Anda dapat menemukan nilai variabel ini untuk platform berbeda di syslist.go, namun nilai yang paling umum adalah:
sistem operasi | BAIK | GOARCH |
---|---|---|
OSX | Darwin | amd64 |
Linux | linux | amd64 |
jendela | jendela | amd64 |
Tentu saja, Anda dapat melakukan kompilasi silang (misalnya mengkompilasi binari Linux pada mesin OSX) hanya dengan mengatur kombinasi GOOS dan GOARCH yang tepat, meskipun Windows Anda mungkin mengalami masalah. (Saya belum membuat ini untuk Windows).
Binernya akan muncul di bin
, sehingga Anda dapat menjalankannya dari direktori utama dengan:
bin/simpleton
Untuk membuat daftar opsi baris perintah, Anda menggunakan tanda -h
:
bin/simpleton -h
Berikut adalah contoh menjalankan Simpleton dengan opsi untuk membuatnya mendengarkan antarmuka tertentu (dalam contoh 10.1.0.3) dan port (7788) dan menyimpan database di /tmp/simpleton.db
:
bin/simpleton -u 10.1.0.3:7788 -d /tmp/simpleton.db
Jika Anda ingin melihat-lihat database yang dihasilkan, Anda dapat menginstal SQLite3 di mesin Anda dan memeriksa database menggunakan perintah sqlite3
. Untuk membuka database pada contoh sebelumnya jalankan saja:
sqlite3 /tmp/simpleton.db
Ketik .schema
untuk melihat skema database yang sangat sederhana. Anda sekarang dapat melakukan pernyataan SQL pada data.
Catatan: Saya tidak sepenuhnya yakin tentang konkurensi SQLite3 jadi saya tidak akan menggunakan database sebagai titik integrasi (Anda tidak boleh menggunakannya).
Ini juga mengapa kode tersebut memiliki kunci mutex di sekitar akses database. Kode diambil dari proyek yang memiliki banyak goroutine yang mengakses database. Program ini tidak memilikinya, tapi saya membiarkan mutex terkunci hanya sebagai pengingat.
Untuk penggunaan produksi, Anda harus menggunakan database PostgreSQL atau sejenisnya, yang dibuat untuk konkurensi. Namun untuk eksperimen kecil dan ketika Anda memiliki konkurensi terbatas, SQLite3 adalah monster kecil yang sangat mampu.
Perhatikan bahwa antarmuka HTTP tidak memiliki mekanisme otentikasi atau keamanan jadi jangan gunakan ini untuk apa pun selain pengujian. Alamat default antarmuka web adalah:
http://localhost:8008/
Antarmuka webnya cukup sederhana. Anda memiliki dua URL yang mengakses data:
/data
/data/{id}
Yang pertama mengembalikan array JSON, yang kedua hanya mengembalikan muatan entri data yang diberikan oleh ID. Jalur /data
akan dibatasi hanya pada 20 entri terbaru dalam database, namun Anda dapat menelusuri database dengan mengatur parameter URL offset
dan limit
:
/data?offset=10&limit=10
Simpleton mendukung memiliki direktori dengan file statis sehingga Anda dapat membuat beberapa halaman HTML dengan tautan berguna ke konten atau mungkin untuk meng-host aplikasi JS-frontend.
Periksa bantuan baris perintah untuk melihat parameter yang dapat Anda gunakan.