Free and Apache-2.0. Collects host, network, container and vendor metrics once, models them on OpenTelemetry semantic conventions, and serves them natively to the platforms you already run. 83 integrations, one static binary, no runtime.
$ senhub-agent config init --otlp-endpoint otel-collector.internal:4317
# /etc/senhub-agent/probes.d/10-postgresql.yaml - name: postgresql type: postgresql params: host: db.example.com port: 5432 username: senhub_monitor password: ${secret:postgres.password}
PRTG, Nagios and Prometheus need no configuration at all — they are served from
the built-in HTTP output. Secrets are stored with
senhub-agent secret set, read from standard input, never from the
command line.
One integration is one thing watched: a service, a device, an endpoint. You enable it in a file, or from the console. Eighty-three in the catalogue — some specific to Windows or to Linux, so a given host offers fewer.
The agent speaks the Zabbix protocol in both directions, and generates the Zabbix templates from its own probe definitions — the part a third-party agent normally leaves you to model by hand in the front end. Give it the server address at install time and a new host registers and fills in on its own.
The agent connects out, asks the server which items it wants for this host, and pushes values in batches — encrypted with a pre-shared key or a certificate. An unknown host triggers autoregistration, so a whole fleet appears in Zabbix without anyone creating hosts by hand. Proxy groups are followed to the member holding the host.→ server :10051
The agent listens and answers the server's polls over TLS, with an allow-list of permitted addresses, in both dialects — the raw key before Zabbix 7.0, the framed request from 7.0 on. A plaintext poll, a wrong key or a wrong identity is refused.← agent :10050
One template per probe type and platform, generated from the agent's own metric definitions rather than maintained by hand — with low-level discovery for anything that comes in varying numbers: filesystems, interfaces, instances. Enable a probe, its template is already there.
Host inventory fields are populated from what the agent already knows about the machine, so the Zabbix side stops drifting from reality the week after someone typed it in.
senhub-agent zabbix setup --url <frontend> --token-file <f>
imports the templates, creates the host group and the autoregistration
action. After that, two lines naming the server in the agent's config are
enough: the host registers itself, gets its templates linked, and its items
arrive by low-level discovery.
Pushing values into Zabbix is something several agents do. This one also answers the server's own polls, and hands you the templates — generated from its probe definitions and imported for you, so the items are not modelled by hand. PRTG and Nagios are served natively from the same process.
And it holds on a locked-down site. A pre-shared key is the only encryption Zabbix offers for autoregistration — it will not take a certificate for that step — so without PSK a fleet cannot enrol itself where that step is encrypted. SenHub Agent speaks it, which is what keeps the zero-click setup true there too.
Verified end to end against real servers on Zabbix 7.0 and 8.0. Free and Apache-2.0, like every other output.
Owner, criticality, site and lifecycle are declared once in the agent's configuration and ride with every metric and log the agent emits. They are OpenTelemetry resource attributes, so they survive the trip into any backend that understands them — and hosts, containers and services carry them into the entity graph, where you can filter on them.
# senhub-agent.yaml resource: entity.owner.team: platform-core entity.owner.contact: platform@example.com service.criticality: critical entity.location.site: par-dc1 entity.lifecycle.status: production
The same labels ride with the signal whether it leaves over OTLP or answers a Zabbix poll — no mapping table to keep in sync.
The owning team, the contact and the criticality travel with the signal, so they are already present when a rule fires.
A single static Go binary: no JVM, no Python, no agent framework, nothing extra to keep patched. Linux amd64 and arm64, Windows amd64, signed packages, an MSI installer and an official container image. It runs on bare metal, a virtual machine, a container or a Windows server, collecting locally and serving out from the same process.
It also carries its own console: edit a probe and test it in place, set the listen port, the bind address and the licence, without touching a file.
Every release ships with a written note: what changed, why, and what breaks.
Every application of a subscription discovered and followed with its
coverage measured, jobs discovered too, one Azure identity shared across
probes, senhub-agent check azure to verify permissions, and
official Grafana dashboards.
Signed packages and repositories, an Ansible collection, a Helm chart and a Podman Quadlet unit. Probes can be declared from environment variables. Credentials in a probe's connection URI are no longer written to the log — upgrade, then rotate anything that was exposed.
Durations in seconds, throughputs in bytes per second, gauges without
their .total suffix. Dashboards, alerts and Zabbix templates
on the old names need updating.
Collecting a metric means identifying what produced it. So alongside the measurements, the agent can emit the things themselves — hosts, services, containers, network interfaces and the relations between them — as OpenTelemetry entity events.
That output feeds Toise, our map of what runs where and how it changed. It requires an OTLP output; an agent deployed only for Zabbix, PRTG or Nagios collects metrics and stops there.
This is the newest part of the agent. Treat it as groundwork that comes with a collection you were running anyway, not as a finished inventory product.
The agent, every output and 65 of the 83 integrations are Apache-2.0 — that is the whole product for most people, with nothing to sign and nothing to expire. No output and no protocol is ever behind a licence.
The 18 vendor integrations that took weeks of protocol work each — Citrix, NetScaler, Veeam, VMware HA, Oracle Enterprise, PowerStore, the Azure and Microsoft 365 ones — are the commercial layer. They fund the rest.