Series: Building Infrastructure for an Autonomous Drone Fleet (2/4)

Part 1: Device Identity · Part 2: Telemetry · Part 3: Monitoring · Part 4: Battery Management

The Data Source

Autonomous vehicles communicate internally via MAVLink, a lightweight binary protocol. The flight controller broadcasts dozens of message types per second. We care about a subset: battery state, GPS position, system health, network quality.

The Bridge — Translating Hardware to Software

A lightweight process on each drone subscribes to the flight controller’s data stream. It extracts the fields we need, structures them as JSON, wraps them in syslog format, and sends over UDP to the platform. Why syslog over UDP? Already proven for the VPN health pipeline, works over unreliable links, no acknowledgment overhead — fire-and-forget by design.

Ingestion — Catching the Firehose

A dedicated ingestion service receives the syslog stream and parses every message. Each message is categorized: telemetry, battery, network, GPS, system event. Dual storage strategy: raw log for audit, specialized tables for fast queries.

The Live Dashboard

A web dashboard shows the current state of every device in the fleet. Fleet map with GPS positions, battery levels, connectivity status. Typical latency from drone to dashboard: under 5 seconds.

Historical Storage — The Second Service

The live service optimizes for “what’s happening now.” A separate monitoring service polls the ingestion service on a schedule (every 5 minutes). Each log is routed to a category-specific table with its own schema. Database-level deduplication ensures exactly-once semantics despite polling overlaps.

The Full Path — One Message, Six Hops

Flight controller → bridge process → UDP syslog → ingestion service → live database → polling service → historical database → frontend. The design philosophy: lose a message rather than block the pipeline.