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/8dfc6559-350e-46e5-b404-b9ac12e9a863n%40googlegroups.com.