Агрегации по показателям высокой мощности - PullRequest
0 голосов
/ 09 июля 2020

У меня есть metri c с большой мощностью, поэтому, когда я пытаюсь сделать что-то вроде этого

histogram_quantile(0.99, sum(rate(http_request_duration_bucket[15d])) by (le, slo, job, namespace))

, я получаю сообщение об ошибке query processing would load too many samples into memory in query execution

Какой правильный способ иметь дело с чем-то вроде этого?

Метка (маршрут), которая вызывает высокую мощность, не нужна для этого запроса, поэтому я попытался создать правило записи, чтобы удалить все ненужные метки

{
    expr: 'sum(http_request_duration_bucket) by (le, slo, job, namespace, pod)',
    record: 'http_request_duration_bucket:slo',
}

но проблема с этим подходом заключается в том, что я буду затем использовать «ставку» на «сумму».

В идеале я бы «свернул» свои агрегаты с правилами записи, например,

[{
  expr: 'histogram_quantile(0.99, sum(rate(http_request_duration_bucket[1m])) by (le, slo, job, namespace))',
  record: 'http_request_duration:99p:1m'
},
{
  expr: 'histogram_quantile(0.99, http_request_duration:99p:1m[1h])) by (le, slo, job, namespace))',
  record: 'http_request_duration:99p:1h'
},
{
  expr: 'histogram_quantile(0.99, http_request_duration:99p:1h[1d])) by (le, slo, job, namespace))',
  record: 'http_request_duration:99p:1d'
}]

но это дает некоторые забавные результаты.

Как правильно поступать с чем-то вроде этого в Prometheus?

...