Skip to content

Producer directory

A producer is anything that emits OpenTelemetry entity events into Toise — a host agent, a network scanner, a cloud-inventory job, a small script. This page is the catalog of producers we know about, plus the SDK and the conformance tool you build them with. To write your own, start with Write a producer.

The SDK

pkg/emit The Go producer SDK. A Client with two verbs (State, Delete) that builds and exports spec-correct entity events, so you never hand-roll the wire contract. Versioned as a nested module (go get github.com/toise-dev/toise/pkg/emit).

You do not need the SDK to produce — any language that can send OTLP logs works. The SDK just removes the boilerplate and keeps you on-spec. Whatever you use, validate the output with the conformance tool below.

Example producers (in this repo)

Worked, self-contained examples under examples/. None is compiled into the server; each talks to Toise only over OTLP ingest, the way a third-party integration would. Start with producer-minimal.

Producer Source it maps Vocabulary Needs
producer-minimal A host and a service listener (static) built-in nothing — runs against a stock server
producer-docker Local Docker containers built-in (container) docker
producer-uptime HTTP/website uptime of a URL list open (service.endpoint) server with --accept-unknown-types
producer-systemd systemd service units (Linux) open (service) systemctl + --accept-unknown-types

"Open vocabulary" producers emit entity types outside the built-in registry, so they need a server started with --accept-unknown-types — see the open vocabulary.

External producers

Producers maintained outside this repo. Open a PR to add yours.

Producer Maintained by What it maps
senhub-agent senhub A real-world host/service/network monitoring agent that emits entity events as one of its OTLP producers.

Validate any producer: the conformance tool

toise-conformance checks a producer's OTLP entity-event output against the wire contract without a running Toise. It works for producers in any language — dump the OTLP ExportLogsServiceRequest your producer would send (protobuf or JSON) and pipe it in:

# install (Go toolchain)
go install github.com/toise-dev/toise/pkg/emit/cmd/toise-conformance@latest

# validate a captured batch (format auto-detected)
toise-conformance producer-output.bin

# or straight from a producer that can dump its OTLP
my-producer --dump-otlp | toise-conformance

It prints every violation and exits:

  • 0 — conformant (Toise accepts the records without per-record rejection).
  • 1 — rejections found (records Toise would drop); fix the producer.
  • 2 — usage or decode error.

Advisory problems (e.g. a missing service.instance.id, which collapses per-producer liveness) are reported but do not fail the run — pass -strict to treat them as failures in CI.

Go producers can also wire the pkg/emit/conformance package directly into their tests, checking the exact plog.Logs they build against the same byte-pinned contract fixture.