Nodeflux Central
CES

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)

MetricDeskripsi
Total SlaveJumlah seluruh node Slave yang terdaftar, tidak termasuk Master
OnlineNode Slave dengan heartbeat dalam 2 menit terakhir
OfflineNode Slave yang tidak mengirim heartbeat lebih dari 2 menit

Informasi Per Node

FieldDeskripsi
nameNama node sesuai konfigurasi ces_slave_name atau nama layanan
ip_addressAlamat IP node
statusonline atau offline berdasarkan waktu heartbeat terakhir
total_enrollmentJumlah wajah terdaftar di node ini
last_heartbeatWaktu terakhir node mengirim metrik ke Master (format ISO 8601)
is_mastertrue 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:

FieldDeskripsi
application_nameNama klien replikasi (nama subscription di sisi Slave)
client_addrAlamat IP klien (Slave)
sync_stateStatus sinkronisasi: streaming, catchup, backup, atau potential
usenameUser database yang digunakan untuk replikasi
sent_lsnLSN yang sudah dikirimkan Master ke klien
write_lsnLSN yang sudah ditulis klien ke disk
flush_lsnLSN yang sudah di-flush klien
replay_lsnLSN yang sudah di-apply klien
write_lagSelisih waktu antara Master commit dan klien menulis
flush_lagSelisih waktu antara Master commit dan klien flush
replay_lagSelisih 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:

ParameterTipeWajibDeskripsi
searchstringTidakFilter nama node menggunakan regex
instancestringTidakID 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

On this page