Моя цель - создать панель мониторинга, показывающую повторяющиеся графики - в основном, просто переменную множественного выбора в графане - общего количества запросов памяти / процессора для данного узла, а также фактическое использование памяти / процессора для этого узла.
Для суммирования общего количества запросов я использую запрос:
sum(kube_pod_container_resource_requests_memory_bytes{node="${node:pipe}"})
, где ${node:pipe}
исходит из переменной в графане
и для получения фактического использования I use:
node_memory_MemTotal_bytes{instance="${node:pipe}"} - node_memory_MemFree_bytes{instance="${node:pipe}"}
Они оба получают необходимую мне информацию, проблема связана с меткой, используемой для выбора.
Поскольку они поступают из разных источников первая имеет метку node
, которая использует этот формат: ip-10-10-12-12.ec2.internal
, а вторая имеет метку instance
, которая выглядит следующим образом: 10.10.12.12:9100
.
Между этими двумя понятиями существует четкая связь , но когда я использую мультиселектную метку в графане, я должен выбрать источник, из которого выбрать, в случае, если я выберу первый, второй не будет работать, если я не найду способ перевести.
Первый подход, который я попробовал s, чтобы создать дополнительную метку, используя функцию label_replace
в promql. Это создало новую метку во втором метри c (с использованием регулярного выражения, основанного на метке "instance"), которая соответствовала формату первого метри c, но у меня не было возможности использовать ее, потому что прометей не позволяет чтобы отфильтровать результаты функции
Второй подход состоял в том, чтобы попытаться использовать директивы relaybel_configs в конфигурации prometheus. Моя попытка была такой:
...
- source_labels: [instance]
regex: ([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)
replacement: ip-${1}-${2}-${3}-${4}.ec2.internal
target_label: nodename
...
Хотя я явно ошибался, потому что это не сработало (возможно, я не добавил правильную работу, потому что не уверен, откуда эти показатели взяты из)
Можно ли как-нибудь исправить мои попытки, чтобы они работали? Или, возможно, более простой способ сделать то, что я пропустил?