For context and maybe upcomming errors here is my prom.yml so far:
# 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_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
- localhost:9093
# Load rules once and periodically evaluate them according to the global
'evaluation_interval'.
rule_files:
- rules.yml
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries
scraped from this config.
- job_name: 'Windows-Exporter Host-Server'
file_sd_configs:
- files:
- C:\Prometheus\targets\hosts.yml
relabel_configs:
# 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}'
[...]
- job_name: 'Ping (ICMP)'
metrics_path: /probe
params:
module: [icmp_ttl5]
file_sd_configs:
- files:
- C:\Prometheus\targets\hosts.yml
- C:\Prometheus\targets\netcomponents.yml
- C:\Prometheus\targets\vmhost-05.yml
- C:\Prometheus\targets\vmhost-06.yml
- C:\Prometheus\targets\vmhost-08.yml
- C:\Prometheus\targets\vmhost-09.yml
- C:\Prometheus\targets\vmhost-10.yml
- C:\Prometheus\targets\vmopheo-01.yml
- C:\Prometheus\targets\vmopheo-02.yml
- C:\Prometheus\targets\vmopheo-04.yml
- C:\Prometheus\targets\vmopheo-06.yml
- C:\Prometheus\targets\vmopheo-07.yml
- C:\Prometheus\targets\vmopheo-08.yml
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
Kolja Krückmann schrieb am Freitag, 28. April 2023 um 14:10:00 UTC+2:
> Hi Brian, thanks for your quick response.
>
> Actually I just pasted the relabeling you attached and it immediately
> worked :)
>
> Brian Candler schrieb am Freitag, 28. April 2023 um 13:37:33 UTC+2:
>
>> 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/7d53a32c-7ee8-4390-9251-f9e15141bcb6n%40googlegroups.com.