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