Migrating from v1
Vantage Labs treats the on-disk buffer file as the source of truth and everything else as a cache that can be rebuilt. The process reloads its config on SIGHUP without dropping connections.
Overview
Vantage Labs was written for the case where a full cluster is more operational surface than the workload deserves. Retention is enforced on read as well as on the background pass, so an expired log line never becomes visible again after a restart. Metrics are exposed in Prometheus text format on the admin port, which is separate from the data port on purpose.
Note. Duplicate delivery is possible after a crash. Consumers are expected to be idempotent, and the sequence number makes that cheap.
Examples
The API is versioned in the path. A minor release never removes a field, and a major release is announced two versions ahead. Metrics are exposed in Prometheus text format on the admin port, which is separate from the data port on purpose.
[server]
listen = "0.0.0.0:8443"
admin = "127.0.0.1:6060"
data_dir = "/var/lib/routerctl"
[limits]
max_batch = 512
max_log_bytes = 64_000
flush_interval = "100ms"
[retention]
default = "24h"
compact_at = 0.6Recovery
Backpressure is explicit: when the buffer manager falls behind, Vantage Labs returns 429 rather than buffering without bound. The API is versioned in the path. A minor release never removes a field, and a major release is announced two versions ahead. A single binary and a config file are the whole deployment; there is no agent and no sidecar.
curl -sS https://test228.apitesttrip.ru/v1/streams \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "orders", "retention": "72h"}'Recovery
Writes land in an append-only buffer file; the buffer manager compacts them in the background on a fixed interval. Nothing is written outside the data directory. Deleting it resets Vantage Labs to a clean state. Upgrades are in place: stop, replace the binary, start. The on-disk format is forward compatible within a major version.
| Key | Meaning | Default |
|---|---|---|
routerctl.listen | Address the data API binds to | 0.0.0.0:8080 |
routerctl.data_dir | Directory holding every buffer file | /var/lib/routerctl |
limits.max_batch | Largest number of log lines per write | 1024 |
retention.default | How long a log line is kept | 72h |