Configuration

Everything lives in one TOML file. Unknown keys are an error, so typos fail loudly at startup.

Minimal example

[state]
dir = "/var/lib/fernwick"

[[source]]
name  = "nginx"
type  = "file"
paths = ["/var/log/nginx/*.log"]

[[source]]
name  = "system"
type  = "journald"
units = ["ssh.service", "cron.service"]

[[sink]]
name     = "loki"
type     = "loki"
url      = "http://127.0.0.1:3100/loki/api/v1/push"
labels   = { host = "${HOSTNAME}" }
batch    = { max_lines = 512, max_wait = "2s" }

Sources

typekeysnotes
filepaths, exclude, multilineGlobs are re-evaluated every 10s. Rotation is tracked by inode.
journaldunits, priorityRequires read access to the journal.
stdin—Handy for testing pipelines.

Sinks

typekeysnotes
httpurl, headers, formatNDJSON by default. Retries with jittered back-off.
lokiurl, labels, tenantUses the protobuf push API when available.
s3bucket, prefix, endpointWrites gzip'd hourly objects. Works with MinIO and R2.

Buffering

[buffer]
max_size = "256MiB"   # on-disk spill limit per sink
when_full = "block"   # or "drop_oldest"