vector-log-forwarder
Tiny log/metric shipper for fleets (HTTP/MQTT/Syslog → S3/HTTP)
arm64amd64
LoggingMetricsVectorObservability
Overview
Primary hardware
Generic Edge (arm64/amd64)
What it does
Uses Vector to tail container logs, parse JSON, and forward to your backend or cloud object storage.
Why it saves time
Batteries-included log pipeline with structured parsing and backpressure—no custom agents needed.
Get access
Use StreamDeploy to manage OTA updates, versioned configs, and rollbacks across fleets.
Request accessDockerfile
ARG BASE_IMAGE
FROM ${BASE_IMAGE:-"timberio/vector:0.38.0-debian"}
USER root
RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates curl && rm -rf /var/lib/apt/lists/*
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENV VECTOR_CONFIG=/etc/vector/vector.yaml \
SINK_URL="" \
HOSTNAME=edge-node
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s \
CMD nc -z localhost 8686 || exit 0
ENTRYPOINT ["/entrypoint.sh"]
entrypoint.sh
#!/usr/bin/env bash
set -euo pipefail
: "${SINK_URL:=}"
mkdir -p /etc/vector
cat > /etc/vector/vector.yaml <<'YML'
sources:
docker_logs:
type: docker_logs
include_containers: ["*"]
transforms:
to_json:
type: remap
inputs: [docker_logs]
source: |
.hostname = get_env!("HOSTNAME")
if exists(.message) && is_string(.message) {
.parsed, err = parse_json(.message)
if err == null { . = .parsed }
}
sinks:
http_out:
type: http
inputs: [to_json]
uri: "${SINK_URL}"
encoding:
codec: json
YML
exec /usr/local/bin/vector -c /etc/vector/vector.yaml -w /var/lib/vector