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/6fbd5e64-1422-455d-8710-ee774dfe5b50n%40googlegroups.com.

Reply via email to