edge-logger

Unified Telemetry & Log Forwarder (Fluent Bit + gRPC)

arm64amd64
LoggingTelemetryObservability
Overview
Primary hardware
Generic Edge (arm64/amd64)
What it does

Collects ROS 2 logs, system metrics (CPU/GPU temp, disk, network), ships to central logging via gRPC/HTTP.

Why it saves time

Debugging fleets is a nightmare without centralized telemetry — this container makes it turn-key.

Get access

Use StreamDeploy to manage OTA updates, versioned configs, and rollbacks across fleets.

Request access
Dockerfile
ARG BASE_IMAGE
FROM ${BASE_IMAGE:-"fluent/fluent-bit:2.2"}
USER root
RUN apk add --no-cache bash ca-certificates lm_sensors coreutils util-linux curl
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh

ENV FB_OUT_FORMAT=json \
    SINK_URL="" \
    HOSTNAME=edge-node \
    EXTRA_LABELS=""

EXPOSE 2020
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s \
  CMD nc -z localhost 2020 || exit 0

ENTRYPOINT ["/entrypoint.sh"]
entrypoint.sh
#!/usr/bin/env bash
set -euo pipefail

: "${SINK_URL:=}"
: "${HOSTNAME:=edge-node}"
: "${FB_OUT_FORMAT:=json}"
: "${EXTRA_LABELS:=}"

cat > /fluent-bit/etc/fluent-bit.conf <<'CONF'
[SERVICE]
    Daemon    Off
    HTTP_Server On
    HTTP_Listen 0.0.0.0
    HTTP_Port  2020

[INPUT]
    Name tail
    Path /var/log/*.log,/var/log/syslog
    Tag  sys.*
    Parser docker

[INPUT]
    Name cpu
    Tag  metrics.cpu

[INPUT]
    Name mem
    Tag  metrics.mem

[INPUT]
    Name disk
    Tag  metrics.disk

[INPUT]
    Name netif
    Tag  metrics.net

[INPUT]
    Name   systemd
    Tag    ros.*
    Systemd_Filter _COMM=ros2
    DB     /var/log/ros_systemd.sqlite
CONF

if [[ -n "${SINK_URL}" ]]; then
cat >> /fluent-bit/etc/fluent-bit.conf <<CONF
[OUTPUT]
    Name  http
    Match *
    Host  $(echo "${SINK_URL}" | sed -E 's#https?://([^/:]+).*#\1#')
    URI   /$(echo "${SINK_URL}" | sed -E 's#https?://[^/]+/?##')
    Format ${FB_OUT_FORMAT}
    Header X-Edge-Host ${HOSTNAME}
    Header X-Labels ${EXTRA_LABELS}
CONF
fi

exec /fluent-bit/bin/fluent-bit -c /fluent-bit/etc/fluent-bit.conf