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.

Reply via email to