Monitoring
ArcadeDB provides built-in metrics collection and integration with Prometheus and Grafana for production monitoring.
Enabling Metrics
Metrics are enabled by default. Verify with:
SELECT FROM ( SELECT expand(settings) FROM schema:database ) WHERE key = 'arcadedb.serverMetrics'
Or set in arcadedb-server.properties:
arcadedb.serverMetrics=true
arcadedb.serverMetrics.logging=true
Prometheus Integration
The Prometheus metrics plugin auto-registers when the metrics module is on the classpath (included in the standard distributions) and metrics are enabled (arcadedb.serverMetrics=true, the default). It exposes a scrape endpoint at http://localhost:2480/prometheus.
Authentication on the scrape endpoint is on by default; set arcadedb.serverMetrics.prometheus.requireAuthentication=false to allow unauthenticated scraping.
Configure Prometheus to scrape ArcadeDB:
# prometheus.yml
scrape_configs:
- job_name: 'arcadedb'
scrape_interval: 15s
metrics_path: /prometheus
static_configs:
- targets: ['localhost:2480']
basic_auth:
username: root
password: arcadedb
Available Metrics
ArcadeDB exposes metrics for:
-
Database operations — Query count, command count, read/write throughput
-
Cache — Page cache hits, misses, evictions
-
Disk — Read/write operations, compaction activity
-
Transactions — Active transactions, commits, rollbacks
-
Network — HTTP request count, response times
-
JVM — Heap usage, GC pauses, thread count
-
Backup — Point-in-time window activity (see below)
Backup point-in-time windows
A full backup, an HA database verify and an HA snapshot ship read a point-in-time image of the database. By default that image is served from a copy-on-write shadow, so writers keep running at full speed while it is read. When the shadow cannot be used the operation still completes, but by freezing the data files instead - which throttles every writer until it finishes.
That fallback is invisible from the outside: the backup succeeds either way. These counters are what make it alertable:
| Metric | Meaning |
|---|---|
|
The shadow reached |
|
A page pre-image could not be read or written. Look at the disk. |
|
The window could not be opened at all. Split by cause below. |
|
Transient and expected under sustained load. |
|
A pending write never landed. Points at the disk. |
Any of these rising means backups have quietly gone back to throttling writers. See arcadedb.pageSnapshotMaxSize, arcadedb.pageSnapshotMaxRAM and arcadedb.pageSnapshotSpillPath in Settings.
Periodic Metric Dumps
For environments without Prometheus, enable periodic metric logging:
arcadedb.dumpMetricsEvery=60
This dumps metrics to the server log every 60 seconds.
Grafana Dashboard Setup
-
Install Grafana and add a Prometheus datasource pointing to your Prometheus instance
-
Import or create dashboards using ArcadeDB metrics
-
For time series data visualization, use ArcadeDB’s native Grafana integration endpoints with the Infinity datasource plugin
Health Checks
Use the server info endpoint for health monitoring:
curl http://localhost:2480/api/v1/server
For time series health:
curl http://localhost:2480/api/v1/ts/mydb/grafana/health
Further Reading
-
Cloud Observability — RED metrics, OTLP export, tracing, structured logging, and health probes
-
Server Settings — All configuration parameters
-
Time Series — Grafana DataFrame endpoints for time series dashboards
-
Realtime Analytics Use Case — Complete monitoring example with Grafana