Как выполнить запрос с двумя метриками в Prometheus? - PullRequest
0 голосов
/ 03 апреля 2019

Я использую Prometheus для запроса метрик из Apache Flink. Я хочу измерить количество записей In и Out в секунду функции Map. Когда я запрашиваю две разные метрики в Prometheus, диаграмма показывает только одну из них.

flink_taskmanager_job_task_operator_numRecordsInPerSecond{operator_name="Map"} 
or flink_taskmanager_job_task_operator_numRecordsOutPerSecond{operator_name="Map"}

enter image description here Не имеет значения, если я поменяю оператора or на and. Диаграмма показывает только первое (flink_taskmanager_job_task_operator_numRecordsInPerSecond). Я также попытался отредактировать конфигурационный файл Prometheus /etc/prometheus/prometheus.yml, но у меня нет особого опыта работы с Prometheus, и в моей конфигурации что-то не так. Я основывал свое решение на этом посте .

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'prometheus'
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:9090']
  - job_name: 'node_exporter'
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:9100']   
  - job_name: 'flink'
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:9250', 'localhost:9251', '192.168.56.20:9250']
    metrics_path: /
# HOW TO ADD THE OPERATOR NAME ON THE METRIC NAME?
    metric_relabel_configs:
      - source_labels: [__name__]
      regex: '(flink_taskmanager_job_task_operator)_(\w+)'
      replacement: '${2}'
      target_label: pool
      - source_labels: [__name__]
      regex: '(flink_taskmanager_job_task_operator)_(\w+)'
      replacement: '${1}_bytes'
      target_label: __name__

1 Ответ

1 голос
/ 03 апреля 2019

Прежде всего, для более сложных графиков вы обязательно должны исследовать Графана . Встроенные графы Прометея полезны, например. для отладки, но определенно более ограничен. В частности, один график будет отображать только результаты одного запроса.

Теперь для взлома, который я определенно не рекомендую:

flink_taskmanager_job_task_operator_numRecordsInPerSecond{operator_name="Map"}
or
label_replace(flink_taskmanager_job_task_operator_numRecordsOutPerSecond{operator_name="Map"}, "distinct", "foo", "job", ".*")

С тех пор, как задокументировано

vector1 or vector2 приводит к вектору, который содержит все исходные элементы (наборы меток + значения) vector1 и дополнительно все элементы vector2, которые не имеют совпадающих наборов меток в vector1.

Вы можете добавить новую метку, которой нет в метках первого вектора, ко второму вектору и тем самым сохранить все элементы от обоих.

...