#docker #prometheus
Вопрос:
У меня есть простой запрос в Prometheus, например:
irate(node_network_receive_bytes_total{job="job-name",device=~"br-.*",name="a-name"}[5m])
Легенда содержит: {{device}} received
На панели я вижу свою метрическую графику, а справа список условных обозначений со всеми сетевыми «устройствами» по названию, например:
br-a539a330b41b received
br-6c596943b7c8 received
br-dc406d831d4e received
[...]
Если я спрошу docker network на этом компьютере, я смогу получить список имен, например:
ubuntu@ip-10-278-0-45:~$ docker network ls
NETWORK ID NAME DRIVER SCOPE
0a9c74974c7f bridge bridge local
6c596943b7c8 a-service_default bridge local
dc406d831d4e b-service_default bridge local
a539a330b41b c-service_default bridge local
68a058a0a38b host host local
0b101d111154 none null local
[...]
В рамках простого баша, вырезанного следующим образом, я мог бы перевести текущие легенды данной панели в более понятные названия служб.
docker network ls | grep 6c596943b7c8 | awk '{print $2}' | sed 's/_default//'
Есть ли простой способ перевести текущую легенду {{устройство}} во что-то более читаемое, например, имена, найденные в docker network ls?
Так что я получаю легенду, подобную:
a-service received
b-service received
c-service received
[...]
Или есть другой «простой» способ перевести такие uuid, как имена мостовых сетей?
Одним «другим» способом может быть «манипулирование» выводом node_exporter.
Ответ №1:
Вы можете использовать функцию network_id -> network_name
label_map для сопоставления. Например:
label_map(
irate(node_network_receive_bytes_total{job="job-name",device=~"br-.*",name="a-name"}[5m]),
"device",
"br-6c596943b7c8", "a-service",
"br-dc406d831d4e", "b-service",
"br-a539a330b41b", "c-service",
)
Эта label_map
функция доступна в VictoriaMetrics. Я надеюсь, что он скоро будет добавлен в «Прометей».
Комментарии:
1. Это хорошо, но для меня это не сработает, потому что имена br-* изменятся после нового развертывания. Разве нет более простого способа?
2. Имя
node_exporter
интерфейса не экспортируется в метках дляnode_network_receive_bytes_total
метрики. Было бы лучше подать запрос на функцию по адресу github.com/prometheus/node_exporter/issues для добавления возможности указывать имя сетевого интерфейса в метках для этой метрики.