Do you want to show what you've done so far?

You can read these:

https://nsrc.org/workshops/2022/rwnog/nmm/netmgmt/en/prometheus/ex-blackbox-exporter.html
  
 # simple config
https://nsrc.org/workshops/2022/rwnog/nmm/netmgmt/en/prometheus/ex-relabeling.html
  
 # node_exporter with relabelling

If you combine the two, you could end up with something like this:

  - job_name: blackbox
    file_sd_configs:
      - files:
          - /etc/prometheus/blackbox.d/*.yml
    metrics_path: /probe
    relabel_configs:
      - source_labels: [__address__]
        regex: '([^ ]+)'    # name or address only
        target_label: instance
      - source_labels: [__address__]
        regex: '([^ ]+)'    # name or address only
        target_label: __param_target
      - source_labels: [__address__]
        regex: '(.+) (.+)'  # name address
        target_label: instance
        replacement: '${1}'
      - source_labels: [__address__]
        regex: '(.+) (.+)'  # name address
        target_label: __param_target
        replacement: '${2}'
      - source_labels: [module]
        target_label: __param_module
      - target_label: __address__
        replacement: 127.0.0.1:9115  # Blackbox exporter

Where /etc/prometheus/blackbox.d/ping.yml contains, for example:

- labels:
    module: icmp
  targets:
    - google-pri 8.8.8.8
    - google-sec 8.8.4.4

Then you should get metrics like this:

probe_success{job="blackbox",instance="google-pri",module="icmp"} 1

On Friday, 28 April 2023 at 09:49:21 UTC+1 Kolja Krückmann wrote:

> Hi y'all, now i got my metrics running (Thanks Brian)
>
> For the next step I want to use the Blackbox_exporter with the same 
> targets (where the target.yml is build like "- targetname targetIP")
> I want to have the same labeling as in the question above where each 
> target has a name lable but I'm not quite getting there. Either the 
> Endpoint URL is missing the target IP or the label is missing the name of 
> the endpoint.
>
> Kolja Krückmann schrieb am Freitag, 28. April 2023 um 08:38:59 UTC+2:
>
>> nevermind - sorry for the question, should have just googled learn 
>> regular expression.
>> I'm fine for now.
>> Kolja Krückmann schrieb am Freitag, 28. April 2023 um 08:35:21 UTC+2:
>>
>>> Thanks so much!
>>>
>>> Can you tell me where I could kinda "learn" regex? I find it very 
>>> difficult to get known to regex because it's nothing im using on daily 
>>> basis ^^
>>>
>>>
>>>
>>> Brian Candler schrieb am Donnerstag, 27. April 2023 um 17:24:26 UTC+2:
>>>
>>>> So to be clear, if you want your targets file to look like this:
>>>>
>>>> - targets:
>>>>   - SVR-DS01 172.25.X0.XXX:9182
>>>>   - SRV-DS02 172.21.X1.XXX:9182
>>>>
>>>> you can do something like this:
>>>>
>>>>    relabel_configs:
>>>>       # When __address__ is a single item, set the instance
>>>>       # label to the part without the port
>>>>       - source_labels: [__address__]
>>>>         regex: '([^ ]+):[0-9]+'
>>>>         replacement: '${1}'
>>>>         target_label: instance
>>>>
>>>>       # When __address__ is space-separated "name address:port",
>>>>       # put the first part in the "instance" label and leave the second 
>>>> part
>>>>       # in "__address__"
>>>>       - source_labels: [__address__]
>>>>         regex: '(.+) (.+)'
>>>>         target_label: instance
>>>>         replacement: '${1}'
>>>>       - source_labels: [__address__]
>>>>         regex: '(.+) (.+)'
>>>>         target_label: __address__
>>>>         replacement: '${2}'
>>>>
>>>> If your target entries *always* consist of two items separated by a 
>>>> space, then you don't need the first rule. It's only there in case you 
>>>> have 
>>>> entries in the old format, i.e.
>>>>
>>>> - targets:
>>>>   - 172.25.X0.XXX:9182
>>>>
>>>> (in which case, the instance is set to "172.25.X0.XXX")
>>>>
>>>> On Thursday, 27 April 2023 at 16:16:38 UTC+1 Brian Candler wrote:
>>>>
>>>>> Well, there is a good reason to keep the port out of the "instance" 
>>>>> label: it's very awkward to make a query to join two different different 
>>>>> metrics collected from two different exporters on the same host, if one 
>>>>> has 
>>>>> (say) instance="foo:9100" and another has instance="foo:9104".  A second 
>>>>> reason is that it's nicer in dashboards to see "foo" rather than 
>>>>> "foo:9100"
>>>>>
>>>>> See https://www.robustperception.io/controlling-the-instance-label
>>>>>
>>>>> IMO the cleanest way to achieve this is to leave the port out of the 
>>>>> targets file, copy __address__ to instance, and then append the exporter 
>>>>> port statically to __address__.
>>>>>
>>>>> However, you could leave the port number in the targets file, and 
>>>>> strip it out to create the instance label:
>>>>>
>>>>>       - source_labels: [__address__]
>>>>>         regex: '(.*):[0-9]+'
>>>>>         target_label: instance
>>>>>         replacement: '${1}'
>>>>>
>>>>> This would be useful if the same exporter were running on different 
>>>>> ports on different hosts (fairly uncommon I think).
>>>>>
>>>>> Also, you risk a collision of metrics if targets list includes the 
>>>>> same host twice on two different ports in the same scrape job (which 
>>>>> should 
>>>>> be very unlikely).
>>>>>
>>>>> On Thursday, 27 April 2023 at 15:14:03 UTC+1 Kolja Krückmann wrote:
>>>>>
>>>>>> Hi Brian,
>>>>>>
>>>>>> thank you very much for your response!
>>>>>> I just wanted to clarify, if it's better to "regex" the port to the 
>>>>>> end of the address, or if it is equally fine to just add the port in the 
>>>>>> target.yml to each target? (That's what im currently doing) Is it just 
>>>>>> best 
>>>>>> practice with the regex expression or is there actually a technical 
>>>>>> reason 
>>>>>> behind that?
>>>>>>
>>>>>> Kind regards
>>>>>> Kolja
>>>>>>
>>>>>> Brian Candler schrieb am Dienstag, 18. April 2023 um 13:34:53 UTC+2:
>>>>>>
>>>>>>> Alternatively, you use rewriting rules.
>>>>>>>
>>>>>>> - targets:
>>>>>>>   - SVR-DS01 172.25.X0.XXX
>>>>>>>   - SRV-DS02 172.21.X1.XXX
>>>>>>> ... etc
>>>>>>>
>>>>>>> and the corresponding relabel_configs in your scrape job could be 
>>>>>>> something like this:
>>>>>>>
>>>>>>>     relabel_configs:
>>>>>>>       # When __address__ consists of just a name or IP address,
>>>>>>>       # copy it to the "instance" label.  This keeps the port
>>>>>>>       # number out of the instance label.
>>>>>>>       - source_labels: [__address__]
>>>>>>>         regex: '([^ ]+)'
>>>>>>>         target_label: instance
>>>>>>>
>>>>>>>       # When __address__ is of the form "name address", extract
>>>>>>>       # name to "instance" label and address to "__address__"
>>>>>>>       - source_labels: [__address__]
>>>>>>>         regex: '(.+) (.+)'
>>>>>>>         target_label: instance
>>>>>>>         replacement: '${1}'
>>>>>>>       - source_labels: [__address__]
>>>>>>>         regex: '(.+) (.+)'
>>>>>>>         target_label: __address__
>>>>>>>         replacement: '${2}'
>>>>>>>
>>>>>>>       # Append port number to __address__ so that scrape gets
>>>>>>>       # sent to the right port
>>>>>>>       - source_labels: [__address__]
>>>>>>>         target_label: __address__
>>>>>>>         replacement: '${1}:9182'
>>>>>>>
>>>>>>> On Tuesday, 18 April 2023 at 11:14:23 UTC+1 Julius Volz wrote:
>>>>>>>
>>>>>>>> The labels in the SD file can only be provided for each target 
>>>>>>>> group (the top-level list item type of the YAML file), so you'd have 
>>>>>>>> to do 
>>>>>>>> something like this:
>>>>>>>>
>>>>>>>> - targets:
>>>>>>>>   - [...first list of targets...]
>>>>>>>>   labels:
>>>>>>>>     instance: "A"
>>>>>>>> - targets:
>>>>>>>>   - [...second list of targets...]
>>>>>>>>   labels:
>>>>>>>>     instance: "B"
>>>>>>>> - targets:
>>>>>>>>   - [...third list of targets...]
>>>>>>>>   labels:
>>>>>>>>     instance: "C"
>>>>>>>>   
>>>>>>>>
>>>>>>>> On Tue, Apr 18, 2023 at 11:20 AM Kolja Krückmann <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>> Hi y'all I'm trying to get a label for each target in my 
>>>>>>>>> file_sd_config
>>>>>>>>>
>>>>>>>>> my prom.yml is:
>>>>>>>>> (redacted)
>>>>>>>>>
>>>>>>>>> # my global config
>>>>>>>>> global:
>>>>>>>>>   scrape_interval: 1m # Set the scrape interval to every 15 
>>>>>>>>> seconds. Default is every 1 minute.
>>>>>>>>>   evaluation_interval: 30s # Evaluate rules every 15 seconds. The 
>>>>>>>>> default is every 1 minute.
>>>>>>>>>   scrape_timeout: 30s
>>>>>>>>>
>>>>>>>>> scrape_configs:
>>>>>>>>>   # The job name is added as a label `job=<job_name>` to any 
>>>>>>>>> timeseries scraped from this config.
>>>>>>>>>   - job_name: 'node'
>>>>>>>>>     file_sd_configs:
>>>>>>>>>       - files:
>>>>>>>>>         - 
>>>>>>>>> C:/Prometheus/prometheus-2.41.0.windows-amd64/target_cluster_b.yml
>>>>>>>>>
>>>>>>>>> my target_cluster_b.yml:
>>>>>>>>> - targets:
>>>>>>>>>     - 172.25.X0.XXX:9182
>>>>>>>>>     labels:
>>>>>>>>>         instance: "SVR-DS01"
>>>>>>>>>     - 172.21.X1.XXX:9182   
>>>>>>>>>     - 172.25.X2.XXX:9182
>>>>>>>>>     - 172.25.X3.XXX:9182
>>>>>>>>>
>>>>>>>>> as seen in the target.yml I want to try to get a label to each 
>>>>>>>>> target - to see in the prom dashboard which ip is which targetname
>>>>>>>>>
>>>>>>>>> Thanks in advance.
>>>>>>>>> Kind regards Kolja
>>>>>>>>>
>>>>>>>>> -- 
>>>>>>>>> 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 [email protected].
>>>>>>>>> To view this discussion on the web visit 
>>>>>>>>> https://groups.google.com/d/msgid/prometheus-users/fa4e5c9e-807b-4680-9640-592c8172e568n%40googlegroups.com
>>>>>>>>>  
>>>>>>>>> <https://groups.google.com/d/msgid/prometheus-users/fa4e5c9e-807b-4680-9640-592c8172e568n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>>>> .
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> -- 
>>>>>>>> Julius Volz
>>>>>>>> PromLabs - promlabs.com
>>>>>>>>
>>>>>>>

-- 
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/prometheus-users/ffdb2758-26d1-4e9e-9c3d-bda884b7bcb4n%40googlegroups.com.

Reply via email to