PrometheusЩо нового в Prometheus 3.16
Реліз приніс стабілізацію векторних селекторів smoothed і anchored, експериментальну функцію integral(), оцінку вартості запитів та підтримку metadata-wal-records в режимі Agent.
Реліз від 5 листопада 2026 · оновлено 8 листопада 2026
Головне
- Селектори smoothed та anchored перейшли у статус стабільних
- Додано експериментальну функцію integral() у PromQL
- З'явився механізм оцінки та лімітів query-cost
- Підтримка metadata-wal-records у режимі Prometheus Agent
Коротко
У релізі Prometheus 3.16 векторні селектори smoothed та anchored отримали статус стабільних та увімкнені за замовчуванням. Також з'явилися експериментальні можливості: функція integral() у PromQL та система підрахунку вартості запитів з лімітами виконання. Крім того, оновлення включає оптимізацію споживання пам'яті в TSDB, виправлення для OpenMetrics 2.0 і OTLP, а також розширення підтримки метаданих у режимі Agent.
Нові можливості
Оновлення PromQL
- Стабілізація селекторів: Селектори векторів
smoothedтаanchoredтепер є стабільними та працюють за замовчуванням без додаткових прапорців. - Детекція скидання лічильників: При запитах float-серій з розширеними модифікаторами (
anchored,smoothed) реалізовано використання початкових таймстемпів для виявлення скидань лічильника (під прапорцемuse-start-timestamps). - Функція
integral(): Додано експериментальну функціюintegral()для обчислення інтеграла за часом для векторів діапазону (range vectors). Функція доступна під прапорцем--enable-feature=promql-experimental-functions. - Оцінка вартості запитів: Додано експериментальну оцінку вартості запитів (query cost estimation), звітність про фактичну вартість і налаштовувані ліміти виконання під прапорцем
--enable-feature=query-cost. - Символи Unicode: Дозволено використання не взятих у лапки літер Unicode та крапок у PromQL під окремим feature flag.
- Керування Start Timestamp через API: Дозволено перевизначати обробку PromQL Start Timestamp для окремих запитів через HTTP-заголовок
X-Prometheus-Use-Start-Timestamps.
Prometheus Agent та Remote Write
- Підтримка metadata-wal-records в Agent: У режимі Prometheus Agent додано підтримку
metadata-wal-records. - Конвертація гістограм у Remote Write: Додано експериментальний прапорець
convert_nhcb_to_classicдля перетворення Native Histograms with Custom Buckets (NHCB) у класичні гістограми для зовнішніх систем, які не підтримують NHCB. - Метрика очікування Remote Read: Додано нативну гістограму
prometheus_remote_read_handler_gate_wait_duration_secondsдля вимірювання тривалості очікування в concurrency-gate, включно із запитами, скасованими під час очікування.
Інструменти
- Тестування у promtool: Під час виконання тестів у
promtoolтепер виводиться ім'я тестового файлу. - Налаштування тривалості блоків: У
promtoolдодано прапорець--allow-incompatible-block-duration, що дозволяє вказувати довільнийmax-block-durationзамість обмеження стандартними тривалостями блоків Prometheus.
Виправлення та покращення
Зміни в поведінці компонентів
- Експериментальні ендпоінти API пошуку тепер обмежують
batch_sizeмаксимальним значенням 1000. - Прапорець
--web.external-urlтепер автоматично використовує протоколhttps, якщо в конфігурації--web.config.fileувімкнено TLS. - Зразки підвибірок (subquery samples) тепер включаються в статистику запиту
TotalSamplesтаTotalSamplesPerStep, аSamplesReadтепер враховує зчитування з підзапитів із модифікатором@у range queries. - Припинено експорт застарілих метрик
prometheus_remote_storage_metadata_total,prometheus_remote_storage_metadata_failed_total,prometheus_remote_storage_metadata_retried_totalтаprometheus_remote_storage_metadata_bytes_totalдля черг Remote Write 2.0. - У ресивері Remote Write зразки та гістограми Remote Write 2.x без метаданих тепер підраховуються у
prometheus_api_remote_write_without_metadata_appended_samples_total, навіть якщоmetadata-wal-recordsвимкнено. - TSDB тепер відхиляє екземпляри (exemplars), чиї назви міток не є унікальними, замість їх збереження та видачі дубльованого ключа JSON з
/api/v1/query_exemplars.
Продуктивність
- Оптимізовано споживання пам'яті для структур метаданих на рівні окремих серій у Remote Write та TSDB завдяки дедуплікації через
unique.Handle. - Покращено стиснення XOR2 та швидкість додавання даних у TSDB шляхом вибору вікон значень на основі вартості кодування.
- Зменшено обсяг пам'яті, що використовується для запису та читання метаданих чекпоїнтів у TSDB.
- У PromQL оптимізовано вибірку вікон для підзапитів з модифікатором
@, а для функційtimestamp(),start_timestamp()таabsent()реалізовано декодування лише полів count/sum гістограм без бакетів. - Знижено кількість алокацій пам'яті та навантаження на CPU в парсері OpenMetrics 2.0 завдяки ледачій побудові міток для composite series та екземплярів, а також повторному використанню буферів розгортання класичних гістограм і summary між скрейпами.
TSDB та виправлення помилок
- Виправлено втрату out-of-order зразків, коли чекпоїнт WAL видаляв запис серії, необхідний для out-of-order write-behind log.
- Виправлено помилку в TSDB, через яку запити до head chunk повертали зразки, закомічені вже після початку виконання запиту.
- Усунуто гонитву під час компакції вибраних та застарілих серій, через яку зразок міг бути втрачений перед видаленням серії з пам'яті.
- Виправлено збереження мапованих чанків при злитті посилань під час WAL replay, що запобігає втраті out-of-order зразків і дублюванню чанків після перезапуску.
- Виправлено помилку узгодження HTTP/2 у вебсервері під Go 1.27+, через яку відбувався тихий відкат до HTTP/1.1; сервер тепер коректно анонсує
h2через ALPN. - Виправлено відновлення сповіщень у стані firing після перезапуску, якщо параметр
forбув коротшим за--rules.alert.for-grace-period. - OTLP-ресивер більше не зберігає екземпляри з таймстемпами у майбутньому понад 10 хвилин, уникаючи блокування наступних екземплярів для цієї серії.
Огляд підготовлено автоматично за офіційними release notes за допомогою ШІ та перевірено на відповідність джерелу. Точні формулювання дивіться в оригіналі. Як ми працюємо