> In our DataCenter we have different security zones. In each zone I
> want to place a blackbox_exporter. The goal is that each
> blackbox_exporter monitors the same destinations eg. same DNS Server
> or same webserver. All exporters are controlled by one single
> prometheus server.
>
> If someone complains that something is wrong, slow or whatever I want
> to have the possibility to compare each blackbox_exporter to
> understand if there was an issue with the service (destnation) or the
> newtwork or something else.
>
> I will have 26 blackbox exporter system in the DC. Each should use the
> same destinations, protocols, etc. Is there a way to simplify my
> configuration to not have 26 different configuration parts but merge
> this into one part?
>
> at the moment the configuration is only different in three places:
> - job name
> - custom label
> - replacement (IP of blackbox_exporter)
>
> Here an example which would result in 26 different configuration parts
> and ideally I only want to have one configuration part because if I
> want to add another test then I need to edit all 26 files again.

It's possible to do somewhat better than what you've got today, but I
don't think there's any native Prometheus way out of having 26 different
stanzas, one for each Blackbox exporter, because there's no way of
either iterating over something in a stanza or nesting service discovery
(as far as I know). Doing better would require additional tools to
automatically generate something.

The simple way to improve things is to list all of the targets to be
checked in a service discovery file. If you have multiple checks you
want to do against each target, you can also include the module as a
label:

        - targets:
          - https://hostname1.domain/
          - https://hostname2.domain/
          # hopefully this works, if not add a label rewrite for
          # 'module' or something
          labels:
            __param_module: http_post_2xx

(Don't trust the exact YAML indentation here, I'm hand-writing it.)

Then each blackbox DC job would look like:
        - job_name: 'blackbox_job_02'
          file_sd_configs:
            files:
            - yourstuff/blackbox-list.yaml
          relabel_configs:
            - source_labels: [__address__]
              target_label: __param_target
            - source_labels: [__param_target]
              target_label: instance
            - target_label: __address__
              replacement: blackbox_job_02.domain:9115

Then at least you can add additional targets to be checked in some way
in one place (the 'blackbox-list.yaml' file), instead of having to
update all of the blackbox DC job configurations. But if you want to add
or remove another blackbox DC instance, you'd still have to edit it in
or out by hand.

If you're in a position to automate generating the 'blackbox-list.yaml'
file, you could also put the blackbox DC target in an additional label
(say 'dc_blackbox: blackbox_job_02.domain:9115') and have a single
Blackbox configuration stanza, which would set __address__ at the end
with a label rewrite that would look something like this:
            - target_labels: [dc_blackbox]
              replacement: __address__

You need to automatically generate the blackbox-list.yaml file because
you're going to be repeating all of the targets N times, one for each
blackbox DC.

        - cks

-- 
You received this message because you are subscribed to the Google Groups 
"Prometheus Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to prometheus-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/prometheus-users/3546479.1708373276%40apps0.cs.toronto.edu.

Reply via email to