remap transform, and ships it to Rootprint over OTLP. Records land in the index your ingest API key is scoped to: otel-logs-v0_9 in this guide.
Prerequisites
- A running Rootprint instance. Substitute its host for
<your-rootprint>. - An ingest API key scoped to
otel-logs-v0_9. Create one in Settings → API keys with Create ingest key, then substitute it for<your-ingest-api-key>. See API keys. - A Linux host, with Docker Compose if you run Vector in a container.
1
Write the config
Replace
<your-rootprint>, <your-ingest-api-key>, the include glob, and myapp with your
service name.read_from: end skips existing lines on first start. Set it to beginning for a one-time
backfill. After the first read, Vector resumes from its saved offset.2
Run Vector
- Bare Metal
- Docker
Install Vector from the installation page.
-
Save the config as
/etc/vector/vector.yaml. -
The service runs as the
vectoruser. Let it read the log files. On Debian/Ubuntu,/var/logfiles usually belong to theadmgroup:Alternatively,sudo chmod a+rthe log files. That opens them to every user on the host. -
Restart Vector.
statusshould showactive (running)with no config or sink errors:
3
Send a test log line
4
Verify in Rootprint
Open Logs, pick
otel-logs-v0_9 from the index selector, and search for
hello from vector. Records typically appear within 5–10 seconds.What the remap does
Theopentelemetry sink accepts only events shaped like an OTLP request. The remap builds that envelope and deletes the file source’s own top-level fields.
service.name: fills Rootprint’sservice_namecolumn. Replacemyapp.host.name: set fromget_hostname!().body: the raw log line. To parse fields out of it, add aremapbeforeto_otlpand put the parsed fields inattributes.- Log level: every record is
INFO. SetseverityTextandseverityNumberfrom the line if you need real levels. - Timestamps: both use the time Vector read the line. Parse the line’s own timestamp into
timeUnixNanoif you need it.
Troubleshooting
403when the token comes from${VAR}: Vector 0.57 and later don’t interpolate environment variables in config files by default, so the literal${VAR}is sent as the key. SetVECTOR_DANGEROUSLY_ALLOW_ENV_VAR_INTERPOLATION=truein Vector’s environment.415from Rootprint:encoding.codecmust beotlp.- 401/403/413/415: see Response codes.
Related
- Send logs from Docker: collect every container’s stdout instead of specific files.
- OTLP reference: endpoint, response codes, limits.
- Indexes: the
otel-logs-v0_9schema.

