Events and metrics

Two different records. The event journal is what the appliance observed: cartridge moves, drive activity, pool statistics, maintenance steps, job progress. The audit log (on the users and keys page) is who asked for what. Metrics are a Prometheus scrape.

GET /api/events/recent

read-only

The last 200 persisted events, newest first.

curl -sk https://appliance:8443/api/events/recent -H "Authorization: Bearer $OVTL_KEY"
[
  {"id": 5120, "ts": "2026-09-01T07:12:02Z", "kind": "drive_activity", "subject": "drive:10:0", "detail": "writing OVB003L5"},
  {"id": 5119, "ts": "2026-09-01T07:11:40Z", "kind": "cart_moved", "subject": "OVB003L5", "detail": "storage:3 -> drive:0"},
  {"id": 5118, "ts": "2026-09-01T07:10:00Z", "kind": "manual_unload", "subject": "OVB002L5", "detail": "OVB002L5: library 10 drive 1 -> storage slot 2 (manual)"}
]

GET /api/events/search

read-only

A query over the whole journal, newest first.

Query Default Notes
q Free-text substring match.
kind all Exact kind. all or empty means any.
limit 500
curl -sk "https://appliance:8443/api/events/search?q=OVB001L5&kind=cart_moved&limit=50" \
  -H "Authorization: Bearer $OVTL_KEY"

GET /api/events

read-only

A Server-Sent Events stream (text/event-stream). The stream carries diffs; resynchronise from GET /api/status when you connect or reconnect. A comment line is sent every 20 seconds as a keepalive.

curl -skN https://appliance:8443/api/events -H "Authorization: Bearer $OVTL_KEY"
: connected

event: job_update
data: {"ts":"2026-09-01T07:15:52Z","kind":"job_update","subject":"job:42","data":{"id":42,"kind":"export","state":"uploading","bytes_done":10737418240,"chunks_done":1,"…":"…"}}

event: maint_step
data: {"ts":"2026-09-01T07:20:01Z","kind":"maint_step","subject":"Activating libraries","data":{"label":"Activating libraries","step":"started mhvtl.target"}}

: keepalive

The SSE event: name is the kind; data: is the JSON event {ts, kind, subject, data}. Kinds emitted by v1.0.0:

Kind Subject Carries
job_update job:<id> The full job row on every state or progress change.
maint_step, maint_done The operation label Live checklist steps of an activation, data-plane restart, library delete, or recovery. maint_done carries ok, detail, and rebooting: true when the appliance is about to reboot.
system restart A graceful restart was abandoned after 30 minutes.
drive_activity drive:<lib>:<index> Activity transitions (idle, reading, writing, mounting).
pool_stats Pool name Periodic capacity and dedupe figures.
fc_state FC target verified/unverified with detail.
cart_minted, cart_deleted, cart_imported Label Cartridge lifecycle.
library_created, pool_created, pool_removed, storage_setup, storage_grown, storage_torndown Name Topology changes.
mhvtl_* queue:<n> Passthrough of tape-emulator daemon events.
Inventory diffs (for example cart_moved, manual_load, manual_unload) Label Changer moves the poller observed, with a detail string.

The set of kinds and the shape of data are not a stable contract; treat unknown kinds as informational.

GET /metrics

public

Prometheus text format, served on both the HTTPS port and the optional plaintext port. Deliberately unauthenticated: gauges and counters only, no labels that carry secrets. Keep it on a trusted management network or disable the plaintext listener.

curl -s http://appliance:8080/metrics
Series Labels Meaning
openvtl_pool_fs_used_bytes, openvtl_pool_fs_total_bytes pool Dataset used and total.
openvtl_pool_logical_bytes pool What the host wrote (pre-dedup, pre-compression).
openvtl_pool_dedup_ratio, openvtl_pool_compress_ratio pool Pool-wide dedup ratio and per-dataset compression ratio.
openvtl_pool_phys_est_bytes pool Estimated real disk share after global dedup.
openvtl_zpool_alloc_bytes, openvtl_zpool_size_bytes The shared system zpool’s real fill level.
openvtl_fc_target_verified 1 when the FC target passed identity verification.
openvtl_drive_blocks_written, openvtl_drive_blocks_read library (serial), drive Since-boot counters.
openvtl_jobs_total, openvtl_job_bytes_total, openvtl_job_duration_seconds_total kind, outcome Terminal jobs, derived from the database at scrape time.
openvtl_carts library, local_state Cartridge counts, resident versus evicted.
openvtl_target_sessions_active fabric Live initiator logins.