Hi Brian, thanks for your quick response. Actually I just pasted the relabeling you attached and it immediately worked :)
Brian Candler schrieb am Freitag, 28. April 2023 um 13:37:33 UTC+2: > 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/f828dfe7-3223-4c70-8472-7d82adc994a8n%40googlegroups.com.

