Configuration Reference
Referensi lengkap parameter startup, monitoring, lisensi, backup, dan upgrade FREMIS-N.
Halaman ini adalah referensi operasional lengkap untuk FREMIS-N yang sudah berjalan di produksi — dari parameter startup, setup monitoring, manajemen lisensi, backup & restore, hingga prosedur upgrade antar versi.
Parameter Startup
Saat menjalankan FREMIS-N, Anda dapat mengatur parameter berikut:
Parameter Dasar
| Parameter | Deskripsi |
|---|---|
--storage | Backend storage: postgres atau backend lain yang didukung |
--db-address | Alamat server database (contoh: 127.0.0.1 atau db.internal) |
--db-port | Port server database (default: 5432 untuk PostgreSQL) |
--db-name | Nama database yang digunakan |
--db-username | Username database |
--db-password | Password database |
--listen-port | Port HTTP untuk API FREMIS-N (default: 4003) |
--access-key | Access key lisensi Nodeflux |
--secret-key | Secret key lisensi Nodeflux |
Parameter Cluster
| Parameter | Deskripsi |
|---|---|
--partition-start | Partisi pertama yang ditangani node ini (0–255) |
--partition-end | Partisi terakhir yang ditangani node ini (0–255) |
Contoh konfigurasi minimal standalone:
fremis_n_app httpserver \
--storage postgres \
--db-address 127.0.0.1 \
--db-port 5432 \
--db-name fremis_production \
--db-username postgres \
--db-password secure_password \
--access-key YOUR_LICENSE_KEY \
--secret-key YOUR_LICENSE_SECRET \
--listen-port 4003Untuk daftar perintah cluster dan coordinator, lihat Installation.
Monitoring & Observability
FREMIS-N mengekspos metrics dalam format Prometheus untuk monitoring real-time. Lihat Services & Ports untuk daftar port yang digunakan.
Setup Monitoring dengan Grafana
Install Prometheus dan Grafana
Gunakan dockprom untuk setup cepat Prometheus + Grafana dengan Docker:
git clone https://github.com/stefanprodan/dockprom.git
cd dockprom
docker-compose up -dIni akan menjalankan Prometheus di port 9090 dan Grafana di port 3000.
Konfigurasi Prometheus untuk scrape FREMIS-N
Edit prometheus.yml dan tambahkan job berikut:
- job_name: 'fremis-n'
scrape_interval: 15s
static_configs:
- targets: ['localhost:4040']Reload konfigurasi Prometheus setelah perubahan:
docker-compose restart prometheusImport Grafana dashboard
- Buka Grafana di
http://localhost:3000 - Login dengan credentials default (
admin/admin), ganti password setelah login pertama - Navigasi ke menu + → Import dashboard
- Upload file
fremis-n_dashboard.jsondari repository FREMIS-N - Pilih Prometheus sebagai data source
Dashboard akan menampilkan QPS, latency, error rate, dan status lisensi secara real-time.
Alert yang Wajib Dipantau
Konfigurasi alert Prometheus untuk kasus-kasus kritis berikut:
Aktifkan alert ketika QPS mendekati limit lisensi:
- alert: FremisNQPSHighUtilization
expr: fremis_n_qps_actual / fremis_n_qps_limit > 0.8
for: 5m
annotations:
summary: "FREMIS-N QPS mendekati limit (>80%)"Alert jika latency p95/p99 melampaui threshold:
- alert: FremisNLatencyHigh
expr: fremis_n_latency_p99_ms > 500
for: 5m
annotations:
summary: "FREMIS-N p99 latency tinggi (>500ms)"Alert jika error rate meningkat:
- alert: FremisNErrorRateHigh
expr: rate(fremis_n_errors_total[5m]) > 0.05
for: 5m
annotations:
summary: "FREMIS-N error rate tinggi (>5%)"Alert untuk status lisensi yang akan expired:
- alert: FremisNLicenseExpiringSoon
expr: fremis_n_license_expires_in_seconds < 86400
annotations:
summary: "Lisensi FREMIS-N akan expired dalam 24 jam"Quota & License Management
FREMIS-N menggunakan sistem lisensi yang membatasi throughput dan enrollment capacity.
Validasi Lisensi
- Lisensi divalidasi ke cloud Nodeflux saat startup FREMIS-N
- Setiap periode tertentu, lisensi di-refresh untuk memverifikasi masih aktif
- Jika refresh gagal, ada grace period yang memungkinkan operasi untuk sementara melanjutkan
Behavior Setelah Lisensi Expired
Ketika lisensi telah expired:
- Semua API request akan ditolak dengan HTTP 403
- Service akan log warning yang jelas
- Monitoring alert akan trigger (lihat bagian Alert di atas)
Hubungi Product Manager Nodeflux untuk renewal lisensi sebelum expiry date.
QPS Limit per Kategori
QPS dibatasi per kategori operasi sesuai paket lisensi:
- Recognition — maximum QPS untuk face search/recognition queries
- Enrollment — maximum QPS untuk enrollment operasi
- Utility — maximum QPS untuk operasi utility lainnya
Jika QPS melebihi limit:
- Request akan di-queue dan menunggu quota tersedia, atau
- Reject dengan HTTP 429 (Too Many Requests), tergantung konfigurasi
Monitoring Quota Utilization
Gunakan Grafana dashboard atau query Prometheus secara langsung:
# Melihat QPS actual vs limit
fremis_n_qps_actual / fremis_n_qps_limit
# Melihat enrollment capacity
fremis_n_enrollment_count / fremis_n_enrollment_limitMetric fremis_n_qps_actual vs fremis_n_qps_limit menunjukkan utilization QPS secara real-time. Konfigurasikan alert FremisNQPSHighUtilization (lihat di atas) agar mendapat notifikasi sebelum limit tercapai.
Backup & Restore
Melindungi data dengan backup berkala adalah bagian penting dari operational excellence.
Apa yang Harus Dibackup
- Database persistence — seluruh database yang menyimpan data enrollment dan keyspace
- Konfigurasi — file YAML coordinator config, environment variable, startup parameter
- License credentials — access key dan secret key (simpan di secret manager, bukan disk plain-text)
Frekuensi Backup
- Daily backup untuk database dengan traffic aktif
- On-demand backup sebelum upgrade, perubahan konfigurasi besar, atau maintenance
- Minimum 7 hari retention untuk recovery dari data corruption
Backup Workflow
Buat dump database dari storage backend Anda:
# Contoh: PostgreSQL backup
pg_dump -h db.internal -U postgres fremis_production > backup_fremis_$(date +%Y%m%d_%H%M%S).sqlKompres dan pindahkan ke storage eksternal:
gzip backup_fremis_*.sql
# Upload ke cloud storage (S3, Azure Blob, dll)
aws s3 cp backup_fremis_*.sql.gz s3://your-backup-bucket/fremis/Simpan backup konfigurasi dan credentials di secret manager:
# Jangan commit ke git; gunakan secret manager (Vault, Sealed Secrets, dll)
vault kv put secret/fremis/backup \
access_key=... \
secret_key=...Restore Workflow
Hentikan semua instance FREMIS-N yang write ke database:
docker stop fremis-n-instance-idRestore database dari backup:
# Contoh: PostgreSQL restore
psql -h db.internal -U postgres < backup_fremis_20240530_143022.sqlVerifikasi integritas database (opsional, berguna untuk PostgreSQL):
psql -h db.internal -U postgres fremis_production -c "VACUUM ANALYZE;"Start ulang FREMIS-N instance:
docker start fremis-n-instance-idVerifikasi via health check endpoint:
curl http://localhost:4003/health
# Pastikan endpoint return HTTP 200 dan status "ready"Upgrade Antar Versi
Upgrade FREMIS-N dengan minimal downtime dan zero data loss.
Pre-Upgrade Checklist
- Baca CHANGELOG dari versi saat ini ke target version
- Backup database dan konfigurasi
- Test upgrade di staging environment terlebih dahulu
- Notifikasi users tentang scheduled maintenance window
- Pastikan database disk space mencukupi (migrations mungkin memerlukan space sementara)
Standalone (Single Node)
-
Backup database:
pg_dump -h db.internal -U postgres fremis_production > backup_pre_upgrade.sql -
Stop service:
docker stop fremis-n-service -
Upgrade Docker image:
docker pull registry.gitlab.com/nodefluxio/fremis-n:v2.0.0-cpu # atau gpu variant -
Start dengan image baru:
docker run -d \ --name fremis-n-service \ -e DB_CONNECTION_STRING="..." \ -e FREMIS_ACCESS_KEY="..." \ -e FREMIS_SECRET_KEY="..." \ registry.gitlab.com/nodefluxio/fremis-n:v2.0.0-cpu \ httpserver --listen-port 4003 -
Verifikasi:
curl http://localhost:4003/health
Cluster (Multi-Node)
Upgrade dapat dilakukan secara rolling (node-by-node) selama coordinator masih bisa merutekan request ke node yang sedang aktif.
-
Upgrade node satu per satu (mulai dari node dengan traffic paling rendah):
# 1. Stop node docker stop fremis-n-node1 # 2. Upgrade image docker pull registry.gitlab.com/nodefluxio/fremis-n:v2.0.0-cpu # 3. Start dengan image baru docker run -d ... registry.gitlab.com/nodefluxio/fremis-n:v2.0.0-cpu httpserver ... # 4. Tunggu node ready di health endpoint # 5. Verifikasi via metrics — pastikan load sudah di-handle node lain -
Upgrade coordinator terakhir:
docker stop fremis-n-coordinator docker pull registry.gitlab.com/nodefluxio/fremis-n:v2.0.0-cpu docker run -d ... registry.gitlab.com/nodefluxio/fremis-n:v2.0.0-cpu coordinator ...
Versi baru kemungkinan akan menjalankan schema migration otomatis saat startup. Proses ini mungkin memerlukan waktu (tergantung ukuran database) dan perlu exclusive lock ke database. Pastikan semua node sudah stopped sebelum upgrade untuk menghindari conflict.
Rollback
Jika upgrade gagal:
-
Hentikan instance baru:
docker stop fremis-n-service -
Restore database dari backup:
psql -h db.internal -U postgres < backup_pre_upgrade.sql -
Start ulang dengan image lama:
docker run -d ... registry.gitlab.com/nodefluxio/fremis-n:v1.9.0-cpu httpserver ... -
Verifikasi:
curl http://localhost:4003/health
Diagnosis & Logs
Panduan troubleshooting tinggal di halaman fitur masing-masing — lebih dekat ke konteks penggunaan:
- Recognition tidak akurat / threshold tuning — 1:N Search — Tips & Troubleshooting
- Enrollment ditolak / tidak muncul di recognition — Enrollment — Tips & Troubleshooting
- Latency tinggi, throughput rendah, HTTP 429 — Developer Guide — Performance Issues
- Service tidak start / 401-403 lisensi — Services — License & Connectivity Issues
- Database error saat startup, data hilang setelah restart — Installation — Database & Storage Issues
- Coordinator error, partition imbalance — Cluster Sharding — Troubleshooting Cluster