current status:
In the class prometheus::blackbox::check::http, which is used for monitoring various misc. services, there is there parameter $server_name which is by default set to $title.
It is described as # @param server_name - an FQDN, the server name to use (during TLS and Host:).
separate from that we have # @param instance_label - short-form host name, used as an instance label.
problem statement:
Let's say you have multiple backends serving a single virtual host, example:
virtual host: doc.wikimedia.org
machines: doc1001.eqiad.wmnet, doc2001.codfw.wmnet
which is a very common type of setup.
Now if you want to monitor doc.wikimedia.org you have the following options:
- use "doc.wikimedia.org" as the resource title but tell puppet with an 'if-then-else' to only monitor the "active host" or one of the 2 hosts
- use "doc.wikimedia.org" as the resource title and apply it on both instances, puppet run will fail with a "duplicate declaration" error because the same $title is used more than once
- use the instance name as $title, but now requests go to doc1001.eqiad.wmnet / doc2001.codfw.wmnet and you are not actually monitoring doc.wikimedia.org
suggested fix:
Have separate parameters for "virtual host" and "instance FQDN" so we can truly check "virtual host X on host Y and host Z".
Just like when you manually use curl you also have separate parameters for a virtual host you are requesting and a host you are requesting it from.