J'ai une question:
node_systemd_unit_state{instance="server-01",job="node-exporters",name="kubelet.service",state="active"} 1
Je souhaite que l'étiquette name
soit renommée (ou remplacée) par unit_name
UNIQUEMENT dans le node_systemd_unit_state
métrique. Donc, le résultat souhaité est:
node_systemd_unit_state{instance="server-01",job="node-exporters",unit_name="kubelet.service",state="active"} 1
Il existe de nombreuses autres mesures avec un nom d'étiquette name
dans le node-exporters
emploi. C'est pourquoi je ne peux pas utiliser la config de relabel à travers le travail.
Je me suis lassé de toute la documentation fragmentée et je pense avoir fourni une meilleure réponse dans cet article ici: https://medium.com/@texasdave2/replace-and-remove-a-label-in-a- prometheus-query-9500faa302f
Remplacer n'est pas un vrai REMPLACER
Votre objectif est de simplement remplacer l'ancien nom d'étiquette "old_job_id" par un nouveau nom d'étiquette "new_task_id". Prometheus label_replace va vraiment "ajouter" le nouveau nom de l'étiquette. Il conservera également l'ancien nom de l'étiquette… Donc, cela pourrait être un problème, ce n'est pas un vrai "remplacement en place".
Donc, si vous voulez "ajouter" votre nouveau nom d'étiquette et "supprimer" l'ancien nom d'étiquette, vous devez faire ceci:
sum without (old_job_id) (label_replace(metric, "new_task_id", "$1", "old_job_id", "(.*)"))
Voici comment cela se lit:
sum without (old_job_id) supprimera l'ancien nom d'étiquette de la sortie de la requête
métrique est votre métrique, comme "node_filesystem_avail_bytes"
"New_task_id" est l'endroit où vous mettriez votre nouveau nom d'étiquette
"$ 1" est une expression rationnelle pour l'utilisation de la chaîne dans le nouveau nom d'étiquette, ne changez pas cela
"Old_job_id" est l'endroit où vous mettrez votre ancienne étiquette, celle dont vous voulez vous débarrasser (. * ……. Ce gâchis est regex qui remplacera le nom complet de l'étiquette