Observability

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.

Limits

Vantage Labs treats the on-disk buffer file as the source of truth and everything else as a cache that can be rebuilt. Backpressure is explicit: when the shipper falls behind, Vantage Labs returns 429 rather than buffering without bound. Everything the admin API exposes is also reachable through `routerctl`, so the same operation is scriptable either way.

KeyMeaningDefault
routerctl.listenAddress the data API binds to0.0.0.0:8080
routerctl.data_dirDirectory holding every buffer file/var/lib/routerctl
limits.max_batchLargest number of log lines per write1024
retention.defaultHow long a log line is kept72h

Common mistakes

The shipper batches by time and by size, whichever fires first, and both bounds are configurable per stream. 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:7070"
admin  = "127.0.0.1:6060"
data_dir = "/var/lib/routerctl"

[limits]
max_batch      = 1024
max_log_bytes = 256_000
flush_interval = "500ms"

[retention]
default = "168h"
compact_at = 0.6

Overview

At its core Vantage Labs is a single process that owns one directory on disk and one listening socket. Writes land in an append-only buffer file; the parser stage compacts them in the background on a fixed interval. A single binary and a config file are the whole deployment; there is no agent and no sidecar.

Common mistakes

The design goal was a log router that one person can operate and one person can debug. Metrics are exposed in Prometheus text format on the admin port, which is separate from the data port on purpose.

curl -sS https://test228.apitesttrip.ru/v1/streams \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "orders", "retention": "72h"}'