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 < >>>>> kolja.kr...@opheo.com> 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 prometheus-use...@googlegroups.com. >>>>>> 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 prometheus-users+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/prometheus-users/6fbd5e64-1422-455d-8710-ee774dfe5b50n%40googlegroups.com.