Прометей ИЛИ при использовании rate ()

Резюме

Я пытаюсь понять, как правильно использовать оператор OR | в запросе Prometheus, потому что моя импортированная панель мониторинга Grafana не работает.

Длинная версия

Я пытаюсь отладить панель управления Grafana на основе некоторых данных, собранных с моих модулей Kubernetes, работающих под управлением AppMetrics / Прометей; приборная панель - здесь. Обычно происходит следующее: когда на панели управления Grafana выбрано значение «Все» для server (в данном случае server - это отдельный модуль), данные не появляются. Однако, когда я выбираю отдельный модуль, данные появляются.

Вот пример одной и той же метрики, извлеченной из двух модулей:

# HELP application_httprequests_transactions 
# TYPE application_httprequests_transactions summary
application_httprequests_transactions_sum{server = "myapp-test-58d94bf78d-jdq78",app = "MyApp",env = "test"} 5.006965628
application_httprequests_transactions_count{server = "myapp-test-58d94bf78d-jdq78",app = "MyApp",env = "test"} 1367
application_httprequests_transactions{server = "myapp-test-58d94bf78d-jdq78",app = "MyApp",env = "test",quantile = "0.5"} 0.000202825
application_httprequests_transactions{server = "myapp-test-58d94bf78d-jdq78",app = "MyApp",env = "test",quantile = "0.75"} 0.000279318
application_httprequests_transactions{server = "myapp-test-58d94bf78d-jdq78",app = "MyApp",env = "test",quantile = "0.95"} 0.000329862
application_httprequests_transactions{server = "myapp-test-58d94bf78d-jdq78",app = "MyApp",env = "test",quantile = "0.99"} 0.055584233

# HELP application_httprequests_transactions 
# TYPE application_httprequests_transactions summary
application_httprequests_transactions_sum{server = "myapp-test-58d94bf78d-l9tdv",app = "MyApp",env = "test"} 6.10214788
application_httprequests_transactions_count{server = "myapp-test-58d94bf78d-l9tdv",app = "MyApp",env = "test"} 1363
application_httprequests_transactions{server = "myapp-test-58d94bf78d-l9tdv",app = "MyApp",env = "test",quantile = "0.5"} 0.000218548
application_httprequests_transactions{server = "myapp-test-58d94bf78d-l9tdv",app = "MyApp",env = "test",quantile = "0.75"} 0.000277483
application_httprequests_transactions{server = "myapp-test-58d94bf78d-l9tdv",app = "MyApp",env = "test",quantile = "0.95"} 0.033821094
application_httprequests_transactions{server = "myapp-test-58d94bf78d-l9tdv",app = "MyApp",env = "test",quantile = "0.99"} 0.097113234

Я запустил инспектор запросов в Grafana, чтобы узнать, какой запрос он вызывает, а затем выполнил запрос PromQL в самом Prometheus. Обычно, когда я выполняю следующие запросы PromQL по отдельности, они возвращают данные:

rate(application_httprequests_transactions_count{env = "test",app = "MyApp",server = "myapp-test-58d94bf78d-l9tdv"}[15m])*60

rate(application_httprequests_transactions_count{env = "test",app = "MyApp",server = "myapp-test-58d94bf78d-jdq78"}[15m])*60

Однако, когда я пытаюсь использовать оператор PromQL | для их объединения, я не получаю данные обратно:

rate(application_httprequests_transactions_count{env = "test",app = "MyApp",server = "myapp-test-58d94bf78d-l9tdv|myapp-test-58d94bf78d-jdq78"}[15m])*60

Вот необработанный вывод инспектора запросов Grafana:

xhrStatus:"complete"

request:Object

method:"GET"
url:"api/datasources/proxy/56/api/v1/query_range?query=rate(application_httprequests_transactions_count%7Benv%3D%22test%22%2Capp%3D%22MyApp%22%2Cserver%3D%22myapp-test-58d94bf78d-jdq78%7Cmyapp-test-58d94bf78d-l9tdv%7Cmyapp-test-5b8c9845fb-7lklm%7Cmyapp-test-5b8c9845fb-8jf7n%7Cmyapp-test-5b8c9845fb-d9x5c%7Cmyapp-test-5b8c9845fb-fw4gj%7Cmyapp-test-5b8c9845fb-vtl9z%7Cmyapp-test-5b8c9845fb-vv7xv%7Cmyapp-test-5b8c9845fb-wq9bs%7Cmyapp-test-5b8c9845fb-xqfrt%7Cmyapp-test-69999d58b5-549vd%7Cmyapp-test-69999d58b5-lmp8x%7Cmyapp-test-69999d58b5-nbvt9%7Cmyapp-test-69999d58b5-qphj2%7Cmyapp-test-6b8dcc5ffb-gjjvj%7Cmyapp-test-6b8dcc5ffb-rxfk2%7Cmyapp-test-7fdf446767-bzhm2%7Cmyapp-test-7fdf446767-hp46w%7Cmyapp-test-7fdf446767-rhqhq%7Cmyapp-test-7fdf446767-wxmm2%22%7D%5B1m%5D)*60&start=1540574190&end=1540574505&step=15"

response:Object

status:"success"

data:Object

resultType:"matrix"

result:Array[0] => []

Я также открыл для этого проблему на GitHub; на нем есть быстрая запись экрана в формате GIF, показывающая, что я имею в виду: AppMetrics / Прометей # 43

Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
2
0
1 515
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

| предназначен для регулярных выражений, в PromQL нет оператора | (но есть оператор or). Вам нужно указать, что сопоставление является регулярным выражением, а не точным совпадением с =~:

rate(application_httprequest_transactions_count{env = "test",app = "MyApp",server=~"myapp-test-58d94bf78d-l9tdv|myapp-test-58d94bf78d-jdq78"}[15m])*60

Другие вопросы по теме