Case study

Simracing Telemetry Dashboard

Grafana-based simracing telemetry visualization

A simracing telemetry pipeline that receives UDP packets, processes them in Go and makes the data available through a Grafana plugin and dashboard. The plugin has a React configuration UI, and Docker Compose runs the local setup.

  • Observability pipeline
  • Completed
  • Grafana
  • Go
  • React
  • Docker
  • Telemetry

Overview

Project summary

What it is
A local simracing telemetry pipeline with UDP input, a Grafana data source plugin and a dashboard.
My role
I built the Go processing path, Grafana plugin package, React configuration UI, provisioning and Docker Compose runtime.
Core stack
Go, React, Grafana plugin, Docker Compose, UDP simracing telemetry.

Pipeline

The local package exposes UDP port 33740 for simracing telemetry and runs Grafana alongside it. Go processes the incoming data, the data source plugin makes it available to Grafana, and the dashboard displays it.

Grafana integration

The Go backend processes incoming telemetry for the Grafana data source plugin. Grafana requests those values through the plugin. The plugin also has a React configuration UI inside Grafana.

Runtime path

From UDP telemetry to Grafana panels

Telemetry pipeline diagramA pipeline from UDP telemetry input through Go processing, a Grafana data source plugin, a React plugin UI, dashboard panels, and Docker Compose packaging.Docker Compose local runtimeUDP streamport 33740input onlyGo layerprocessingbackend pathdata sourcepluginReact UIsettingsdashboard panelDocker Compose binds Grafana 3000, UDP 33740, plugin files, provisioning, and storageMobile telemetry pipeline diagramA stacked pipeline from UDP telemetry input to Go processing, Grafana plugin, React plugin UI, dashboard panel placement, and Docker Compose runtime package.Docker Compose runtimeUDP telemetry streamport 33740 inputGo processing layerbackend data pathGrafana data sourceplugin packageReact plugin UIsettingsdashboard panel placement

Packaging decision

Docker Compose mounts the plugin and provisioning files, exposes Grafana on port 3000, maps the UDP telemetry port, and enables the local unsigned plugin.

I put the plugin, backend, provisioning, dashboard, port mappings and startup configuration in one Docker Compose definition. Starting it brings up the whole local runtime.

Runtime boundary

Runtime partImplementation detailNote
UDP inputThe local package exposes UDP port 33740.UDP listener.
GrafanaThe Docker Compose bundle exposes port 3000, mounts the plugin, loads the provisioning files and enables the unsigned plugin.Grafana runtime.
Plugin UIThe Grafana data source plugin includes the React configuration UI.React UI.