CES Monitoring
Pantau status node CES — Master dan Slave — beserta metrik enrollment dan replikasi di seluruh Visionaire secara real-time.
Pengenalan
Halaman CES Monitoring menyediakan tampilan terpusat untuk memantau kondisi seluruh node dalam infrastruktur Centralized Enrollment System. Sistem CES beroperasi dalam arsitektur master/slave: satu node Master bertindak sebagai pusat data enrollment, sementara node-node Slave menyinkronkan data mereka ke Master dan melaporkan metrik setiap satu menit secara otomatis.
Halaman ini menampilkan dua kelompok node secara terpisah — Node Master dan Node Slave — dilengkapi statistik ringkas (total, online, offline) serta detail per node seperti jumlah enrollment, waktu heartbeat terakhir, dan status replikasi. Data diperbarui otomatis di latar belakang setiap 30 detik tanpa memuat ulang halaman.
Halaman ini ditujukan untuk administrator dan operator CES yang perlu memastikan seluruh node terhubung dan data enrollment tersinkronisasi dengan benar.
Halaman ini dilindungi RBAC. Anda memerlukan permission centralize_enrollment untuk mengaksesnya. Hubungi administrator sistem jika menu CES tidak muncul di navigasi.
Cara Menggunakan
Buka halaman CES Monitoring
Klik menu CES di sidebar navigasi, lalu pilih Monitoring. Anda juga dapat mengakses langsung melalui URL /ces/monitoring. Pada mode Federation, tambahkan query parameter ?instance=<id> untuk membatasi tampilan ke satu Visionaire tertentu.
Tinjau statistik ringkas Node Slave
Di sebelah kanan kartu Node Master, terdapat tiga angka ringkas:
- Total Slave — jumlah seluruh node Slave yang terdaftar di Master
- Online — node yang mengirim heartbeat dalam 2 menit terakhir
- Offline — node yang heartbeat-nya sudah lewat dari 2 menit
Gunakan angka ini sebagai indikator pertama kesehatan jaringan CES secara keseluruhan.
Periksa kartu Node Master
Bagian Node Master menampilkan satu kartu berisi identitas Master (nama, alamat IP), total enrollment terdaftar, waktu heartbeat terakhir, dan jumlah Replication Client yang aktif. Klik tombol slave atau streaming pada kartu untuk membuka modal daftar klien replikasi beserta detail LSN dan lag.
Telusuri Node Slave
Gunakan kolom pencarian di atas grid untuk memfilter node berdasarkan nama atau alamat IP. Node Slave ditampilkan dalam grid responsif — satu kolom di layar kecil, dua kolom di tablet, tiga kolom di layar lebar. Setiap kartu menampilkan status online/offline dengan indikator warna.
Baca status individual per node
Setiap kartu node memperlihatkan:
- Status Online (hijau) atau Offline (merah)
- Jumlah enrollment node tersebut dibandingkan dengan enrollment Master
- Waktu heartbeat terakhir — kapan node ini terakhir melaporkan diri ke Master
- Badge Master untuk node master, atau selisih enrollment terhadap Master untuk node slave
Metric yang Ditampilkan
Statistik Ringkas (Sidebar Master)
| Metric | Deskripsi |
|---|---|
| Total Slave | Jumlah seluruh node Slave yang terdaftar, tidak termasuk Master |
| Online | Node Slave dengan heartbeat dalam 2 menit terakhir |
| Offline | Node Slave yang tidak mengirim heartbeat lebih dari 2 menit |
Informasi Per Node
| Field | Deskripsi |
|---|---|
name | Nama node sesuai konfigurasi ces_slave_name atau nama layanan |
ip_address | Alamat IP node |
status | online atau offline berdasarkan waktu heartbeat terakhir |
total_enrollment | Jumlah wajah terdaftar di node ini |
last_heartbeat | Waktu terakhir node mengirim metrik ke Master (format ISO 8601) |
is_master | true jika node ini adalah Master |
Informasi Replication Client (Modal)
Klik tombol jumlah klien pada kartu Node Master untuk membuka modal detail replikasi. Modal ini menampilkan daftar semua Slave yang sedang streaming replikasi ke Master beserta kolom berikut:
| Field | Deskripsi |
|---|---|
application_name | Nama klien replikasi (nama subscription di sisi Slave) |
client_addr | Alamat IP klien (Slave) |
sync_state | Status sinkronisasi: streaming, catchup, backup, atau potential |
usename | User database yang digunakan untuk replikasi |
sent_lsn | LSN yang sudah dikirimkan Master ke klien |
write_lsn | LSN yang sudah ditulis klien ke disk |
flush_lsn | LSN yang sudah di-flush klien |
replay_lsn | LSN yang sudah di-apply klien |
write_lag | Selisih waktu antara Master commit dan klien menulis |
flush_lag | Selisih waktu antara Master commit dan klien flush |
replay_lag | Selisih waktu antara Master commit dan klien apply |
Nilai replay_lag yang tinggi (lebih dari beberapa detik) mengindikasikan Slave tertinggal dalam menerapkan perubahan. Periksa koneksi jaringan dan beban CPU pada node Slave yang bersangkutan.
API Reference
GET /api/ces/metrics
Mengambil seluruh metrik node CES — Master dan Slave — dari sudut pandang Master.
Autentikasi: Bearer Token (header Authorization)
Query Parameters:
| Parameter | Tipe | Wajib | Deskripsi |
|---|---|---|---|
search | string | Tidak | Filter nama node menggunakan regex |
instance | string | Tidak | ID Visionaire (hanya pada mode Federation) |
Contoh Request:
curl -X GET "https://<host>/api/ces/metrics" \
-H "Authorization: Bearer <token>"Contoh Response:
{
"ok": true,
"message": "successfully retrieved CES metrics",
"results": {
"metrics": [
{
"id": "20c9acbe",
"name": "Master Gateway",
"ip_address": "192.168.1.10",
"total_enrollment": 1500,
"is_master": true,
"custom_fields": {},
"last_heartbeat": "2025-12-24T12:30:00Z",
"created_at": "2025-12-24T10:00:00Z",
"updated_at": "2025-12-24T12:30:00Z",
"status": "online"
},
{
"id": "a1b2c3d4",
"name": "Branch Office A",
"ip_address": "192.168.1.11",
"total_enrollment": 500,
"is_master": false,
"custom_fields": {},
"last_heartbeat": "2025-12-24T12:29:00Z",
"created_at": "2025-12-24T10:05:00Z",
"updated_at": "2025-12-24T12:29:00Z",
"status": "online"
}
],
"replication_clients": [
{
"pid": 12345,
"usesysid": 16385,
"usename": "replication_user",
"application_name": "lenz_ces_sub",
"client_addr": "192.168.1.11",
"client_port": 54321,
"backend_start": "2025-12-24T10:05:00Z",
"state": "streaming",
"sent_lsn": "0/3000060",
"write_lsn": "0/3000060",
"flush_lsn": "0/3000060",
"replay_lsn": "0/3000060",
"write_lag": null,
"flush_lag": null,
"replay_lag": null,
"sync_priority": 0,
"sync_state": "async",
"reply_time": "2025-12-24T12:29:58Z"
}
]
}
}GET /api/ces-agent/v1/agents/status
Mengambil status Agent CES pada node Slave. Endpoint ini tersedia di sisi Slave untuk memeriksa apakah Agent sedang aktif mengirim metrik ke Master.
Autentikasi: Bearer Token (header Authorization)
Contoh Request:
curl -X GET "https://<slave-host>/api/ces-agent/v1/agents/status" \
-H "Authorization: Bearer <token>"Contoh Response:
{
"ok": true,
"message": "agent status retrieved",
"result": {
"agent_id": "a1b2c3d4",
"name": "Branch Office A",
"ip_address": "192.168.1.11",
"master_url": "http://192.168.1.10:6015",
"status": "active",
"last_report_at": "2025-12-24T12:29:00Z",
"total_enrollment": 500
}
}GET /api/ces-coordinator/v1/coordinators/metrics
Mengambil metrik Coordinator CES dari node Master. Coordinator bertanggung jawab menerima laporan dari semua Agent Slave dan mengagregasikan data enrollment.
Autentikasi: Bearer Token (header Authorization)
Contoh Request:
curl -X GET "https://<master-host>/api/ces-coordinator/v1/coordinators/metrics" \
-H "Authorization: Bearer <token>"Contoh Response:
{
"ok": true,
"message": "coordinator metrics retrieved",
"result": {
"coordinator_id": "20c9acbe",
"name": "Master Gateway",
"mode": "master",
"total_nodes": 3,
"online_nodes": 2,
"offline_nodes": 1,
"total_enrollment": 1500,
"last_updated_at": "2025-12-24T12:30:00Z"
}
}Format Response
CesMetricNode
Setiap objek dalam array results.metrics memiliki struktur berikut:
Prop
Type
CesReplicationClient
Setiap objek dalam array results.replication_clients merepresentasikan satu koneksi streaming replikasi aktif dari Slave ke Master:
Prop
Type
Tips & Troubleshooting
Selanjutnya
API Reference — CES
Endpoint untuk monitoring node, pengambilan konfigurasi, dan setup replikasi PostgreSQL pada Centralized Enrollment System.
Konfigurasi CES
Panduan lengkap untuk mengonfigurasi Centralized Enrollment System (CES) di Lenz Dashboard, termasuk setup Coordinator, pendaftaran Agent, dan konfigurasi Replication.