transceiver-exporter¶
Read the diagnostics off your pluggable optics and expose them as Prometheus metrics. transceiver-exporter is a small Go binary that walks every network interface on a Linux host, asks the kernel driver for its transceiver EEPROM over ethtool, and serves the result — vendor identity, wavelength, power class, and live digital optical monitoring (DOM) data where the module supports it — on a /metrics endpoint.
It works with any pluggable form factor the kernel's ethtool ioctls can see EEPROM for: SFP, SFP+, SFP28, QSFP, QSFP+, QSFP28 and similar modules. There is no hardcoded form-factor or vendor list — whatever the NIC driver's get_module_info/get_module_eeprom implementation reports is what gets exported. This also means driver support is the exporter's actual dependency: a NIC driver that does not implement the ethtool module EEPROM ops (or a virtual/software interface with no transceiver at all) simply yields no EEPROM metrics for that interface — see Troubleshooting.
The source, releases and issue tracker live on GitHub.
Start here¶
- Getting started — run the binary, scrape it, see a metric.
- Installation — Docker, Docker Compose, a release binary, or building from source.
- Configuration — every command-line flag and its default.
- Metrics catalog — every metric this exporter emits, with labels and units.
- Permissions — the
CAP_NET_ADMINrequirement, and what happens without it.
What it collects¶
| Area | What you get |
|---|---|
| Driver info | Driver name, driver version, firmware version, bus info, expansion ROM version — from the interface's ethtool driver info, independent of any transceiver being present. |
| Interface features | The ethtool feature set (offloads, etc.) per interface, as available/active gauges. Optional — can produce a lot of series on a many-port switch. |
| Transceiver identity | Identifier type, encoding, power class and its wattage, signaling rate, supported link lengths per media, vendor name/part number/revision/serial/OUI, manufacture date code, wavelength. |
| Digital optical monitoring (DOM) | Module temperature and supply voltage, per-laser bias current, and per-laser TX/RX optical power — each with its supported alarm/warning thresholds, when the module reports them. |
Everything is a per-interface (and, for laser measurements, per-interface-per-laser-index) gauge. See the metrics catalog for the exhaustive list.
How it works¶
One HTTP scrape of /metrics triggers one collection pass: enumerate interfaces, open an ethtool handle, and query each interface's driver info and EEPROM in turn. There is no background polling loop and no caching between scrapes — every scrape is a fresh read. See Architecture.
Project¶
transceiver-exporter is an independently maintained continuation of wobcom/transceiver-exporter and the underlying wobcom/go-ethtool library. All original credit for the project's design belongs to the wobcom authors — @fluepke, @BarbarossaTM and @vidister. This repository is not in GitHub's fork network; it is a from-scratch continuation carrying the same license.
Licensed under AGPL-3.0, unlike most exporters in this fleet, which use a permissive license. If you run a modified version of this exporter as a network service, the AGPL-3.0 requires you to make your modified source available to users of that service — see LICENSE.md in the repository for the full terms.
Bug reports, feature requests and pull requests are welcome — see the open issues or the latest release.