Duct - a pluggable Python telemetry pipeline¶
Duct is an asyncio daemon that polls sources on configurable intervals and routes the resulting events to outputs. Both are plain Python classes: anything Python can reach - a socket, a file, an HTTP API, a subprocess, an SSH session, a hardware sensor - can be a source or an output.
What makes it different:
Sources and outputs can run network servers. The Prometheus output hosts an HTTP scrape endpoint; the sFlow source is a UDP collector; the Riemann source acts as a full Riemann TCP server. Duct can receive telemetry from other systems, not only emit it.
SSH remote checks, no remote agent. Mark any source
use_ssh: trueand it runs on a remote host over a pooled SSH connection.Modern, backend-agnostic. InfluxDB 3, Prometheus, NATS (JetStream + SenML/CBOR), Elasticsearch, Graphite, and more.
Fine-grained routing. Route individual sources to specific outputs or sets of outputs.
Blueprint macros. DRY config: define a toolbox of checks once and expand it across a list of hosts with a single block.
Contents¶
API Documentation¶
- duct.protocol
- duct.protocol.elasticsearch
- duct.protocol.i2c
- duct.protocol.icmp
- duct.protocol.influxdb3
- duct.protocol.opentsdb
- duct.protocol.riemann
- duct.protocol.senml
- duct.protocol.sflow.protocol.counters
- duct.protocol.sflow.protocol.flows
- duct.protocol.sflow.protocol.protocol
- duct.protocol.sflow.protocol.utils
- duct.protocol.sflow.protocol.xdr
- duct.protocol.sflow.server
- duct.protocol.ssh
- duct.logs
- duct.sources
- duct.sources.apache
- duct.sources.database.elasticsearch
- duct.sources.database.memcache
- duct.sources.database.postgresql
- duct.sources.docker
- duct.sources.generator
- duct.sources.haproxy
- duct.sources.linux.basic
- duct.sources.linux.ipsec
- duct.sources.linux.process
- duct.sources.linux.sensors
- duct.sources.mail
- duct.sources.media.libav
- duct.sources.munin
- duct.sources.nats
- duct.sources.network
- duct.sources.nginx
- duct.sources.postfix
- duct.sources.power.nut
- duct.sources.power.raritan_px
- duct.sources.python.uwsgi
- duct.sources.rabbitmq
- duct.sources.redis
- duct.sources.riak
- duct.sources.riemann
- duct.sources.sensors.environment.ds18b20
- duct.sources.sensors.environment.mpl115
- duct.sources.sflow
- duct.sources.snmp
- duct.sources.unbound
- duct.outputs