Device Logs Anywhere with Golioth Pipelines

Since the earliest days of the platform, Golioth has supported ingesting device logs and querying them via the console and management API. Combined with the Golioth Firmware SDK’s native integrations with RTOS logging subsystems, this functionality has made it easy to get started with basic device observability. Today we are expanding this capability by introducing support for routing device logs to any destination using Golioth Pipelines, relaxing the requirements on log format and enabling the use of your favorite SaaS and open source logging platforms.

The Old Way

Traditionally, the Golioth Firmware SDK has delivered device logs emitted by customer firmware to the Golioth Logs service. Developers do not need to directly interact with the service API, but rather use C macros, such as GLTH_LOGI, to emit messages at their desired log level. When using a supported RTOS, such as Zephyr, developers can also leverage the SDK’s logging subsystem integration to deliver log messages from libraries and drivers to the Golioth platform.

Behind the scenes, the Golioth Firmware SDK structures and encodes the log messages in a format that is compatible with the Golioth Logs service. It then buffers and sends the logs to the /logs endpoint of the Golioth device API. After the logs are delivered to Golioth, customers can query messages at the device and project level, filtering by metadata and time buckets.

The New Way

Since introducing Golioth Pipelines in May 2024, we have seen a wide range of customer product use cases be unlocked by the flexibility of the Golioth platform. The ability to easily send data in any format to any destination means that customers can easily integrate with existing cloud systems, drive down bandwidth costs using compact data encoding schemes, and preserve battery life by batching data payloads and delivering as bulk uploads. While many customers enjoy using Golioth’s internal data destinations, such as LightDB Stream for timeseries data and LightDB State for device status, we have always focused on solving the difficult problem of getting data to the cloud, then letting you use the best tool for the job.

In order to bring this same level of freedom to device logs, the latest version of the Golioth Firmware SDK updates the log processing functionality to route messages to Golioth Pipelines. We have introduced a new Golioth Logs data destination, which handles incoming logs on Pipelines. To replicate the previous functionality, customers can create the following Pipeline in their Golioth project to convert the CBOR encoded log messages to JSON then deliver them to the internal logs service. These logs are then viewable on the console or via the management API.

filter:
  path: "/logs"
  content_type: application/cbor
steps:
  - name: step-0
    transformer:
      type: cbor-to-json
      version: v1
    destination:
      type: logs
      version: v1

The path used for logs delivery can be changed using CONFIG_GOLIOTH_LOG_PIPELINES_PATH and customers who wish to upgrade to v0.22.0 of the Golioth Firmware SDK while preserving the previous behavior can set CONFIG_GOLIOTH_LOG_LEGACY=y.

With device logs flowing through Pipelines, messages can be transformed and routed to any of the existing data destinations, such as InfluxDB, and we’ll be introducing new destinations for more external logging services, as well as standardized vendor-neutral protocols, such as OpenTelemetry’s OTLP, in the coming weeks.

Getting Started

To get started, add a Pipeline to your existing Golioth project, or create a new project on Golioth (a logs Pipeline will be automatically created for you), then check out any of the example applications in the Golioth Firmware SDK. If you are interested in support for a specific logging service, let us know by creating a post on the Golioth Forum.

Dan Mangum
Dan Mangum
Dan is an experienced engineering leader, having built products and teams at both large companies and small startups. He has a history of leadership in open source communities, and has worked across many layers of the technical stack, giving him unique insight into the constraints faced by Golioth’s customers and the requirements of a platform that enables their success.

Post Comments

More from this author

Related posts

spot_img

Latest posts

WiFi HaLoW with Morse Micro, Zephyr, and Golioth

Wi-Fi HaLoW enables high throughput, at a long distance using ISM band radios (850-950 MHz, depending on location). This post introduces the concepts behind the demo and shows how to use Morse Micro, Zephyr, and Golioth to send data through walls and up to the cloud.

When Rapid Prototyping becomes Rapid Deployment

Modern IoT teams can move beyond rapid prototyping to rapid deployment. By combining LLM-assisted development with Golioth’s device management, connectivity, and fleet orchestration capabilities, it’s now possible to create IoT fleets with a range of connectivity options in days instead of months.

New Pipelines Data Destination: Amazon Kinesis

Amazon Kinesis is especially well-suited for high volume data and applications in which there are multiple consumers of the streamed data. Golioth pipelines added a destination that works directly with the Kinesis service.

Want to stay up to date with the latest news?

Subscribe to our newsletter and get updates every 2 weeks. Follow the latest blogs and industry trends.