[Документация Yandex Cloud](../../../../index.md) > [Monium](../../../index.md) > Поставка данных > [Unified Agent](index.md) > Конфигурирование > Входы

# Входы

Вход задается в секции `routes`:`input`. Общий формат описания входа:

```yaml
- input:
    plugin: ... # имя плагина
    id: ... # (рекомендуемый) идентификатор входа, используется в метриках и логах
    flow_control: # настройка инфраструктуры работы с сессиями
    ...
```

Читайте также [настройка инфраструктуры работы с сессиями](services.md#flow_control).

## Вход agent_metrics {#agent_metrics_input}

Вход собирает метрики работоспособности Unified Agent.

Описание параметров:

```yaml
- input:
    plugin: agent_metrics
    config:
      # Периодичность опроса источника данных.
      poll_period: 15s  # необязательный, по умолчанию 15 секунд

      # Неймспейс, в который нужно поместить метрики.
      # Если указан, будет добавлен префиксом к имени всех метрик.
      namespace: null  # необязательный, по умолчанию не задан
```

## Вход metrics_pull {#metrics_pull_input}

Вход опрашивает указанный URL с заданной периодичностью для сбора метрик в формате Prometheus.

Описание параметров:

```yaml
  - input:
      plugin: metrics_pull
      config:
        # URL для сбора метрик.
        url: http://localhost:12345  # обязательный

        # Формат получаемых сообщений. В настоящий момент поддерживается только значение prometheus.
        format:  # обязательный
          # Входящие сообщения имеют формат prometheus (https://github.com/prometheus/docs/blob/main/docs/instrumenting/exposition_formats.md).
          prometheus: {}
        
        metric_name_label:  my_name  # необязательный, позволяет переименовать метку name вашего приложения, поскольку это имя зарезервировано агентом.

        # Периодичность опроса источника данных.
        # Моменты запуска выровнены по сетке размера poll_period, начиная с Unix epoch.
        poll_period: 15s  # необязательный, по умолчанию 15 секунд

        # Неймспейс, в который нужно поместить метрики.
        # Если указан, будет добавлен префиксом с точкой к имени всех метрик.
        namespace: null  # необязательный, по умолчанию не задан

        # Число повторных попыток, если запрос завершился с ошибкой.
        retry_count: 0  # необязательный, по умолчанию 0

        # Задержка между повторными попытками.
        retry_delay: 1s  # необязательный, по умолчанию 1 секунда

        # Таймаут запроса, включая все повторные попытки.
        timeout: 5s  # необязательный, по умолчанию 5 секунд

        # Заголовки, которые нужно добавить к запросу.
        headers:  # необязательный, по умолчанию не задан
          h1: v1
          h2: v2

        # Имена заголовков HTTP-ответа, которые нужно сохранить в метаданных сообщения.
        capture_response_headers: []  # необязательный, по умолчанию не задан

        # HTTP-метод, который нужно использовать в запросе.
        # Возможные значения: GET, POST.
        http_method: GET  # необязательный, по умолчанию GET

        # Секция для настройки меток Prometheus
        prometheus_config:  # необязательный, по умолчанию не задан
          # Задает значение метки job для собираемых метрик.
          job_name: my_job  # необязательный, по умолчанию не задан
          # Метка instance формируется автоматически на основе адреса (url).

    # Описание выходного канала для передачи метрик в Monium Metrics.
    # Используется вместе с prometheus_config.
    channel:
      output:
        plugin: metrics
        config:  # URL, на который будут отправляться метрики.
          url: https://monitoring.api.yandexcloud.kz/prometheus/workspaces/workspace_id/api/v1/write
          # Параметры авторизации запроса.
          oauth:
            secret:
              file: file_token
```

`metric_name_label` — определяет, в какую метку агент записывает название метрики для данных Prometheus. По умолчанию используется метка `name`, что может вызвать конфликт, если ваше приложение уже использует эту метку. В этом случае при записи метрик появляется ошибка:

```bash
label name 'name' is reserved
```

Чтобы избежать ошибки, укажите любое другое уникальное имя.

## Вход linux_metrics {#linux_metrics_input}

Вход для сбора статистики использования системных ресурсов (процессор, память, сеть, диск) для Linux-совместимых операционных систем. Вход собирает значения метрик из [procfs](https://ru.wikipedia.org/wiki/Procfs) и [sysfs](https://ru.wikipedia.org/wiki/Sysfs).

Unified Agent собирает метрики только тех устройств хранения, которые смонтированы как `/dev/..`. В частности, не поддерживаются [файловые хранилища](../../../../compute/concepts/filesystem.md) Compute Cloud.

{% note warning %}

Если агент запущен в Docker-контейнере, для мониторинга системных метрик хоста и дополнительных дисков, подключенных к хосту, передайте в контейнер пути до procfs, sysfs и точек монтирования дисков. Для этого воспользуйтесь командой `docker run` с параметром `-v`. Например, если дополнительный диск смонтирован в каталоге `/data`:

```bash
  docker run \
    -p 16241:16241 -it --detach --uts=host \
    --name=ua \
    -v /proc:/ua_proc \
    -v /data:/data \
    -e PROC_DIRECTORY=/ua_proc \
    -e FOLDER_ID=a1bs81qpemb4******** \
    cr.yandexcloud.kz/yc/unified-agent
```

{% endnote %}

Описание параметров:

```yaml
- input:
    plugin: linux_metrics
    config:
    # Периодичность сбора статистики.
    poll_period: 15s  # необязательный, по умолчанию 15 секунд

    # Директория со смонтированным procfs, из которой будут браться счетчики.
    # Если агент запущен в Docker-контейнере,  для мониторинга хоста передайте /proc хоста внутрь контейнера с помощью параметра -v.
    proc_directory: "/proc"  # необязательный, по умолчанию "/proc"

    # Директория со смонтированным sysfs, из которой будут браться счетчики.
    # Если агент запущен в Docker-контейнере, для мониторинга хоста передайте /sys хоста внутрь контейнера с помощью параметра -v.
    sys_directory: "/sys"  # необязательный, по умолчанию "/sys"

    # Список ресурсов, с которых нужно собирать статистику.
    # Ключ — одно из значений cpu, memory, network, storage, io, kernel.
    # Значение — степень детализации, одно из значений basic, advanced.
    resources:  # необязательный
        cpu: advanced  # необязательный, по умолчанию — basic

        memory: advanced  # необязательный, по умолчанию — basic

        network: advanced  # необязательный, по умолчанию — basic

        storage: advanced  # необязательный, по умолчанию — basic

        io: advanced  # необязательный, по умолчанию — basic

        kernel: advanced  # необязательный, по умолчанию — basic

        # Секция для настройки меток Prometheus
        prometheus_config:  # необязательный, по умолчанию не задан
          # Задает значение метки job для собираемых метрик.
          job_name: my_job  # необязательный, по умолчанию не задан
          # Метка instance формируется автоматически на основе адреса (url).

    # Описание выходного канала для передачи метрик в Monium Metrics.
    # Используется вместе с prometheus_config.
    channel:
      output:
        plugin: metrics
        config:  # URL, на который будут отправляться метрики.
          url: https://monitoring.api.yandexcloud.kz/prometheus/workspaces/workspace_id/api/v1/write
          # Параметры авторизации запроса.
          oauth:
            secret:
              file: file_token
```

## Вход file_input {#file_input}

Вход, читающий данные из текстовых файлов и архивов `.zst`. В ОС нужна поддержка подсистемы `inotify` в ядре и файловой системе.

Правила работы с файлами:

* Поддерживается внешняя ротация файла по схеме «перемещение (переименование) — создание нового файла». В режиме `multiline` строки с `multiline_start_prefix` будут считаться началом мультистроки. К мультистроке присоединяются все последующие строки, которые не содержат данный префикс.

* В качестве источника данных можно указать конкретный файл или маску с параметром `multi_file`.
  
  В метаданные сессии добавляется ключ `file` — имя файла без пути. Чтобы записывать в метаданные полный путь к файлу, используется параметр `multi_add_full_path_to_meta`.

* С файлом для записи данных разрешены операции создания файла, записи в конец файла новых данных и ротация.
* Ротация подразумевает перемещение файла, расположение файла в структуре (inode) не меняется.
* Файл после ротации должен оставаться неизменным в течение некоторого времени.

Особенности работы с архивом:

* Формат архива автоматически определяется по расширению `.zst` или может быть явно указан через параметр `file_format`.
* Рекомендуется разбивать архив на фреймы.
* Параметр `read_only_newlines` игнорируется, поскольку не поддерживается при работе с архивом.
* Чтобы избежать чрезмерного потребления CPU и замедления работы, рекомендуется включить параметр `keep_open_file` либо установить параметру `max_lines_in_record` значение, соизмеримое с размером каждого фрейма.

При работе с файлами в лог будет записываться информация:

* Если при чтении событий обнаружится событие `IN_Q_OVERFLOW`,
* Остановка Unified Agent при удалении, перемещении или размонтировании каталогов, содержащих файл для чтения и файлы после ротации.

Описание параметров:

```yaml
    plugin: file_input
        config:

          # Путь к файлу для чтения
          path: /path_to_file # обязательный

          # Путь к каталогу, в который перемещаются файлы при ротации
          out_directory: "" # необязательный, по умолчанию — каталог файла для чтения (пустая строка)

          # Путь к каталогу, в котором будет создан служебный файл текущего состояния — позиция чтения, имя файла, inode и другие параметры.
          state_directory: /path_to_state # обязательный

          # Пропустить уже существующие строки при первом запуске
          read_only_new_lines: false # необязательный, по умолчанию false

          # Максимальное количество строк, которое будет одновременно прочитано  
          max_lines_in_record: 100 # необязательный, по умолчанию 100

          # Максимальный размер строки.
          # При чтении все последующие символы будут проигнорированы до символа перевода строки
          max_bytes_in_line: 1kb # необязательный, по умолчанию 1kb

          # Минимальный размер блока данных для считывания из файла.
          # Если в течение 100 мс из-за этого ограничения данные не считывались, чтение будет выполнено. 
          # Параметр не применяется для считывания файла после ротации.
          min_bytes_read: 1Mb # необязательный, по умолчанию 1kb

          # Символ перевода строки
          line_delimiter: "\n" # необязательный, по умолчанию "\n"

          # Держать постоянно открытым файл для чтения. Иначе, файл открывается только на момент чтения и выполняется установка необходимой позиции чтения
          keep_open_file: false # необязательный, по умолчанию false

          # Формат файла для чтения. Может принимать значения text, zstd и auto.
          # Если установлен в auto — формат файла будет определен по расширению
          file_format: auto # необязательный, по умолчанию auto

          # Максимальная частота сброса внутреннего буфера разархивированных данных в миллисекундах.
          # Малые значения ведут к экономии потребляемой памяти, но увеличивают нагрузку на процессор
          archive_shrink_period_ms: 1000 # необязательный, по умолчанию 1000 (1 секунда)

          # Трактовать параметр path как маску поиска файлов для обработки
          multi_file: false # необязательный, по умолчанию false

          # Как часто искать новые файлы по маске в режиме multi_file 
          discovery_period_ms: 1000 # необязательный, по умолчанию 1000 (1 секунда)

          # Добавлять полный путь к файлу в метаданные сессии. Если false — добавляется только имя файла
          multi_add_full_path_to_meta: false # необязательный, по умолчанию false

          # Считать ли в дополнение к агрегированным метрикам метрики для каждого входного файла
          per_file_metrics: false # необязательный, по умолчанию false

          # Обработка многострочных сообщений
          multiline:

            # Включение режима обработки многострочных сообщений.
            read_multiline: false # необязательный, по умолчанию false

            # Максимальное количество строк в многострочных сообщениях.
            max_lines_in_multiline: # необязательный, по умолчанию 100

            # Регулярное выражение для определения начала многострочного сообщения.
            # Все последующие строки, которые не соответствуют регулярному выражению, будут присоединены к текущему сообщению.
            # Значение по умолчанию соответствует началу строки вида "2022-07-01 16:50:16,037 WARN".
            multiline_start_prefix: "^(\\d\\d\\d\\d-\\d\\d-\\d\\d)\\s*(\\d\\d:\\d\\d:\\d\\d,\\d\\d\\d)\\s*(\\w*)" # необязательный

            # Для чтения лог-файлов можно указать номер группы, соответствующий уровню важности.
            # Не используется, когда значение больше, чем число групп в регулярном выражение.
            # В метаданные сообщения добавляется уровень логирования.
            # В дальнейшем может быть учтено при последующей обработке и доставки сообщения на выход агента, например выходом yc_logs.
            log_priority_group: 3 # необязательный, по умолчанию 3

            # Сопоставление уровней логирования значениям из группы регулярного выражения
            priority_resources: "RESOURCES"           # необязательный, по умолчанию "RESOURCES"
            priority_debug: "DEBUG"                   # необязательный, по умолчанию "DEBUG"
            priority_info: "INFO"                     # необязательный, по умолчанию "INFO"
            priority_notice: "NOTICE"                 # необязательный, по умолчанию "NOTICE"
            priority_warning: "WARN"                  # необязательный, по умолчанию "WARN"
            priority_error: "ERROR"                   # необязательный, по умолчанию "ERROR"
            priority_critical_info: "CRITICAL_INFO"   # необязательный, по умолчанию "CRITICAL_INFO"
            priority_alert: "ALERT"                   # необязательный, по умолчанию "ALERT"
            priority_emerg: "EMERG"                   # необязательный, по умолчанию "EMERG"
```