First published: Last updated:
References
Originally published in Japanese at https://zenn.dev/ymotongpoo/books/tinygo-otel-esp32/viewer/99-references.
This page lists the primary sources that this book refers to. The content at each link is as of the time of writing (October 2026).
OpenTelemetry specifications
- OTLP Specification: The specification that defines the OTLP transports, the protobuf and JSON encodings, the responses that qualify for a retry, and partialSuccess
- opentelemetry-proto: The protobuf schema for OTLP. The hand-written encoder in this book follows the field numbers in v1.11.0
- Metrics Data Model: How the data model treats gauge, cumulative sum, and
StartTimeUnixNano - Logs Data Model: The timestamps and severity of log records
- Deployment environment: The semantic convention for the resource attribute
deployment.environment.name
OpenTelemetry implementations
- OpenTelemetry Go: The official documentation for the Go API and SDK
- opentelemetry-go: The Go SDK repository
- go.opentelemetry.io/otel/sdk/metric: The metrics SDK
- otlpmetrichttp: The OTLP/HTTP metrics exporter
- go.opentelemetry.io/proto/otlp: The Go types generated from the OTLP protobuf
- OpenTelemetry Collector: The official documentation for the Collector
- opentelemetry-collector-contrib: The Collector distribution and the additional components that this book uses
- resource processor: A processor that rewrites resource attributes
- batch processor: A processor that groups data into batches before it sends them
OpenTelemetry and embedded devices
- open-telemetry/community#2160: The issue that proposed a working group to build an implementation for embedded devices
- Ted Young’s comment on open-telemetry/community#2160: A remark that OpenTelemetry is not designed for embedded devices
- opentelemetry-cpp#2483: The issue “Add support for embedded devices?”, which asked opentelemetry-cpp to support embedded devices
- Instrumenting my espresso machine with OpenTelemetry: A blog post by ClickHouse. It describes a case in which the control board of an espresso machine, which runs on an ESP32, sent OTLP
- GaggiMate: The open-source control board for espresso machines that the ClickHouse case used. It runs on an ESP32
- nanopb: A protobuf implementation in C for embedded devices
- ESP32 Firmware to OpenTelemetry: Documentation by base14. It describes a setup that collects telemetry from an ESP32 through MQTT and a bridge
TinyGo and drivers
- TinyGo: A Go compiler for microcontrollers and WebAssembly
- tinygo-org/tinygo: The TinyGo repository
- tinygo-otel-esp32: The reference implementation for this book. It contains the code shown in the text, the Collector configuration, and the Grafana dashboard
- tinygo-org/tinygo#5554: The pull request that adds PSRAM support for the ESP32-S3
- espradio: A driver that lets TinyGo programs use the Wi-Fi on an ESP32
- lneto: The TCP/IP stack that espradio uses
Go and protobuf
- protobuf-go: The protobuf runtime for Go
- dynamicpb: A protobuf message type that handles schemas at run time
- protojson: An implementation of the JSON mapping for protobuf
- Protocol Buffers: The official protobuf documentation
- Encoding: An explanation of the protobuf wire format
- encoding/json: The JSON package in the Go standard library
- crypto/rand: The package for cryptographic random numbers in the Go standard library
- golang.org/x/sys/unix: Go bindings for Unix system calls
Protocols
- RFC 4330: Simple Network Time Protocol (SNTP) Version 4
- MQTT: The messaging protocol that the base14 case uses between the device and the bridge
Hardware
- M5Stack CoreS3: The product documentation for the device that this book uses
- ESP32-S3: The Espressif product page
- ESP32-S3 Datasheet: The ESP32-S3 datasheet
- ESP32-S3 Technical Reference Manual: The ESP32-S3 technical reference manual
- Wi-Fi API (ESP-IDF): The Wi-Fi API reference, which includes
esp_wifi_sta_get_rssi
Backends and tools
- grafana/docker-otel-lgtm: A container image that bundles an OTLP endpoint with Prometheus, Loki, Tempo, and Grafana
- Grafana
- Prometheus
- Loki
- Tempo
- Span metrics: The Tempo feature that generates metrics from spans
- Docker Compose
Issues that I reported from the research for this book
Of the constraints that I found in the research for this book, I reported the following five to the projects on October 7, 2026.
- tinygo-org/espradio#75: A report that a program connected through
netlinkhas no way to set the clock (Chapter 8) - tinygo-org/espradio#76: A proposal for a function that returns the RSSI of the connected access point (Chapter 10)
- tinygo-org/tinygo#5839: A report that on the ESP32-S3, TinyGo does not report a goroutine stack overflow as
goroutine stack overflow. The program stops silently or crashes with a different error (Chapter 9) - Comment on tinygo-org/tinygo#5204: A case in which
otlpmetrichttpdoes not build becausetls.X509KeyPairis missing (Chapter 4) - Comment on tinygo-org/tinygo#3862: A case in which
proto.Marshalin protobuf-go panics because(reflect.Type).MethodByNameis not implemented (Chapter 5)