-
Star
(101)
You must be signed in to star a gist -
Fork
(20)
You must be signed in to fork a gist
-
-
Save reachlin/a98b90afcbff4604c90c183a0169474f to your computer and use it in GitHub Desktop.
| // For all the confusing Prometheus configuration and | |
| // regular expressions, | |
| // explained in examples. | |
| // Remember, there are default values for each item if it's missing. | |
| // regex is (.*), | |
| // replacement is $1, | |
| // separator is ; | |
| // ,and action is replace | |
| relabel_configs: | |
| - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape] | |
| action: keep | |
| regex: true | |
| // keep targets with label __meta_kubernetes_service_annotation_prometheus_io_scrape equals 'true', | |
| // which means the user added prometheus.io/scrape: true in the service's annotation. | |
| - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme] | |
| action: replace | |
| target_label: __scheme__ | |
| regex: (https?) | |
| // if __meta_kubernetes_service_annotation_prometheus_io_scheme is http or https, replace __scheme__ with its value that is the default replacement: $1. | |
| // this means the user added prometheus.io/scheme in the service's annotation. | |
| - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path] | |
| action: replace | |
| target_label: __metrics_path__ | |
| regex: (.+) | |
| // this is also for service annotation of prometheus, if the user overrides the scrape path, | |
| // its value will be put in __metrics_path__ | |
| - source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_port] | |
| action: replace | |
| target_label: __address__ | |
| regex: (.+)(?::\d+);(\d+) | |
| replacement: $1:$2 | |
| // if the user added prometheus.io/port in the service annotation, | |
| // use this port to replace the port in __address__ | |
| // all above rules are for handling prometheus annotation: https://github.com/prometheus/prometheus/blob/master/documentation/examples/prometheus-kubernetes.yml | |
| - action: labelmap | |
| regex: __meta_kubernetes_service_label_(.+) | |
| // all __meta_kubernetes_service_label_(.+) will be changed to the (.+) | |
| // e.g. __meta_kubernetes_service_label_app='armada-api' to app='armada-api' | |
| - source_labels: [__meta_kubernetes_namespace] | |
| action: replace | |
| target_label: kubernetes_namespace | |
| // if __meta_kubernetes_namespace matches .*, put its value in label kubernetes_namespace | |
| - source_labels: [__meta_kubernetes_service_name] | |
| action: replace | |
| target_label: service_name | |
| // if __meta_kubernetes_service_name matches .*, put its value in label service_name | |
| - source_labels: [__meta_kubernetes_pod_node_name] | |
| action: replace | |
| target_label: hostname | |
| // if __meta_kubernetes_pod_node_name matches .*, put its value in label hostname |
Thanks!
I am still confused... If I have a metric
some_metric{app="foo",baz="true"}
some_metric{app="bar",baz="true"}
How do I drop all baz labels and keep only app=foo metrics so that I end up with:
some_metric{app="foo"}
Also, what is separator? What am I separating? The only thing I can think of are labels, and I have never seen them separated by a ; which makes using it as the default very confusing.
@bschaeffer you can use labeldrop action to do it. for details https://medium.com/quiq-blog/prometheus-relabeling-tricks-6ae62c56cbda
for replace action , should the target label be already present / if its not present does prometheus add one ?
Amazing, made my day much easier, thanks!
thanks everyone, but really not in the mood to update this. i just got laid off by IBM :(
I'm so sad to heard this :( good luck
Thanks very useful when onboarding on Opentelemetry <3
Thanks this is helpful.
@nicocolt thanks. i am working at a start-up now, as an infra. engineer
Thanks very much!
Well done 🥇 ! That should really go into the docs