+++
title = "Prometheus"
description = "Руководство по использованию Prometheus в Harvest"
keywords = ["harvest", "prometheus", "guide"]
aliases = ["/docs/harvest/latest/features/datasources/prometheus"]
weight = 1300
+++
# Источник данных Prometheus

Harvest включает встроенную поддержку Prometheus. В этом разделе объясняются параметры, переменные, запросы и другие параметры, характерные для источника данных Prometheus. См. [Добавить источник данных]({{< relref "add-a-data-source.md" >}}) для получения инструкций о том, как добавить источник данных в Harvest. Добавлять источники данных могут только пользователи с ролью администратора организации.

## Настройки прометея

Чтобы получить доступ к настройкам Prometheus, наведите указатель мыши на значок **Конфигурация** (шестеренка), затем щелкните **Источники данных**, а затем щелкните источник данных Prometheus.

| Имя                     | О                                                                                                                                                                                          |
| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Name`                    | Имя источника данных. Именно так вы обращаетесь к источнику данных в панелях и запросах.                                                                                                                   |
| `Default`                 | Источник данных по умолчанию означает, что он будет предварительно выбран для новых панелей.                                                                                                                                 |
| `Url`                     | URL-адрес вашего сервера Prometheus, например. `http://prometheus.example.org:9090`.                                                                                                                          |
| `Access`                  | Сервер (по умолчанию) = URL-адрес должен быть доступен из бэкэнда/сервера Harvest, Браузер = URL-адрес должен быть доступен из браузера.                   |
| `Basic Auth`              | Включите базовую аутентификацию для источника данных Prometheus.                                                                                                                                             |
| `User`                    |Имя пользователя для базовой аутентификации.                                                                                                                                                                |
| `Password`                | Пароль для базовой аутентификации.                                                                                                                                                                    |
| `Scrape interval`         | Установите типичный интервал очистки и оценки, настроенный в Prometheus. По умолчанию 15 с.
| `HTTP method`             | Используйте HTTP-метод POST или GET для запроса источника данных. POST — это рекомендуемый и предварительно выбранный метод, поскольку он позволяет выполнять более крупные запросы. Измените это на GET, если у вас версия Prometheus старше 2.1 или если запросы PИспользуйте HTTP-метод POST или GET для запроса источника данных. POST — это рекомендуемый и предварительно выбранный метод, поскольку он позволяет выполнять более крупные запросы. Измените это на GET, если у вас версия Prometheus старше 2.1 или если запросы POST ограничены в вашей сети.OST ограничены в вашей сети.                                                                              |
| `Disable metrics lookup`  | Установка этого параметра отключит средство выбора метрик и поддержку метрик/меток в автозаполнении поля запроса. Это помогает, если у вас есть проблемы с производительностью при работе с большими экземплярами Prometheus.      |
| `Custom Query Parameters` | Добавьте пользовательские параметры в URL-адрес запроса Prometheus. Например, `timeout`, `partial_response`, `dedup` или `max_source_resolution`. Несколько параметров должны быть объединены вместе с помощью '&amp;'. |
| `Label name`              | Добавьте имя поля в объект метки.                                                                                                                                                         |
| `URL`                     | Если ссылка загружается, используйте полный URL ссылки. Вы можете интерполировать значение из поля с помощью макроса `${__value.raw }`.                                                                  |
| `Internal link`           | Выберите, является ли ссылка внутренней или внешней. В случае внутренней ссылки селектор источника данных позволяет выбрать целевой источник данных. Поддерживает только источники данных трассировки.        |

## Редактор запросов Prometheus

Ниже вы можете найти информацию и параметры для редактора запросов Prometheus на панели инструментов и в разделе Исследовать.

### Редактор запросов в дашбордах

Откройте график в режиме редактирования, щелкнув заголовок > Изменить (или нажав клавишу «e» при наведении курсора на панель).

{{< рисунок src="/static/img/docs/v45/prometheus_query_editor_still.png"
                   анимированный-gif="/static/img/docs/v45/prometheus_query_editor.gif" >}}

| Имя                  Описание                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Query expression`  | Выражение запроса Prometheus, ознакомьтесь с [документацией Prometheus](http://prometheus.io/docs/querying/basics/).                                                                                                                                                                                                                                                                                                                                                            |
| `Legend format`     | Управляет именем временного ряда, используя имя или шаблон. Например, `{{hostname}}` заменяется значением метки для метки `hostname`.                                                                                                                                                                                                                                                                                              |
| `Min step`          |Дополнительный нижний предел для параметра [`step` запросов диапазона Prometheus](https://prometheus.io/docs/prometheus/latest/querying/api/#range-queries), а также для `$__interval` и `$ переменные __rate_interval`. Ограничение является абсолютным, его нельзя изменить с помощью настройки _Resolution_.                                                                                                                                                                                    |
| `Resolution`        |`1/1` устанавливает как переменную `$__interval`, так и параметр [`step` запросов диапазона Prometheus](https://prometheus.io/docs/prometheus/latest/querying/api/#range-queries), например что каждый пиксель соответствует одной точке данных. Для лучшей производительности можно выбрать более низкие разрешения. «1/2» извлекает только точку данных для каждого второго пикселя, а «1/10» извлекает одну точку данных на каждые 10 пикселей. Обратите внимание, что как _Min time interval_, так и _Min step_ ограничивают конечное значение `$__interval` и `step`. |
| `Metric lookup`     |Найдите названия метрик в этом поле ввода.                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `Format as`         | Переключение между «Таблица», «Временные ряды» или «Тепловая карта». «Таблица» будет работать только на панели «Таблица». «Тепловая карта» подходит для отображения метрик типа «Гистограмма» на панели «Тепловая карта». Под капотом он преобразует кумулятивные гистограммы в обычные и сортирует ряды по границам ведра.                                                                                                                                                                                                        |
| `Instant`           | Выполните «мгновенный» запрос, чтобы вернуть только самое последнее значение, которое Prometheus извлек для запрошенного временного ряда. Мгновенные запросы возвращают результаты намного быстрее, чем обычные запросы диапазона. Используйте их для поиска наборов меток.                                                                                                                                                                                                                                                                           |
| `Min time interval` | Это значение, умноженное на знаменатель из параметра _Resolution_, устанавливает нижний предел как для переменной `$__interval`, так и для параметра [`step` запросов диапазона Prometheus](https://prometheus.io/docs/prometheus/latest/querying /api/#range-queries). По умолчанию используется значение _Scrape interval_, установленное в параметрах источника данных.                                                                                                                                                           |
| `Exemplars`         | Запустите и покажите примеры на графике.                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |

> **Примечание.** Harvest изменяет даты запроса для запросов, чтобы привести их в соответствие с динамически вычисляемым шагом. Это обеспечивает согласованное отображение данных метрик, но может привести к небольшому разрыву данных на правом краю графика.

#### Мгновенные запросы в дашбордах

Источник данных Prometheus позволяет запускать «мгновенные» запросы, которые запрашивают только самое последнее значение.
Вы можете визуализировать результаты на панели таблицы, чтобы увидеть все доступные метки временного ряда.

Мгновенные результаты запроса состоят только из одной точки данных на серию, но могут быть показаны на панели графика с помощью [переопределений серии]({{< relref "../panels/visualizations/graph-panel.md#series- переопределяет" >}}).
Чтобы отобразить их на графике как последнюю точку значения, добавьте переопределение серии и выберите «Точки > истина».
Чтобы отобразить горизонтальную линию по всему графику, добавьте переопределение серии и выберите «Преобразование > константа».

> Поддержка постоянных переопределений серий доступна начиная с Harvest v6.4.

### Редактор запросов в Explore

|Имя              | Описание                                                                                                                                                                                                                                                                                                                                                                                                                              |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `Query expression` | Выражение запроса Prometheus, ознакомьтесь с [документацией Prometheus](http://prometheus.io/docs/querying/basics/).                                                                                                                                                                                                                                                                                                                       |
| `Step`             | [`Step` parameter of Prometheus range queries](https://prometheus.io/docs/prometheus/latest/querying/api/#range-queries). Здесь можно использовать единицы времени, например: 5 с, 1 мин, 3 ч, 1 д, 1 г. Единица измерения по умолчанию, если единица измерения не указана, — `s` (секунды).                                                                                                                                                                                           |
| `Query type`       | `Range`, `Instant`, or `Both`. При выполнении **Запроса диапазона** результат запроса отображается в виде графика и таблицы. Мгновенный запрос возвращает только последнее значение, полученное Prometheus для запрошенного временного ряда, и оно отображается в таблице. Если выбран вариант **Оба**, выполняется как мгновенный запрос, так и запрос диапазона. Результат запроса диапазона отображается на графике, а результат мгновенного запроса отображается в таблице. |
| `Exemplars`        | Запустите и покажите примеры на графике. |
## Шаблоны

Вместо жесткого кодирования таких вещей, как имя сервера, приложения и датчика в ваших запросах метрик, вы можете использовать вместо них переменные.
Переменные отображаются в виде раскрывающегося списка в верхней части панели инструментов. Эти раскрывающиеся списки упрощают изменение данных.
отображается на панели инструментов.

Ознакомьтесь с документацией [Templating]({{< relref "../variables/_index.md" >}}) для ознакомления с функцией шаблонов и различными
Типы переменных шаблона.

### Переменная запроса

Переменная типа _Query_ позволяет запрашивать у Prometheus список метрик, меток или значений меток. Плагин источника данных Prometheus
предоставляет следующие функции, которые вы можете использовать в поле ввода `Query`.
| Имя                         | Описание                                                           |
| ----------------------------- | ----------------------------------------------------------------------- |
| `label_names()`               |Возвращает список имен меток.                                       |
| `label_values(label)`         | Возвращает список значений метки для `label` в каждой метрике.        |
| `label_values(metric, label)` | Возвращает список значений метки для `label` в указанной метрике.|
| `metrics(metric)`             | Возвращает список метрик, соответствующих указанному регулярному выражению `metric`.       |
| `query_result(query)`         | Возвращает список результатов запроса Prometheus для `query`.              |

Для получения подробной информации о том, что такое _имена_метрик_, _имена_меток_ и _значения_меток_, обратитесь к [документации Prometheus](http://prometheus.io/docs/concepts/data_model/#metric-names-and-labels).

#### Использование переменных интервала и диапазона

> Поддержка `$__range`, `$__range_s` и `$__range_ms` доступна только в Harvest v5.3

Вы можете использовать некоторые глобальные встроенные переменные в переменных запроса; `$__interval`, `$__interval_ms`, `$__range`, `$__range_s` и `$__range_ms`, см. [Глобальные встроенные переменные]({{< relref "../variables/variable-types/global- variable.md" >}}) для получения дополнительной информации. Их удобно использовать в сочетании с функцией `query_result`, когда вам нужно отфильтровать переменные запросы, поскольку

Функция `label_values` не поддерживает запросы.

Обязательно установите для триггера «обновления» переменной значение «Изменение временного диапазона», чтобы получать правильные экземпляры при изменении временного диапазона на панели инструментов.

**Пример использования:**

Заполните переменную 5 самыми загруженными экземплярами запроса на основе среднего количества запросов в секунду за временной диапазон, показанный на панели инструментов:

```
Запрос: query_result(topk(5, sum(rate(http_requests_total[$__range])) по (экземпляру)))
Регулярное выражение: /"([^"]+)"/
```

Заполните переменную экземплярами, имеющими определенное состояние в течение временного диапазона, показанного на панели инструментов, используя `$__range_s`:

```
Query: query_result(max_over_time(<metric>[${__range_s}s]) != <state>)
Regex:
```
### Использование переменной `$__rate_interval`

> **Примечание.** Доступно в Harvest 7.2 и выше.

Переменная `$__rate_interval` предназначена для использования в функции скорости. Он определяется как max(`$__interval` + _Scrape interval_, 4 \* _Scrape interval_), где _Scrape interval_ — это параметр минимального шага (также известный как запрос*интервал, параметр для каждого запроса PromQL), если он установлен, а в противном случае \_Scrape interval*, установленный в источнике данных Prometheus (но игнорируя любую настройку минимального интервала на панели, поскольку последняя изменяется настройкой разрешения).

### Использование переменных в запросах

Есть два синтаксиса:

- `$<varname>` Пример: rate(http_requests_total{job=~"\$job"}[5m])
- `[[varname]]` Пример: rate(http_requests_total{job=~"[[job]]"}[5m])

Почему два пути? Первый синтаксис легче читать и писать, но он не позволяет вам использовать переменную в середине слова. Когда _Multi-value_ или _Include all value_
параметры включены, Harvest преобразует метки из обычного текста в строку, совместимую с регулярным выражением. Это означает, что вы должны использовать `=~` вместо `=`.
### Переменная специальных фильтров

Prometheus поддерживает специальный тип переменных [специальные фильтры]({{< relref "../variables/variable-types/add-ad-ad-hoc-filters.md" >}}). Это позволяет вам указать любое количество фильтров меток/значений на лету. Эти фильтры автоматически
применяется ко всем вашим запросам Prometheus.

## Аннотации

[Аннотации]({{< relref "../dashboards/annotations.md" >}}) позволяют накладывать расширенную информацию о событиях поверх графиков. Вы добавляете аннотацию
запросы через меню Dashboard / представление Annotations.

Prometheus поддерживает два способа запроса аннотаций.

- Обычный запрос метрики
- Запрос Prometheus для ожидающих и инициирующих предупреждений (подробности см. в разделе [Проверка предупреждений во время выполнения](https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/#inspecting-alerts-during-runtime))

Опция шага полезна для ограничения количества событий, возвращаемых вашим запросом.

## Загрузите метрики Harvest в Prometheus

Harvest предоставляет метрики для Prometheus на конечной точке `/metrics`. Мы также объединяем панель управления в Harvest, чтобы вы могли быстрее приступить к просмотру своих показателей. Вы можете импортировать связанную панель мониторинга, перейдя на страницу редактирования источника данных и щелкнув вкладку панели мониторинга. Там вы можете найти панель управления для Harvest и панель для Prometheus. Импортируйте и начните просматривать все метрики!

Подробные инструкции см. в разделе [Внутренние показатели Harvest]({{< relref "../administration/view-server/internal-metrics.md">}}).

## API Прометея

Источник данных Prometheus работает с другими проектами, реализующими [API запросов Prometheus](https://prometheus.io/docs/prometheus/latest/querying/api/), включая:

- [Кортекс] (https://cortexmetrics.io/docs/)
- [Танос](https://thanos.io/v0.17/components/query.md/)

Для получения дополнительной информации о том, как запрашивать другие проекты, совместимые с Prometheus, из Harvest, обратитесь к документации конкретного проекта.

## Предоставление источника данных Prometheus

Вы можете настроить источники данных с помощью конфигурационных файлов в системе обеспечения Harvest. Узнайте больше о том, как это работает, и обо всех настройках, которые вы можете установить для источников данных, на [странице документации по подготовке]({{< relref "../administration/provisioning/#datasources" >}}).

Вот несколько примеров подготовки для этого источника данных:

```yaml
apiВерсия: 1

Источник данных:
  - name: Prometheus
    type: prometheus
    # Access mode - proxy (server in the UI) or direct (browser in the UI).
    access: proxy
    httpMethod: POST
    url: http://localhost:9090
    jsonData:
      exemplarTraceIdDestinations:
        # Field with internal link pointing to data source in Harvest.
        # datasourceUid value can be anything, but it should be unique across all defined data source uids.
        - datasourceUid: my_jaeger_uid
          name: traceID

        # Field with external link.
        - name: traceID
          url: 'http://localhost:3000/explore?orgId=1&left=%5B%22now-1h%22,%22now%22,%22Jaeger%22,%7B%22query%22:%22$${__value.raw}%22%7D%5D'
```

## Управляемый сервис Amazon для Prometheus

Источник данных Prometheus работает с Amazon Managed Service for Prometheus. Если вы используете политику AWS Identity and Access Management (IAM) для управления доступом к вашему домену Amazon Managed Service for Prometheus, вы должны использовать AWS Signature Version 4 (AWS SigV4) для подписи всех запросов к этому домену. Дополнительные сведения об AWS SigV4 см. в [документации AWS] (https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html).

> **Примечание.** Для использования аутентификации SigV4 требуется Harvest версии 7.3.5 или выше.

Чтобы подключить источник данных Prometheus к Amazon Managed Service for Prometheus с использованием аутентификации SigV4, см. руководство по AWS [Настройка Harvest с открытым исходным кодом или Harvest Enterprise для использования с AMP] (https://docs.aws.amazon.com/prometheus). /latest/userguide/AMP-onboard-query-standalone-harvest.html).

Если вы используете Harvest в кластере Amazon EKS, следуйте руководству AWS [Запрос с использованием Harvest, работающего в кластере Amazon EKS](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-onboard- запрос-графана-7.3.html).

## Настройка экземпляров

> **Примечание.** Эта функция доступна в Prometheus 2.26+ и Harvest 7.4+.

Harvest 7.4 и более поздние версии имеют возможность отображать данные образцов вместе с метрикой как в Исследовании, так и на информационных панелях.
Образцы — это способ связать метаданные более высокой кардинальности из определенного события с традиционными данными временных рядов.
{{< Figure src="/static/img/docs/v74/exemplars.png" class="docs-image--no-shadow" caption="Снимок экрана, показывающий подробное окно Exemplar" >}}

Настройте образцы в настройках источника данных, добавив внешние или внутренние ссылки.
{{< Figure src="/static/img/docs/v74/exemplars-setting.png" class="docs-image--no-shadow" caption="Скриншот конфигурации Exemplars" >}}