WebSocket Event Hub & Penskalaan Telemetri
Cockpit menggunakan pusat kejadian (event center) real-time untuk mengalirkan pembaruan server secara langsung ke browser Anda secara instan, memastikan Anda melihat perubahan status tanpa perlu me-refresh halaman web.
Bagaimana Event Hub Bekerja 📢
💡 Analogi: Telepon Langsung & Interkom
- Koneksi Langsung (WebSockets): Halaman web standar bekerja seperti mengirim surat: Anda mengirim permintaan lalu menunggu balasan. WebSockets bekerja seperti sambungan telepon yang terus terbuka. Begitu Anda membuka Cockpit di browser, panggilan telepon dilakukan ke ujung Event Hub Cockpit (
/api/v1/events). Jalur ini tetap terbuka agar server dapat mengirimkan pembaruan ke layar Anda saat itu juga. - Megafon/Interkom (
pg_notify): Jika perusahaan Anda menjalankan beberapa server Cockpit untuk keandalan, admin yang berbeda mungkin terhubung ke server yang berbeda. Jika server fisik mengirim pembaruan status ke Server Cockpit #1, Server #1 menggunakan interkom database (megafon) yang disebutpg_notifyuntuk berteriak: "Host A telah terhubung!". Server Cockpit #2 mendengar teriakan ini dan meneruskannya ke semua sambungan browser yang terhubung dengannya.
Berikut adalah alur pembaruan langsung:
┌──────────────┐ Telepon ┌──────────────┐ Teriak Megafon ┌──────────────┐ Telepon ┌──────────┐
│ Vapor Host │───────────────────►│ Cockpit #1 │───────────────────►│ Cockpit #2 │───────────────────►│ Browser │
│(Server Fisik)│ (WebSocket) │(Terima data) │ (pg_notify) │ (Cadangan) │ (WebSocket) │ (Klien) │
└──────────────┘ └──────────────┘ └──────────────┘ └──────────┘Format Pesan: Amplop Surat ✉️
Semua pesan yang dikirim melalui WebSocket menggunakan tata letak standar, menyerupai amplop surat pos:
json
{
"type": "<message_type>", // Apa yang tertulis di luar amplop
"payload": {
"kind": "<channel_name>", // Bagian departemen tujuan surat
"data": { ... } // Isi surat yang sebenarnya
}
}- Tindakan yang Dapat Anda Kirim (Bagian Luar Amplop):
auth: Mengirim token login Anda untuk membuktikan siapa Anda.subscribe: Memberitahu Cockpit bahwa Anda ingin memantau saluran pembaruan tertentu (misalnya, "Saya ingin memantau grafik VM #1").unsubscribe: Memberitahu Cockpit untuk berhenti mengirimkan pembaruan dari suatu saluran.
- Tanggapan yang Anda Terima:
auth: Mengonfirmasi bahwa login Anda berhasil.event: Mengirimkan data langsung dari saluran yang Anda minta (subscribe).error: Memberitahu Anda jika terjadi kesalahan (misalnya, jika Anda tidak memiliki hak akses untuk melihat VM tersebut).
Saluran Kejadian: Menyetel Radio 📻
💡 Analogi: Frekuensi Radio
Untuk mendapatkan pembaruan, browser Anda harus menyetel ke "saluran" tertentu (seperti memutar frekuensi radio untuk mendengarkan stasiun musik tertentu).
Berikut adalah saluran standar yang dapat Anda setel:
| Saluran Stasiun Radio | Apa yang disiarkan |
|---|---|
host-metrics:<host_id> | Grafik langsung CPU, Memori, dan kecepatan Disk untuk server fisik tertentu. |
vm-events:<host_id> | Perubahan status VM secara langsung (misalnya, "VM 1 baru saja dimatikan" atau "VM 2 crash"). |
vm-metrics:<host_id> | Kumpulan data grafik gabungan untuk semua VM yang berjalan di server tersebut. |
vm-volume-migration-events:<uuid>:<disk> | Indikator bilah kemajuan (0% hingga 100%) yang menunjukkan kemajuan pemindahan disk VM selama migrasi penyimpanan. |
task-events | Kemajuan pekerjaan latar belakang umum (seperti pembuatan backup atau pembaruan sistem). |