Deploying an exporter for third party hardware devices

119 views
Skip to first unread message

Matt Layher

unread,
Aug 5, 2017, 12:35:01 PM8/5/17
to Prometheus Developers
Hi all,

I'm building a Prometheus exporter for SiliconDust HDHomeRun devices.  These devices expose a couple of ports used for device discovery, querying, and control.

I've consulted the "Writing exporters" (https://prometheus.io/docs/instrumenting/writing_exporters/) document, but I'm having a hard time deciding if I should enable a single instance of the exporter to discover and fetch metrics from all of the HDHomeRun devices available on a user's LAN.

The document mentions an exception to the "one exporter per instance application" rule that may apply to my use case:

> The first is where running beside the application your monitoring is completely nonsensical. SNMP, blackbox and IPMI are the main examples of this. IPMI and SNMP as the devices are effectively black boxes that it’s impossible to run code on [...]

Since the HDHomeRun is a third party device which I cannot run an exporter on, does it make sense to allow my exporter to discover and monitor multiple devices?

I also understand that it's preferred to let Prometheus itself do any kind of discovery work, but I'm not really clear on how that might fit with the custom discovery mechanism used for these devices.

It seems to me that this is somewhat of a gray area, so I'd love to hear others' thoughts on it.

Thanks for your time!
- Matt Layher

PS: I apologize if this post should have gone on the "users" list instead, but since it involves developing an exporter rather than operating Prometheus or an existing one, "developers" seemed like a reasonable fit to me. Hope this is alright.

Brian Brazil

unread,
Aug 5, 2017, 1:27:26 PM8/5/17
to Matt Layher, Prometheus Developers
On 5 August 2017 at 17:35, Matt Layher <mdla...@gmail.com> wrote:
Hi all,

I'm building a Prometheus exporter for SiliconDust HDHomeRun devices.  These devices expose a couple of ports used for device discovery, querying, and control.

I've consulted the "Writing exporters" (https://prometheus.io/docs/instrumenting/writing_exporters/) document, but I'm having a hard time deciding if I should enable a single instance of the exporter to discover and fetch metrics from all of the HDHomeRun devices available on a user's LAN.

The document mentions an exception to the "one exporter per instance application" rule that may apply to my use case:

> The first is where running beside the application your monitoring is completely nonsensical. SNMP, blackbox and IPMI are the main examples of this. IPMI and SNMP as the devices are effectively black boxes that it’s impossible to run code on [...]

Since the HDHomeRun is a third party device which I cannot run an exporter on, does it make sense to allow my exporter to discover and monitor multiple devices?

Discovery is always the responsibility of Prometheus, however it's fine to have something that works like snmp/blackbox in these cases that talks out to the targets in questions.
 

I also understand that it's preferred to let Prometheus itself do any kind of discovery work, but I'm not really clear on how that might fit with the custom discovery mechanism used for these devices.

It's the same as any custom discovery method, get it to write out targets for consumption by file_sd.
 

It seems to me that this is somewhat of a gray area, so I'd love to hear others' thoughts on it.

Thanks for your time!
- Matt Layher

PS: I apologize if this post should have gone on the "users" list instead, but since it involves developing an exporter rather than operating Prometheus or an existing one, "developers" seemed like a reasonable fit to me. Hope this is alright.

This is a developer question.

--
Reply all
Reply to author
Forward
0 new messages