У меня есть 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?