ATM we're using Torrus (https://torrus.wikimedia.org) only for PDUs aggregates to report and track power usage. All of SNMP polling for network devices for example is handled inside librenms instead. I took a look at https://github.com/prometheus/snmp_exporter which recently got rewritten in Go and it might suit "PDU metrics" use case too.
Implementation would look like this:
- snmp_exporter deployed on the host(s) that will do SNMP polling
- Configure snmp_exporter with snmp community and a list of interesting OIDs to poll
- Including SNMP tables exported by the PDUs (i.e. described by this MIB http://www.circitor.fr/Mibs/Html/Sentry3-MIB.php)
- The exporter above exposes a /snmp endpoint over HTTP that will poll a specified "target" when asked
- Configure Prometheus to call the above endpoint for each PDU to monitor
TODO:
- Integrate servertech4 MIB too, for newer PDUs (all of ulsfo, part of eqiad as of Jul 2019)
- Namespace snmp_exporter metrics with e.g. snmp or pdu instead of the bare OID name (e.g. infeed)
- (TBD how hard/complext it is to do) join infeed IDs with line IDs to have XYZ in metric labels instead of numeric IDs
- Aggregate said metrics into the Prometheus global instance