Как вы уже заметили, агрегирование квантилей (с течением времени или иным образом) на самом деле не работает.
Вы можете попытаться построить гистограмму использования памяти с течением времени, используя правила записи, выглядящие как "реальные"Гистограмма Прометея (состоящая из метрик _bucket
, _count
и _sum
), хотя делать это может быть утомительно.Что-то вроде:
- record: container_memory_usage_bytes_bucket
labels:
le: 100000.0
expr: |
container_memory_usage_bytes > bool 100000.0
+
(
container_memory_usage_bytes_bucket{le="100000.0"}
or ignoring(le)
container_memory_usage_bytes * 0
)
Повторите для всех интересующих вас размеров сегментов, добавьте _count
и _sum
метрики.
Гистограммы можно агрегировать (по времени или иным образом) безпроблем, так что вы можете использовать второй набор правил записи, который вычисляет увеличение метрик гистограммы, при гораздо более низком разрешении (например, ежечасное или ежедневное увеличение, при часовом или дневном разрешении).И, наконец, вы можете использовать histogram_quantile
над гистограммой низкого разрешения (которая имеет намного меньше выборок, чем исходный временной ряд), чтобы вычислить ваш квантиль.
Это большая работа, и будетпара недостатков: вы будете получать только ежечасные / ежедневные обновления своего квантиля, и точность может быть ниже, в зависимости от того, сколько гистограмм вы определяете.
Остальное (и это пришло ко мне только после написания всехиз вышеперечисленного) вы можете определить правило записи, которое работает с более низким разрешением (например, один раз в час) и записывает текущее значение container_memory_usage_bytes
метрики.Тогда вы могли бы продолжать использовать quantile_over_time
над этой метрикой с более низким разрешением.Очевидно, вы потеряете точность (поскольку вы выбрасываете много образцов), и ваш квантиль будет обновляться только раз в час, но это намного проще.И вам нужно только подождать 10 дней, чтобы увидеть, достаточно ли близок результат.(О: