Ringkasan
Pendahuluan
Ravenxcope Sensor Agent adalah layanan Go ringan yang berjalan pada setiap host sensor fisik. Ini adalah satu-satunya komponen perangkat lunak yang dieksekusi langsung di mesin sensor — semua layanan RavenXcope lainnya berjalan di infrastruktur pusat pertahanan (defense center).
Agen memiliki dua tanggung jawab inti:
- Pendaftaran (Enrollment) — Pada startup pertama, daftarkan host sensor ke backend menggunakan token instalasi satu kali, melaporkan nama host, OS, arsitektur, antarmuka jaringan, dan alamat IP.
- Heartbeat — Secara berkala mengirimkan metrik sistem (CPU, memori, counter antarmuka jaringan) ke backend agar pusat pertahanan dapat memantau kesehatan sensor dan status online-nya.
Peran dalam Arsitektur
Agen berkomunikasi secara eksklusif dengan API backend melalui HTTP. Agen tidak berinteraksi langsung dengan frontend, layanan Ansible, atau database apa pun.
Stack Teknologi
| Kategori | Teknologi | Versi | Tujuan |
|---|---|---|---|
| Bahasa | Go | 1.22 | Runtime Agen |
| Metrik Sistem | gopsutil | v3.24.5 | Pengumpulan CPU, memori, dan I/O jaringan |
| Dasar Kontainer | Alpine Linux | terbaru | Runtime Docker minimal |
| Build | Multi-stage Docker | — | Binary Go statis dalam Alpine |
Versi Agen
Versi agen saat ini adalah 2.0.0, didefinisikan sebagai konstanta di main.go. Versi ini dilaporkan ke backend selama pendaftaran untuk melacak kompatibilitas agen di seluruh armada sensor.
Prinsip Desain Utama
-
Binary Tunggal — Seluruh agen adalah binary Go tunggal (
main.go) tanpa dependensi eksternal di luar OS. -
Gagal Cepat pada Konfigurasi (Fail-fast) — Agen segera keluar jika variabel lingkungan yang diperlukan (
SENSOR_ID,BACKEND_URL) hilang. -
Model Pendaftaran Sekali — Agen mendaftar sekali menggunakan
INSTALL_TOKENsatu kali, menerimaSENSOR_TOKENyang tahan lama, dan menyimpannya ke disk. Restart berikutnya akan melewati proses pendaftaran. -
Mode Jaringan Host — Agen berjalan dengan Docker
--network hostuntuk mendeteksi dan melaporkan antarmuka jaringan host dan metrik secara akurat. -
Passthrough Metadata Host — Info OS dan nama host dibaca dari file host yang dipasang secara bind-mount (
/host-os-release,/host-hostname) alih-alih metadata kontainer. -
Loop Heartbeat yang Resilien — Heartbeat yang gagal dicatat tetapi tidak menghentikan agen. Ticker terus berjalan dan mencoba kembali pada interval berikutnya.
-
Jejak (Footprint) Minimal — Batas sumber daya Docker membatasi agen pada 0.5 CPU dan memori 256MB.