Источник данных Prometheus
Обзор
Prometheus – это база данных с открытым исходным кодом, которая использует агент-сборщик телеметрических данных для сбора и хранения метрик, используемых для мониторинга и оповещения. Подсистема предоставляет встроенную поддержку Prometheus.
Только пользователи с ролью administrator в организации могут добавлять источники данных и редактировать существующие источники данных. Администраторы также могут настроить источник данных с помощью YAML в системе подготовки Подсистемы.
После добавления источника данных Prometheus можно настроить его так, чтобы пользователи экземпляра Подсистемы могли создавать запросы в редакторе запросов при создании панелей мониторинга, использовании функции "Explore (Исследование)" и аннотировании визуализаций.
Источник данных Prometheus также работает с другими проектами, реализующими API-запросы Prometheus.
В рамках подготовки Подсистемы можно определить и настроить источник данных в файлах YAML.
Подсистема предоставляет метрики для Prometheus в endpoint /metrics. Также для оперативного просмотра метрик предоставляются возможности панели мониторинга Подсистемы.
Чтобы импортировать входящую в комплект панель мониторинга нужно:
- перейти на страницу конфигурации источника данных;
- выбрать вкладку "Dashboards (Панели мониторинга)"; отобразятся панели мониторинга для Подсистемы и Prometheus;
- выбрать "Import (Импорт)", чтобы импортировать панель мониторинга.
Настройка Prometheus
Чтобы добавить источник данных Prometheus, нужно выполнить следующие действия:
- выбрать "Connections (Подключения)" в меню слева;
- в разделе "Connections (Подключения)" нажать Add new connection (Добавить новое подключение);
- ввести "Prometheus" в строке поиска;
- выбрать "Prometheus";
- нажать Add new data source (Добавить новый источник данных) в правом верхнем углу;
- перейти на вкладку "Setting (Настройки)", где можно настроить конфигурацию Prometheus.
Ниже приведен список параметров конфигурации для Prometheus по секциям:
- Имя подключения:
- Имя – название источника данных для ссылки в панелях и запросах;
- По умолчанию – выбрать это имя по умолчанию на панелях панели мониторинга;
- Секция подключения
- URL-адрес сервера Prometheus – URL-адрес сервера Prometheus. Если сервер Prometheus локальный, используется
http://localhost:9090. Если он находится на сервере в сети, это URL-адрес с портом, на котором работает Prometheus.
- URL-адрес сервера Prometheus – URL-адрес сервера Prometheus. Если сервер Prometheus локальный, используется
- Секция аутентификации:
- Базовая аутентификация – наиболее распространенный метод аутентификации; для подключения использовать "data source"–имя пользователя и "data source"-пароль;
- С учетными данными – включить эту функцию, чтобы отправлять учетные данные, такие как файлы cookie или заголовки авторизации, при межсайтовых запросах;
- Клиентская аутентификация TLS – включить, чтобы использовать клиентскую аутентификацию; если включена, добавить "Server name", "Client cert" и "Client key". Клиент предоставляет сертификат, который проверяется сервером для подтверждения личности клиента. Ключ клиента шифрует данные между клиентом и сервером;
- С сертификатом CA – выполнить аутентификацию с помощью сертификата CA; следовать инструкциям CA (центра сертификации), чтобы загрузить файл сертификата;
- Пропустить проверку TLS – включить, чтобы обойти проверку сертификата TLS;
- Передать идентификатор OAuth – передать токен доступа OAuth (а также токен идентификатора OIDC, если он доступен) пользователя, запрашивающего источник данных.
- Пользовательские HTTP-заголовки:
- Заголовок – добавить собственный заголовок для передачи в зависимости от потребностей экземпляра Prometheus;
- Value – значение заголовка.
- Расширенные настройки HTTP
- Разрешенные файлы cookie – указать по имени файлы cookie, которые должны быть переданы источнику данных. По умолчанию прокси-сервер Подсистемы удаляет все переданные файлы cookie;
- Тайм-аут – время ожидания HTTP-запроса. Значение должно быть указано в секундах. Значение по умолчанию – 30 секунд.
- Оповещения:
- Управление оповещениями с помощью пользовательского интерфейса оповещений – переключить, чтобы включить Alertmanager-интеграцию для этого источника данных.
Примечание – По умолчанию переключатель "Управление оповещениями с помощью пользовательского интерфейса оповещений" включен. Можно изменить это поведение, настроив параметр default_manage_alerts_ui_toggle в файле конфигурации Подсистемы.
- Поведение интервала:
- Интервал сбора данных – установить типичный интервал сбора данных и оценки, настроенный в Prometheus. Значение по умолчанию – 15s;
- Время ожидания запроса – по умолчанию равно 60s.
- Редактор запросов:
- Редактор по умолчанию – устанавливает редактор по умолчанию (Builder или Code);
- Отключить поиск метрик – включить эту функцию, чтобы отключить выборку метрик и поддержку метрик/меток в поле автозаполнения запроса. Это поможет, если возникают проблемы с производительностью при работе с большими экземплярами Prometheus;
- Производительность:
- Тип Prometheus – тип сервера Prometheus (Prometheus, Cortex, Mimir и Thanos);
- Уровень кеширования – уровень кеширования браузера для запросов редактора (Low, Medium, High, или None);
- Инкрементальный запрос – изменяет поведение относительных запросов по умолчанию, чтобы всегда запрашивать свежие данные из экземпляра Prometheus; включить эту опцию, чтобы снизить нагрузку на базу данных и сеть;
- Отключение правил записи – включить эту опцию, чтобы отключить правила записи, для повышения производительности панели мониторинга;
- Другое:
- Пользовательские параметры запроса – добавить пользовательские параметры в URL-адрес запроса Prometheus, например, timeout, partial_response, dedup или max_source_resolution; несколько параметров следует объединять с помощью "&";
- Метод HTTP – использовать метод HTTP POST или GET для запроса к источнику данных. POST – рекомендуемый и предварительно выбранный метод, так как он позволяет выполнять более масштабные запросы.
Редактор запросов Prometheus
Подсистема предоставляет редактор запросов для источника данных Prometheus для создания запросов в PromQL.
Редактор запросов Prometheus имеет два режима:
- Режим конструктора;
- Кодовый режим.
Оба режима синхронизированы, поэтому можно переключаться между ними. Если при переключении режимов возникнет проблема с запросом, появится предупреждающее сообщение.
В режиме конструктора панель инструментов редактора запросов содержит следующие элементы:
- Начало работы с запросом – нажать, чтобы увидеть список шаблонов операций, которые помогут быстро приступить к добавлению нескольких операций в запрос. К ним относятся:
- запуск запросов на оценку;
- запуск запроса гистограммы;
- запуск двоичных запросов.
Следует нажать на стрелку рядом с каждым пунктом, чтобы увидеть доступные варианты для добавления в запрос.
- Пояснения – включить пошаговое объяснение всех компонентов и операций запроса.
- Конструктор/Код – нажать соответствующую вкладку "Конструктор" или "Код" на панели инструментов, чтобы выбрать режим редактора.
Для настройки общих параметров Prometheus независимо от режима устанавливают следующие опции:
- Легенда – определяет название временного ряда. Можно использовать предустановленный или пользовательский формат.
- Авто – отображает уникальные метки, а также все перекрывающиеся метки, если у серии несколько меток;
- Подробный – отображает все названия меток;
- Пользовательский – использует шаблоны для выбора включаемых меток, например, заменяется значением метки hostname; очистить поле ввода и нажать кнопкой "мыши" за его пределами, чтобы выбрать другой режим;
- Минимальный шаг – определяет нижнюю границу интервала между точками данных. Например, установить значение 1h для указания того, что измерения проводятся ежечасно. Этот параметр поддерживает макросы $__interval и $__rate_interval. Следует иметь ввиду, что даты диапазона запроса привязаны к шагу, и это может изменить начало и конец диапазона;
- Формат – переключение между следующими параметрами формата:
- Временные ряды – формат временных рядов по умолчанию;
- Таблица – для работы только в панели таблиц;
- Тепловая карта – отображает метрики типа "Гистограмма" на временной панели, преобразуя совокупные гистограммы в обычные и сортируя ряды по границам сегментов;
- Тип – задает тип запроса:
- Оба – вариант по умолчанию. Возвращает результаты как для запроса с диапазоном, так и для мгновенного запроса;
- Диапазон – возвращает вектор диапазона, состоящий из набора данных временных рядов, содержащих диапазон точек данных во времени для каждого временного ряда. Можно выбрать линии, столбцы, точки, составные линии или составные столбцы;
- Мгновенный запрос – возвращает одну точку данных для каждого запроса и только самую последнюю точку в указанном диапазоне времени. Результаты могут быть показаны в виде таблицы или в виде необработанных данных. Чтобы отобразить мгновенные результаты запроса на панели временных рядов, сначала добавить переопределение поля, затем добавить свойство переопределения с именем Transform и, наконец, выбрать Constant в раскрывающемся списке "Transformation (Преобразование)".
Примечание – Подсистема изменяет даты запросов, чтобы они соответствовали динамически рассчитываемому шагу. Это обеспечивает единообразное отображение данных метрик, а Prometheus требуется это для кеширования результатов. Однако приведение диапазона к шагу может привести к небольшому пробелу в данных на правом краю графика или изменить начальную дату диапазона. Например, шаг в 15 секунд приводит диапазон к времени Unix, кратному 15 секундам, а минимальный шаг в 1 неделю приводит диапазон к началу недели в четверг.
Чтобы получить подробную статистику по запросу нужно нажать "Query inspector (Инспектор)" (рисунок 10). Инспектор работает как своего рода инструмент отладки, который "проверяет" запрос, и предоставляет статистику запросов на вкладке "Stats (Статистика)", время отклика запроса – во вкладке "Query (Запрос)", сведения о фрейме данных в – "{} JSON" и форму данных – в "Data (Данные)".

Рисунок 10 — Инспектор запросов
Режим конструктора позволяет создавать запросы с помощью визуального интерфейса. Этот вариант лучше всего подходит для пользователей, у которых нет опыта работы с Prometheus и PromQL.
Для создания запроса можно выбрать конкретное название метрики в раскрывающемся списке "Metric (Метрика)" (рисунок 11).

Рисунок 11 — Фильтры метрик и меток
Источник данных запрашивает список доступных метрик с сервера Prometheus на основе выбранного диапазона времени. Также можно ввести текст в поле выбора, когда раскрывающийся список открыт, чтобы выполнить поиск и отфильтровать список.
Если требуется подробнее изучить свои метрики в конструкторе запросов, можно открыть обозреватель метрик, нажав на первый вариант в компоненте выбора метрик в конструкторе запросов (рисунок 12).

Рисунок 11 — Обозреватель метрик
Обозреватель метрик отличается от браузера метрик. Обозреватель метрик доступен только в секции "Конструктор запросов". Браузер метрик доступен только в редакторе кода. В обозревателе метрик пока нет возможности просматривать метки, но в браузере метрик можно отобразить все метки для имени метрики.
В разделе "Metrics browser (Обзор метрик)" отображаются все метрики в виде таблицы с разбивкой на страницы. В списке отображается общее количество метрик, а также название, тип и описание каждой метрики. Можно ввести текст в поле поиска, чтобы отфильтровать результаты. Также можно отфильтровать результаты по типу.
Существуют также дополнительные настройки для следующих элементов:
- включить описание в поиск, чтобы выполнять поиск и по названию, и по описанию;
- включить результаты без метаданных. Многие метрики Prometheus не имеют метаданных. Это позволяет пользователям включать метрики с неопределенным типом и описанием;
- отключить перенос текста;
- включить поиск по регулярному выражению. Для этого используется API Prometheus, чтобы включить поиск по регулярному выражению для имени метрики.
Для установки фильтров для меток нужно выбрать нужные метки и их значения в раскрывающемся списке. При выборе метрики источник данных запрашивает доступные метки и их значения с сервера. Можно использовать значок (плюс) для добавления метки и значок (корзина) – для удаления метки.
Чтобы добавить операции к запросу нужно нажать кнопку +Operations (Операции). Редактор запросов группирует операции по следующим разделам:
- Агрегации;
- Функции диапазона;
- Функции;
- Бинарные операции;
- Тригонометрические функции;
- Функции времени.
Все операции имеют параметры функций в заголовке операции. Для просмотра полного списка поддерживаемых функций нужно нажать operator. Некоторые операции позволяют применять к функциям специальные метки (рисунок 13).

Рисунок 13 — Функции и метки
Некоторые операции имеют смысл только при использовании в определенном порядке. Если добавление операции приведет к бессмысленному запросу, редактор запросов добавит операцию в нужное место.
Редактор запросов позволяет определить, какие операции наиболее подходят для выбранных метрик. Если это так, рядом с кнопкой +Operations (Операции) отображается подсказка.
Чтобы добавить операцию в пользовательский запрос, нажать на Hint (Подсказка) (рисунок 14).

Рисунок 14 — Подсказки
Как только запрос будет построено в соответствии с требованиями пользователя, следует нажать Run query (Выполнить запрос).
Режим кода предназначен для опытных пользователей Prometheus, знакомых с PromQL и языком запросов Prometheus. Редактор в режиме кода позволяет создавать запросы так же, как в Prometheus.
Пользовательский интерфейс также позволяет выбирать метрики, метки, фильтры и операции.
Можно писать сложные запросы с помощью текстового редактора с функцией автозавершения и подсветкой синтаксиса. Он также содержит браузер метрик, который поможет в написании запросов.
Функция автозаполнения в режиме кода работает автоматически при вводе текста. Редактор запросов может автоматически дополнять статические функции, агрегации, ключевые слова, а также динамические элементы, такие как метрики и метки.
Браузер метрик находит метрики и выбирает соответствующие метки, чтобы помочь создавать базовые запросы. При нажатии на "Metrics browser" в режиме Code отображаются все доступные метрики и метки. Если экземпляр Prometheus поддерживает это, каждая метрика также отображает свои HELP и TYPE в виде всплывающей подсказки (рисунок 15).

Рисунок 15 — Просмотр метрик
Если выбрать метрику на шаге 1, браузер сужает список доступных меток, чтобы отобразить только те, которые применимы к метрике. Затем можно выбрать одну или несколько меток, показанных на шаге 2, выбрать одно или несколько значений на шаге 3 для каждой метки, чтобы сузить область запроса. На шаге 4 можно выбрать "Use query" для выполнения запроса, "Use as rate query" для добавления операции ставки в запрос ($__rate_interval), "Validate selector", чтобы убедиться, что селектор действителен, и отобразить количество найденных серий, или "Clear", чтобы очистить выбранные элементы и начать заново.
Примечание – Если название метрики неизвестно, также можно выбрать несколько меток, чтобы сузить список, а затем найти соответствующие значения меток.
Над всеми списками в браузере метрик есть поле поиска, с помощью которого можно быстро отфильтровать метрики или метки, соответствующие определенной строке. В разделе значений есть только одно поле поиска, и его фильтрация применяется ко всем меткам, чтобы могли найти значения по выбранным меткам.
Как только запрос будет сформирован, следует нажать Run query (Выполнить запрос).
Переменные шаблона Prometheus
Вместо того чтобы вручную вводить такие данные, как имена серверов, приложений и датчиков в запросы метрик, можно использовать переменные. В Подсистеме такие переменные называются шаблонными. Подсистема перечисляет эти переменные в выпадающих списках в верхней части панели мониторинга, чтобы можно было изменять данные, отображаемые на панели мониторинга.
Можно использовать несколько разных типов переменных, но переменные типа Query запрашивают у Prometheus список метрик, меток, значений меток, результат запроса или серию.
С помощью таблицы 35 можно выбрать тип запроса к источнику данных Prometheus и ввести необходимые входные данные.
Под типом переменной запроса можно задать параметры запроса, указанные в таблице 36.
Доступны следующие параметры выбора:
Multi-value– установить этот флажок, чтобы разрешить одновременный выбор нескольких значений;Include All option– установить флажок, чтобы включить все переменные.
Имеется возможность использования некоторых глобальных встроенных переменных в переменных запроса, например, $__interval, $__interval_ms, $__range, $__range_s и $__range_ms. Функция label_values не поддерживает запросы, поэтому можно использовать эти переменные в сочетании с функцией query_result для фильтрации запросов по переменным.
Следует убедиться, что триггер обновления переменной настроен на изменение временного диапазона, чтобы получать правильные экземпляры при изменении временного диапазона на панели мониторинга.