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

arcadedb_engine_snapshot_windows_overflowed_total

The shadow reached arcadedb.pageSnapshotMaxSize. Raise it, or give the spill volume more room.

arcadedb_engine_snapshot_windows_failed_total

A page pre-image could not be read or written. Look at the disk.

arcadedb_engine_snapshot_barrier_failed_total

The window could not be opened at all. Split by cause below.

arcadedb_engine_snapshot_barrier_failed_suspend_total

Transient and expected under sustained load.

arcadedb_engine_snapshot_barrier_failed_flush_total

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

  1. Install Grafana and add a Prometheus datasource pointing to your Prometheus instance

  2. Import or create dashboards using ArcadeDB metrics

  3. 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