Skip to content

Metrics Reference

All metrics are Gauges, prefixed transceiver_exporter_, and derived from transceiver-collector/collector.go. Every metric carries an interface label naming the NIC it was read from; laser measurements additionally carry laser_index (a transceiver can have more than one laser, e.g. parallel-fiber QSFP optics).

There is no background collection loop: everything below is read fresh, synchronously, on every scrape of /metrics.

Emission conditions

Not every metric appears for every interface, by design:

  • Driver-info metrics (driver_name_info, driver_version_info, firmware_version_info, bus_info, expansion_rom_version_info) appear for any interface the driver reports info for, whether or not it has a transceiver plugged in.
  • Interface-feature metrics (interface_feature_active/_available) appear only when -collector.interface-features.enable is true (the default) and the driver's feature query succeeds.
  • Transceiver-identity and EEPROM-derived metrics (everything from identifier_info onward) appear only when the driver returns EEPROM data at all — no transceiver plugged in, or a driver that doesn't implement the ethtool module-EEPROM operations, means none of these are emitted for that interface.
  • DOM metrics (module temperature/voltage, laser bias/power) appear only when the module reports SupportsMonitoring() == true. A transceiver without digital diagnostics still yields the identity metrics above, just none of these.
  • Per-laser metrics appear only for lasers where laser.SupportsMonitoring() is true.
  • Threshold metrics (*_high_alarm_threshold_*, *_high_warning_threshold_*, *_low_alarm_threshold_*, *_low_warning_threshold_*) for a given measurement appear only when that measurement's SupportsThresholds() is true; the matching *_supports_thresholds_bool metric is always emitted alongside the value once monitoring is supported, so it tells you whether to expect the four threshold series.

A failure reading one interface (permission denied, a driver error) is logged and skipped — it does not stop metrics for other interfaces. See Troubleshooting.

Driver info

MetricLabelsValueMeaning
transceiver_exporter_driver_name_infointerface, driver_namealways 1Info metric; the driver name is carried in the label.
transceiver_exporter_driver_version_infointerface, driver_versionalways 1Driver version, as a label.
transceiver_exporter_firmware_version_infointerface, firmware_versionalways 1NIC firmware version, as a label.
transceiver_exporter_bus_infointerface, bus_informationalways 1Bus address (e.g. PCI slot) reported by the driver, as a label.
transceiver_exporter_expansion_rom_version_infointerface, expansion_rom_versionalways 1Expansion ROM version, as a label.

Interface features

MetricLabelsUnitMeaning
transceiver_exporter_interface_feature_availableinterface, feature_nameboolean (1/0)1 if the named ethtool feature (offload, etc.) is available on this interface.
transceiver_exporter_interface_feature_activeinterface, feature_nameboolean (1/0)1 if the named feature is currently active/enabled.

Transceiver identity

MetricLabelsUnitMeaning
transceiver_exporter_identifier_infointerface, identifierinfoType of transceiver (e.g. SFP, QSFP), as a label.
transceiver_exporter_encoding_infointerface, encodinginfoTransceiver line-encoding scheme, as a label.
transceiver_exporter_powerclass_infointerfaceintegerHighest power class supported by the transceiver (the raw class byte).
transceiver_exporter_powerclass_wattsinterfacewattsMaximum wattage allowed by that power class.
transceiver_exporter_signalingrate_bauds_per_secondinterfacebaud/sSignaling rate supported by the transceiver.
transceiver_exporter_supported_link_length_meterinterface, mediametersMaximum supported link length, one series per supported media type.
transceiver_exporter_vendor_name_infointerface, vendor_nameinfoVendor name, as a label.
transceiver_exporter_vendor_part_number_infointerface, vendor_part_numberinfoVendor part number, as a label.
transceiver_exporter_vendor_revision_infointerface, vendor_revisioninfoVendor hardware revision, as a label.
transceiver_exporter_vendor_serial_number_infointerface, vendor_serial_numberinfoVendor serial number, as a label.
transceiver_exporter_vendor_oui_infointerface, vendor_ouiinfoVendor IEEE company (OUI) ID, as a label.
transceiver_exporter_date_code_unix_timeinterfaceUnix secondsVendor-supplied manufacture date code.
transceiver_exporter_wavelength_nanometerinterfacenanometersOptical wavelength.
transceiver_exporter_module_supports_monitoring_boolinterfaceboolean (1/0)1 if the module supports digital optical monitoring (DOM). Gates all metrics in the next two sections.

Module temperature and voltage

Emitted only when module_supports_monitoring_bool is 1.

MetricLabelsUnitMeaning
transceiver_exporter_module_temperature_degrees_celsiusinterface°CModule temperature.
transceiver_exporter_module_temperature_supports_thresholds_boolinterfaceboolean1 if temperature alarm/warning thresholds are supported.
transceiver_exporter_module_temperature_high_alarm_threshold_degrees_celsiusinterface°CHigh-alarm threshold.
transceiver_exporter_module_temperature_high_warning_threshold_degrees_celsiusinterface°CHigh-warning threshold.
transceiver_exporter_module_temperature_low_alarm_threshold_degrees_celsiusinterface°CLow-alarm threshold.
transceiver_exporter_module_temperature_low_warning_threshold_degrees_celsiusinterface°CLow-warning threshold.
transceiver_exporter_module_voltage_voltsinterfaceVModule supply voltage.
transceiver_exporter_module_voltage_supports_thresholds_boolinterfaceboolean1 if voltage alarm/warning thresholds are supported.
transceiver_exporter_module_voltage_high_alarm_threshold_voltageinterfaceVHigh-alarm threshold.
transceiver_exporter_module_voltage_high_warning_threshold_voltageinterfaceVHigh-warning threshold.
transceiver_exporter_module_voltage_low_alarm_threshold_voltageinterfaceVLow-alarm threshold.
transceiver_exporter_module_voltage_low_warning_threshold_voltageinterfaceVLow-warning threshold.

Per-laser metrics

Emitted per laser_index (interface + laser_index labels), only for lasers where laser.SupportsMonitoring() is true.

MetricUnitMeaning
transceiver_exporter_laser_supports_monitoring_boolboolean1 if this laser supports real-time monitoring. Gates the rest of this table.
transceiver_exporter_laser_bias_current_milliamperesmALaser bias current.
transceiver_exporter_laser_bias_current_supports_thresholds_boolboolean1 if bias-current thresholds are supported.
transceiver_exporter_laser_bias_current_high_alarm_threshold_milliamperesmAHigh-alarm threshold.
transceiver_exporter_laser_bias_current_high_warning_threshold_milliamperesmAHigh-warning threshold.
transceiver_exporter_laser_bias_current_low_alarm_threshold_milliamperesmALow-alarm threshold.
transceiver_exporter_laser_bias_current_low_warning_threshold_milliamperesmALow-warning threshold.

TX/RX optical power

-collector.optical-power-in-dbm (default false) selects which of the two families below is emitted. The two families are mutually exclusive — enabling the flag replaces the _milliwatts series with _dbm series, it does not add the latter alongside the former. The *_supports_thresholds_bool metrics are emitted unconditionally either way.

Metric (mW, default)Metric (dBm, -collector.optical-power-in-dbm)UnitMeaning
transceiver_exporter_laser_tx_power_supports_thresholds_bool(same, unit-independent)boolean1 if TX power thresholds are supported.
transceiver_exporter_laser_tx_power_milliwattstransceiver_exporter_laser_tx_power_dbmmW / dBmLaser transmit power.
transceiver_exporter_laser_tx_power_high_alarm_threshold_milliwattstransceiver_exporter_laser_tx_power_high_alarm_threshold_dbmmW / dBmHigh-alarm threshold.
transceiver_exporter_laser_tx_power_high_warning_threshold_milliwattstransceiver_exporter_laser_tx_power_high_warning_threshold_dbmmW / dBmHigh-warning threshold.
transceiver_exporter_laser_tx_power_low_alarm_threshold_milliwattstransceiver_exporter_laser_tx_power_low_alarm_threshold_dbmmW / dBmLow-alarm threshold.
transceiver_exporter_laser_tx_power_low_warning_threshold_milliwattstransceiver_exporter_laser_tx_power_low_warning_threshold_dbmmW / dBmLow-warning threshold.
transceiver_exporter_laser_rx_power_supports_thresholds_bool(same, unit-independent)boolean1 if RX power thresholds are supported.
transceiver_exporter_laser_rx_power_milliwattstransceiver_exporter_laser_rx_power_dbmmW / dBmLaser receive power.
transceiver_exporter_laser_rx_power_high_alarm_threshold_milliwattstransceiver_exporter_laser_rx_power_high_alarm_threshold_dbmmW / dBmHigh-alarm threshold.
transceiver_exporter_laser_rx_power_high_warning_threshold_milliwattstransceiver_exporter_laser_rx_power_high_warning_threshold_dbmmW / dBmHigh-warning threshold.
transceiver_exporter_laser_rx_power_low_alarm_threshold_milliwattstransceiver_exporter_laser_rx_power_low_alarm_threshold_dbmmW / dBmLow-alarm threshold.
transceiver_exporter_laser_rx_power_low_warning_threshold_milliwattstransceiver_exporter_laser_rx_power_low_warning_threshold_dbmmW / dBmLow-warning threshold.

The dBm conversion is 10 * log10(milliwatts). A raw reading of exactly 0 mW converts to -Inf, which some scrapers or exporters not fully implementing IEEE 754 may mishandle — see Troubleshooting.