Lewati ke konten utama

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:

  1. 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.
  2. 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

Defense CenterBackend APIDashboard / AnsibleSensor HostSensor AgentGo / Metrics / SuricataHTTPS / JSON

Agen berkomunikasi secara eksklusif dengan API backend melalui HTTP. Agen tidak berinteraksi langsung dengan frontend, layanan Ansible, atau database apa pun.


Stack Teknologi

KategoriTeknologiVersiTujuan
BahasaGo1.22Runtime Agen
Metrik Sistemgopsutilv3.24.5Pengumpulan CPU, memori, dan I/O jaringan
Dasar KontainerAlpine LinuxterbaruRuntime Docker minimal
BuildMulti-stage DockerBinary 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

  1. Binary Tunggal — Seluruh agen adalah binary Go tunggal (main.go) tanpa dependensi eksternal di luar OS.

  2. Gagal Cepat pada Konfigurasi (Fail-fast) — Agen segera keluar jika variabel lingkungan yang diperlukan (SENSOR_ID, BACKEND_URL) hilang.

  3. Model Pendaftaran Sekali — Agen mendaftar sekali menggunakan INSTALL_TOKEN satu kali, menerima SENSOR_TOKEN yang tahan lama, dan menyimpannya ke disk. Restart berikutnya akan melewati proses pendaftaran.

  4. Mode Jaringan Host — Agen berjalan dengan Docker --network host untuk mendeteksi dan melaporkan antarmuka jaringan host dan metrik secara akurat.

  5. 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.

  6. Loop Heartbeat yang Resilien — Heartbeat yang gagal dicatat tetapi tidak menghentikan agen. Ticker terus berjalan dan mencoba kembali pada interval berikutnya.

  7. Jejak (Footprint) Minimal — Batas sumber daya Docker membatasi agen pada 0.5 CPU dan memori 256MB.


Struktur Proyek

ravenxcope-sensor-agent
main.go# Sumber agen lengkap (pendaftaran, heartbeat, metrik)
main_test.go# Tes unit untuk persistensi token dan deteksi host
go.mod# Definisi modul Go dan dependensi
go.sum# Checksum dependensi
Dockerfile# Build multi-tahap (Go builder → Alpine runtime)
.gitlab-ci.yml# Pipa CI/CD (build-dev pada develop, build pada main)
.gitignore# Aturan git ignore
README.md# Panduan mulai cepat