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.

