Voydevich
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 за допомогою ШІ та перевірено на відповідність джерелу. Точні формулювання дивіться в оригіналі. Як ми працюємо