Lewati ke konten utama

Sensor dan Dasbor

Pendahuluan

Dokumen ini menjelaskan dasbor sensor, daftar sensor, detail sensor, metrik, perintah instalasi, dan alur kerja sensor virtual.


File Utama

FileTanggung Jawab
modules/sensors/pages/SensorDashboardPage.tsxHalaman pendaratan dasbor dengan jumlah sensor, ringkasan peringatan, aktivitas heartbeat
modules/sensors/pages/SensorListPage.tsxRute daftar sensor, izin, bendera penyegaran data, dan orkestrasi dialog
modules/sensors/partials/SensorListTable.tsxTabel sensor, lencana heartbeat/kesehatan, tindakan metrik, tindakan baris
modules/sensors/dialogs/CreateSensorDialog.tsxDialog pembuatan/registrasi sensor
modules/sensors/dialogs/EditSensorDialog.tsxDialog edit sensor
modules/sensors/pages/SensorDetailPage.tsxHalaman detail sensor, perintah instalasi, manajemen antarmuka dan sensor virtual
modules/sensors/partials/SensorSetupCard.tsxKartu sensor virtual dan kontrol aktivasi/deaktivasi/hapus
modules/sensors/dialogs/AddSetupDialog.tsxDialog pembuatan sensor virtual dari dua antarmuka yang tersedia
modules/sensors/dialogs/SensorMetricsDialog.tsxDialog visualisasi metrik sensor
hooks/useApi.tsHook useSensors() dan hook izin
lib/api.tsGrup titik akhir sensor, virtualSensor, dan sensorSetup (lama)

Halaman Dasbor

  • Rute: /dashboard
  • Komponen: ChartSensor

Perilaku dasbor:

  1. Inisialisasi Konteks: Membaca organizationId dari cookie auth.
  2. Ambil Jumlah (Counts): Memanggil api.sensor.getCounts(organizationId).
  3. Ambil Analitik: Memanggil api.opensearch.getDashboardSummary() untuk 24 jam terakhir.
  4. Ambil Heartbeat: Memanggil api.sensor.getLatestHeartbeats() untuk aktivitas sensor terbaru.
  5. Render Metrik: Menampilkan jumlah aktif/tidak aktif, perkiraan total uptime, statistik peringatan, dan tabel heartbeat.

Komponen ini mendukung bentuk data jumlah sensor baik activeSensors/inactiveSensors/totalSensors maupun active/inactive/total.


Halaman Daftar Sensor

  • Rute: /dashboard/all-sensor
  • Komponen: AllSensor

Perilaku daftar sensor:

  1. Pemuatan Data: Memuat sensor dengan useSensors([deletionFlag, createFlag, editFlag]).
  2. Pemeriksaan Izin: Memuat izin pengguna saat ini dengan useUserPermissions().
  3. Visibilitas Tindakan: Menampilkan tindakan buat, edit, dan hapus berdasarkan slug izin sensor.
  4. Polling Status: Melakukan polling status heartbeat terbaru setiap 60 detik.
  5. Polling Kesehatan: Melakukan polling metrik terbaru setiap 60 detik untuk status kesehatan.
  6. Penanganan Formulir: Membuka dialog buat/edit di dalam komponen Dialog bersama.
  7. Tampilan Metrik: Membuka metrik sensor dalam SensorMetricsDialog.
  8. Navigasi: Menavigasi ke detail sensor melalui /dashboard/sensor/:sensorId.

Logika lencana kesehatan didasarkan pada metrik CPU dan memori terbaru:

KondisiStatus
Maks CPU/memori >= 90Kritis (Critical)
Maks CPU/memori >= 70Peringatan (Warning)
Di bawah 70Sehat (Healthy)

Status online didasarkan pada data heartbeat terbaru. Jika backend tidak menyediakan isOnline, frontend menganggap heartbeat yang lebih baru dari 5 menit sebagai online.


Halaman Detail Sensor

  • Rute: /dashboard/sensor/:sensorId
  • Komponen: SensorDetail

Perilaku detail:

  1. Inisialisasi Konteks: Membaca sensorId dari parameter rute.
  2. Pemuatan Data: Memanggil api.sensor.get(sensorId).
  3. Render Detail: Menampilkan status, pendaftaran, host, OS, arsitektur, versi agen, antarmuka, dan informasi sensor virtual.
  4. Token Instalasi: Membuat token instalasi melalui api.sensor.createInstallToken(sensorId).
  5. Tindakan Papan Klip: Menyalin installCommand yang dikembalikan ke papan klip (clipboard).
  6. Penyegaran Data: Memungkinkan penyegaran tanpa meninggalkan halaman.
  7. Sensor Virtual: Mengelola sensor virtual melalui AddSetupDialog dan SensorSetupCard.

Halaman menghitung antarmuka yang tersedia dengan memfilter sensor.interfaces di mana:

  • isEligible bernilai true.
  • assignedVirtualSensorId kosong.

Sensor virtual baru hanya dapat dibuat ketika setidaknya dua antarmuka yang layak tersedia.


Alur Kerja Sensor Virtual

Sensor virtual sebelumnya dinamakan "sensor setup" di UI dan lapisan API. Kode tetap mempertahankan kedua grup titik akhir:

  • api.virtualSensor
  • api.sensorSetup sebagai alias lama

Jalur backend saat ini menggunakan: /sensors/:sensorId/virtual-sensors

Operasi yang didukung:

OperasiPanggilan API
Daftarapi.sensorSetup.getAll(sensorId)
Buatapi.sensorSetup.create(sensorId, data)
Perbaruiapi.sensorSetup.update(sensorId, setupId, data)
Hapusapi.sensorSetup.delete(sensorId, setupId)
Aktivasiapi.sensorSetup.activate(sensorId, setupId)
Deaktivasiapi.sensorSetup.deactivate(sensorId, setupId)

SensorSetupCard melakukan polling setiap 5 detik saat sensor virtual dalam status activating. Polling berhenti ketika backend mengembalikan status active atau failed.


Aturan Formulir Sensor Virtual

AddSetupDialog menegakkan validasi sisi klien:

  • Antarmuka 1 wajib diisi.
  • Antarmuka 2 wajib diisi.
  • Antarmuka 1 dan Antarmuka 2 harus berbeda.
  • Nama bersifat opsional.
  • CIDR jaringan rumah bersifat opsional.

Backend tetap bertanggung jawab atas validasi akhir dan perilaku penyebaran.


Izin

Tindakan sensor menggunakan slug berikut dari src/lib/constants.ts:

TindakanSlug Izin
Buat sensorcreate-sensor
Edit sensorupdate-sensor
Hapus sensordelete-sensor
Baca sensorread-sensor

Pemeriksaan izin UI menyembunyikan tindakan. Pemeriksaan ini tidak menggantikan otorisasi backend.


Mode Kegagalan

SkenarioPerilaku Frontend
Pemuatan daftar sensor gagalHook mencatat kesalahan dan mencatatnya ke konsol
Polling heartbeat gagalKesalahan dicatat; daftar yang ada tetap dirender
Polling metrik gagal untuk satu sensorSensor tersebut dilewati secara diam-diam
Pemuatan detail sensor gagalKesalahan toast dan pemuatan berakhir
Pembuatan perintah instalasi gagalKesalahan toast
Aktivasi sensor virtual gagalKartu menunjukkan status gagal saat backend mengembalikan kegagalan
Penghapusan sensor virtual gagalToast menjelaskan bahwa deaktivasi mungkin diperlukan terlebih dahulu