+++
title = "Графит"
description = "Руководство по использованию графита в Harvest"
keywords = ["harvest", "graphite", "guide"]
aliases = ["/docs/harvest/latest/features/datasources/graphite"]
weight = 600
+++
# Использование графита в Harvest

Harvest имеет расширенный редактор запросов Graphite, который позволяет быстро перемещаться по метрическому пространству, добавлять функции,
изменять параметры функции и многое другое. Редактор может обрабатывать все типы графитовых запросов. Он может даже обрабатывать сложные вложенные
запросы с помощью ссылок на запросы.

См. [Добавить источник данных]({{< relref "add-a-data-source.md" >}}) для получения инструкций о том, как добавить источник данных в Harvest. Добавлять источники данных могут только администраторы организации. Чтобы узнать больше об источнике данных Graphite, обратитесь к [документации по продукту] Graphite (https://graphite.readthedocs.io/en/stable/).

## Настройки графита

Чтобы получить доступ к настройкам Graphite, наведите указатель мыши на значок **Конфигурация** (шестеренка), затем щелкните **Источники данных**, а затем щелкните источник данных Graphite.
Имя                 |   Описание
--------------------- | -------------
`Name`                | Имя источника данных. Именно так вы обращаетесь к источнику данных в панелях и запросах.
`Default`             | Источник данных по умолчанию означает, что он будет предварительно выбран для новых панелей.
`URL`                 | Протокол HTTP, IP и порт вашей установки graphite-web или graphite-api.
`Access`              | Сервер (по умолчанию) = URL-адрес должен быть доступен из бэкэнда/сервера Harvest, Браузер = URL-адрес должен быть доступен из браузера.
`Auth`                | См. [Аутентификация]({{< relref "../auth/_index.md" >}}) для получения дополнительной информации.
`Basic Auth`          | Включите базовую аутентификацию для источника данных.
`User`                | Имя пользователя для базовой аутентификации.
`Password`            | Пароль для базовой аутентификации.
`Custom HTTP Headers` |Нажмите **Добавить заголовок**, чтобы добавить собственный заголовок HTTP.
`Header`              | Введите имя пользовательского заголовка.
`Value`               |  Введите настраиваемое значение заголовка.
`Graphite details`    |
`Version`             | Выберите свою версию Graphite.
`Type`                | Выберите тип графита.

Режим доступа определяет, как будут обрабатываться запросы к источнику данных. Сервер должен быть предпочтительным, если не указано иное.

### Режим доступа к серверу (по умолчанию)

Все запросы будут направляться из браузера на бэкэнд/сервер Harvest, который, в свою очередь, будет перенаправлять запросы к источнику данных и тем самым обходить возможные требования совместного использования ресурсов между источниками (CORS). URL-адрес должен быть доступен с бэкэнда/сервера Harvest, если вы выберете этот режим доступа.

### Режим доступа через браузер

Все запросы будут выполняться из браузера непосредственно к источнику данных и могут подпадать под требования совместного использования ресурсов между источниками (CORS). URL-адрес должен быть доступен из браузера, если вы выбираете этот режим доступа.

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

Harvest включает специальный редактор запросов Graphite, который поможет вам создавать запросы.

Чтобы просмотреть необработанный текст запроса, отправленного в Graphite, щелкните значок **Переключить режим редактирования текста** (карандаш).
### Выберите показатели для запроса

Нажмите **Выбрать показатель**, чтобы начать навигацию по метрическому пространству. Как только вы начнете, вы можете продолжать использовать клавиши со стрелками мыши или клавиатуры. Вы можете выбрать подстановочный знак и продолжить.

{{< рисунок src="/static/img/docs/graphite/graphite-query-editor-still.png"
                  анимированный-gif="/static/img/docs/graphite/graphite-query-editor.gif" >}}

### Функции

Нажмите значок плюса рядом с **Функция**, чтобы добавить функцию. Вы можете выполнить поиск функции или выбрать ее из меню. Один раз
функция выбрана, она будет добавлена, и ваш фокус будет находиться в текстовом поле первого параметра.
- Чтобы отредактировать или изменить параметр, нажмите на него, и он превратится в текстовое поле.
- Чтобы удалить функцию, щелкните имя функции, а затем значок x.

{{< рисунок src="/static/img/docs/graphite/graphite-functions-still.png"
                  анимированный-gif="/static/img/docs/graphite/graphite-functions-demo.gif" >}}

Некоторые функции, такие как aliasByNode, поддерживают необязательный второй аргумент. Чтобы добавить аргумент, наведите указатель мыши на первый аргумент, а затем щелкните появившийся символ «+». Чтобы удалить второй необязательный параметр, нажмите на него и оставьте поле пустым, и редактор удалит его.

Чтобы узнать больше, обратитесь к [документации Graphite по функциям] (https://graphite.readthedocs.io/en/latest/functions.html).

### Сортировка меток

Если вам нужен последовательный порядок, используйте sortByName. Это может быть особенно раздражающим, когда у вас есть одинаковые метки на нескольких графиках, и они оба отсортированы по-разному и используют разные цвета. Чтобы исправить это, используйте `sortByName()`.

### Вложенные запросы

Вы можете ссылаться на запросы по строке «буква», в которой они находятся (аналогично Microsoft Excel). Если вы добавите на график второй запрос, вы можете сослаться на первый запрос, просто введя #A. Это обеспечивает простой и удобный способ создания составных запросов.

### Избегайте многих запросов с помощью подстановочных знаков

Иногда хочется увидеть несколько временных рядов, нанесенных на один и тот же график. Например, мы можем захотеть увидеть, как процессор используется на машине. Ты можешь
сначала создайте график, добавив запрос для каждого временного ряда, например `cpu.percent.user.g`,
`cpu.percent.system.g` и так далее. Это приводит к выполнению *n* запросов к источнику данных, что неэффективно.

Чтобы быть более эффективным, можно использовать подстановочные знаки в вашем поиске, возвращая все временные ряды в одном запросе. Например, `cpu.percent.*.g`.
### Изменить имя метрики в моих таблицах или диаграммах

Используйте функции псевдонима для изменения имен метрик в таблицах или графиках Harvest. Например, aliasByNode() или aliasSub().

## Консолидация точек

Все метрики Graphite объединены, поэтому Graphite не возвращает больше точек данных, чем пикселей на графике. По умолчанию,
эта консолидация выполняется с помощью функции `avg`. Вы можете контролировать, как Graphite консолидирует метрики, добавив функцию Graphite консолидироватьBy.

> **Примечание.** Это означает, что сводные значения легенды (максимум, минимум, итог) не могут быть правильными одновременно. Они рассчитаны
> на стороне клиента Harvest. И в зависимости от вашей функции консолидации только один или два могут быть правильными одновременно.

## Объединить временные ряды

Чтобы объединить временные ряды, нажмите **Объединить** в списке **Функции**.

## Исследование данных и теги

В Graphite _все_ является тегом.

При изучении данных ранее выбранные теги используются для фильтрации оставшегося набора результатов. Для выбора данных используется
Функция `seriesByTag`, которая принимает выражения тегов (`=`, `!=`, `=~`, `!=~`) для фильтрации временных рядов.

Конструктор запросов Harvest делает это автоматически, когда вы выбираете тег.

> **Совет.** Поиск по регулярным выражениям может быть довольно медленным для тегов с высокой кардинальностью, поэтому попробуйте сначала использовать другие теги, чтобы уменьшить область действия.
Начав с определенного имени/пространства имен, вы можете уменьшить количество результатов.

## Переменные шаблона

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

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

В Graphite 1.1 появились теги, а Harvest добавила поддержку запросов Graphite с тегами в версии 5.0. Чтобы создать переменную с использованием значений тегов, используйте функции Harvest `tags` и `tag_values`.

Запрос                                                      | Описание
----------------------------------------------------------- | -------------
`tags()`                                                    | Возвращает все теги.
`tags(server=~backend\*)`                                   | Возвращает только те теги, которые встречаются в сериях, соответствующих выражению фильтра.
`tag_values(server)`                                        | Возвращает значения тега для указанного тега.
`tag_values(server, server=~backend\*)`                     | Возвращает отфильтрованные значения тегов, которые встречаются для указанного тега в сериях, соответствующих этим выражениям.
`tag_values(server, server=~backend\*, app=~${apps:regex})` | Несколько выражений фильтра и выражений могут содержать другие переменные.

Дополнительные сведения см. в [документах Graphite по API автозаполнения для тегов](http://graphite.readthedocs.io/en/latest/tags.html#auto-complete-support).

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

Запрос, который вы указываете в поле запроса, должен быть запросом на поиск метрики. Например, такой запрос, как `prod.servers.*`, заполнит
переменная со всеми возможными значениями, которые существуют в позиции подстановочного знака.

Вы также можете создавать вложенные переменные, которые используют другие переменные в своем определении. Например
`apps.$app.servers.*` использует переменную `$app` в своем определении запроса.

#### Использование `__searchFilter` для фильтрации результатов переменных запроса
> Доступно начиная с Harvest 6.5 и выше
Использование `__searchFilter` в поле запроса отфильтрует результат запроса на основе того, что пользователь вводит в раскрывающемся списке.
Если пользователь ничего не ввел, значением по умолчанию для __searchFilter будет `*` и ``, если оно используется как часть регулярного выражения.

В приведенном ниже примере показано, как использовать `__searchFilter` как часть поля запроса, чтобы включить поиск `server`, когда пользователь вводит текст в поле выбора в раскрывающемся списке.

Запрос
``` ударить
apps.$app.servers.$__searchFilter
```

ТегЗначения
``` ударить
tag_values(сервер, сервер=~${__searchFilter:regex})
```

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

Вы можете использовать переменную в пути узла метрики или в качестве параметра функции.
![переменная](/static/img/docs/v2/templated_variable_parameter.png)

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

- `$<имя_переменной>` Пример: apps.frontend.$server.requests.count
- `${varname}` Пример: apps.frontend.${server}.requests.count

Почему два пути? Первый синтаксис легче читать и писать, но он не позволяет использовать переменную в середине слова. Использовать
второй синтаксис в таких выражениях, как `my.server${serverNumber}.count`.

Пример:
[Graphite Templated Dashboard](https://play.harvest.org/dashboard/db/graphite-templated-nested)
### Использование переменных в запросах тегов

Многозначные переменные в запросах тегов используют расширенный синтаксис форматирования, представленный в Harvest 5.0 для переменных: `{var:regex}`. Запросы без тегов будут использовать стандартное форматирование глобусов для многозначных переменных.

Пример выражения тега с форматированием регулярных выражений и использованием оператора Equal Tilde, `=~`:

``текст
сервер = ~ $ {серверы: регулярное выражение}
```

Для получения дополнительной информации см. [Дополнительные параметры формата переменных]({{< relref "../variables/advanced-variable-format-options.md" >}}).

## Аннотации

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

Graphite поддерживает два способа запроса аннотаций. Обычный метрический запрос, для этого вы используете текстовое поле `Graphite query`. Запрос событий Graphite, используйте текстовое поле «Теги событий Graphite»,
укажите тег или подстановочный знак (оставьте пустым, также должно работать)

## Вставьте метрики Harvest в Graphite

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

## Настройте источник данных с предоставлением

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

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

Источник данных:
  - name: Graphite
    type: graphite
    access: proxy
    url: http://localhost:8080
    jsonData:
      graphiteVersion: "1.1"
```
