Настройка через файл


Файл конфигурации агента зависит от варианта его запуска.

Варианты запуска агента

  • Запуск с параметром --upstreamAddr

  • Все бинарники загружаются с AM (Astra Monitoring)

  • При первичной регистрации получает дефолтный конфиг

  • При последующих запусках конфиг загружается из AM

Алгоритм запуска

  1. Запуск с параметрами командной строки

  2. Инициализация менеджеров с дефолтными настройками

  3. Проверка наличия файлов для всех менеджеров (без падения при отсутствии)

  4. Регистрация в Config API и получение дефолтного конфига

  5. Загрузка недостающих бинарников

  6. Запуск менеджеров, получение новых конфигов и отправка данных

  • Параметр general.load_binaries определяет возможность загрузки бинарников с AM

  • Запуск с настройками из YAML-файла

  • При первичной регистрации переданный конфиг сохраняется в AM

  • При последующих запусках конфиг загружается из AM

Алгоритм запуска

  1. Загрузка настроек из YAML-конфига

  2. Инициализация всех менеджеров

  3. Проверка наличия файлов:

    • Если файлов нет и скачивание включено - запоминаем и качаем после регистрации

    • Если файлов нет и скачивание отключено - завершение работы

  4. Регистрация в Config API

  5. Загрузка недостающих файлов (если включено)

  6. Запуск менеджеров, получение новых конфигов и отправка данных

Полный список параметров конфигурации

### Основные настройки запуска бинарника
general:
  # По умолчанию: обязательный параметр
  # Валидация: proto://ip:port
  # Описание: адрес, куда отправлять данные
  upstream_address: http://127.0.0.1:9700

  # По умолчанию: ":9702"
  # Валидация: ip:port
  # Описание: адрес сервера для проксирования запросов от локальных vmagent и vector
    # У сервера доступны следующие эндпоинты:
    # - /api/v1/info - информация об агенте
    # - /api/v1/config - конфигурация агента в виде yaml
    # - /api/v1/health - проверка работоспособности агента
    # - /api/v1/write/logs - эндпоинт для vector для записи логов и отправки в апстрим
    # - /api/v1/write/metrics - эндпоинт для vmagent для записи метрик и отправки в апстрим
  local_server: ""

  # По умолчанию: берется из файла './data/ID_agent', который генерируется автоматически
  # Валидация: ^[0-9][0-9]x0[0-9a-f]{12}$ | (example: "51x0412a8f882c5f")
  # Описание: идентификатор бинарника, используется в ConfigAPI для конфигурации и определения привязанного объекта
  id: ""

  # По умолчанию: ""
  # Валидация: длина < 100
  # Описание: выставляется в UI как имя Агента
  name: ""

  # По умолчанию: "./data"
  # Валидация: корректное имя файла/директории в Linux или Windows
  # Описание: директория с данными бинарника, где хранятся экспортеры, другие бинарники, их логи и т.д.
  base_directory: ""

  # По умолчанию: ""
  # Валидация: "debug" | "info" | "warn" | "error"
  # Описание: глобальный уровень логирования для агента, экспортеров, vmagent, vector
  log_level: ""

  # По умолчанию: хостнейм текущей машины, полученный от ОС
  # Валидация: длина < 256
  # Описание: имя хоста бинарника
  hostname: ""

  # По умолчанию: "v1"
  # Валидация: "v1"
  # Описание: API версия бэкенда, используемая в формировании пути запроса
  api_version: ""

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

  # По умолчанию: true if start from command line, false in all other cases
  # Описание: указывает, нужно ли загружать бинарные файлы при старте бинарника из Config API
  load_binaries: false

  # По умолчанию: false
  # Описание: не проверять сертификат при HTTPS запросах
  insecure: false


### Настройки отправки данных
upstream:
  # По умолчанию: general.upstream_address
  # Описание: основной адрес апстримa
  # Валидация: proto://ip:port
  # ! Дублирует general.upstream_address, но имеет больший приоритет
  address: ""

  # По умолчанию: ""
  # Валидация: длина < 256
  # Описание: токен для аутентификации на апстриме
  auth_token: ""

  # По умолчанию: дублирует general.insecure
  # Описание: не проверять сертификат при HTTPS запросах
  insecure: false

  # По умолчанию: дублирует general.load_binaries
  # Описание: загружать бинарные файлы из апстрима
  load_binaries: false

  # По умолчанию: []
  # Описание: список дополнительных апстримов, в которые будут проксироваться запросы помимо основного из general.upstream_address
  upstreams:
    - # По умолчанию: обязательный параметр
      # Описание: имя апстрима
      name: ""

      # По умолчанию: обязательный параметр
      # Валидация: proto://ip:port
      # Описание: адрес апстрима
      address: ""

      # По умолчанию: ""
      # Валидация: длина < 256
      # Описание: токен для аутентификации на апстриме
      auth_token: ""


### Настройки проксирования запросов
proxy:
  # По умолчанию: general.local_server
  # Валидация: ip:port
  # Описание: адрес сервера для проксирования запросов от локальных vmagent и vector
  # ! Дублирует general.local_server, но имеет больший приоритет
    # У сервера доступны следующие эндпоинты:
    # - /api/v1/info - информация об агенте
    # - /api/v1/config - конфигурация агента в виде yaml
    # - /api/v1/health - проверка работоспособности агента
    # - /api/v1/write/logs - эндпоинт для vector для записи логов и отправки в апстрим
    # - /api/v1/write/metrics - эндпоинт для vmagent для записи метрик и отправки в апстрим
  local_server: ""

  # По умолчанию: "" (сервер отключен)
  # Валидация: ip:port
  # Описание: адрес HTTP прокси в формате ip:port
  http: ""

  # По умолчанию: "" (сервер отключен)
  # Валидация: ip:port
  # Описание: адрес HTTPS прокси в формате ip:port
  https: ""

  # По умолчанию: ""
  # Валидация:length < 256
  # Описание: токен для аутентификации на прокси
  auth_token: ""

  # По умолчанию: false
  # Описание: зарегистрироваться в Config API как прокси
  register: false

  # По умолчанию: "", используется захардкоженный сертификат
  # Валидация: корректное имя файла/директории в Linux или Windows
  # Описание: путь до файла с TLS сертификатом для HTTPS proxy server
  tls_cert_file: test/tls/cert.pem

  # По умолчанию: "", используется захардкоженный ключ
  # Валидация: корректное имя файла/директории в Linux или Windows
  # Описание: путь до файла с TLS ключом для HTTPS proxy server
  tls_key_file: test/tls/key.pem

  # По умолчанию: ""
  # Валидация: корректное имя файла/директории в Linux или Windows
  # Описание: путь до файла с логами запросов, проходящих через local sever и proxy server
  # ! Если указать log_requests_file: "", то логирования запросов не будет
  log_requests_file: ""

  # По умолчанию: false
  # Описание: кэшировать бинарные файлы, которые качает проксируемый агент
  cache_binaries: true


### Взаимодействие с Config API
watcher:
  # По умолчанию: ${GOOS}
  # Валидация: "darwin", "linux", "windows"
  # Описание: ОС для скачивания бинарников с Config API
  os: ""

  # По умолчанию: ${GOARCH}
  # Валидация: "386", "amd64", "arm", "armv7", "arm64"
  # Описание: архитектура для скачивания бинарников с Config API
  arch: ""

  # По умолчанию: 4
  # Валидация: load_concurrency >= 1
  # Описание: сколько воркеров конкурентно скачивают бинарники
  load_concurrency: 4

  # По умолчанию: infinite
  # Описание: сколько делать попыток попытаться зарегистрироваться в Config API перед падением
  register_retry: 0

  # По умолчанию: 10s
  # Валидация: register_interval >= 1s
  # Описание: интервал между повторными регистрациями в Config API
  register_interval: ""

  # По умолчанию: 30s
  # Валидация: config_update_interval >= 1s
  # Описание: интервал между двумя проверками наличия новой конфигурации в Config API
  config_update_interval: ""

  # По умолчанию: 30s
  # Валидация: instance_send_interval >= 1s
  # Описание: интервал отправки текущей информации об инстансе в Config API
  instance_send_interval: ""

  # По умолчанию: 90s
  # Валидация: request_timeout >= 1s
  # Описание: таймаут HTTP запроса в Config API
  request_timeout: ""

  # По умолчанию: false
  # Описание: перетереть конфигурацию в Config API локальной конфигурацией из этого файла
  force_local: false

  # По умолчанию: false
  # Описание: сделать force_local: false в этом файле после запуска агента
  disable_force_local: false

  # По умолчанию: false
  # Описание: не использовать конфигурацию из Config API
  no_configuration: false


### Менеджер метрик, запускает vmagent для сбора метрик с HTTP серверов, предосавляющих метрики в prometheus формате
metrics:
  # По умолчанию: false
  # Описание: запустить ли vmagent
  enabled: false

  # По умолчанию: general.base_directory + "/metrics/vmagent"
  # Валидация: корректное имя файла/директории в Linux или Windows
  # Описание: путь до vmagent
  path: ""

  # По умолчанию: ":9703"
  # Валидация: ip:port
  # Описание: адрес vmagent для получения метрик в push режиме и информации о работе
  server_address: ""

  # По умолчанию: general.base_directory + "/metrics/vmagent.yaml"
  # Валидация: корректное имя файла/директории в Linux или Windows
  # Описание: путь к файлу, в который записывается конфиг vmagent перед запуском
  save_config_path: ""

  # По умолчанию: false
  # Описание: использовать локальный конфиг, сохраненный в save_config_path, не создавая новый
  use_local_config: false

  # По умолчанию: general.base_directory + "/metrics/vmagent.log"
  # Валидация: корректное имя файла/директории в Linux или Windows
  # Описание: путь к файлу, в который записывается лог vmagent
  # ! Если указать log_file: "", то логирования не будет, так его можно отключить
  log_file: ./data/metrics/vmagent.log

  # По умолчанию: ""
  # Валидация: "debug" | "info" | "warn" | "error"
  # Описание: уровень логирования для vmagent
  log_level: ""

  # По умолчанию: general.base_directory + "/metrics/data/"
  # Валидация: корректное имя файла/директории в Linux или Windows
  # Описание: папка, в которой сохраняются данные vmagent при недоступности remote write
  # ! Если указать cache_directory: "", то кэширования не будет, так его можно отключить
  cache_directory: ./data/metrics/data/

  # По умолчанию: "/health"
  # Валидация: путь со слэшом вначале
  # Описание: путь, по которому обращаться в metrics.server_address для получения информации о работе vmagent
  # ! Если указать health_path: "", то проверок не будет, так их можно отключить
  health_path: /health

  # По умолчанию: 20s
  # Валидация: health_interval >= 100ms
  # Описание: интервал healthcheck проверок vmagent (не рекомендуется ставить меньше 1 секунды)
  health_interval: ""

  # По умолчанию: latest
  # Описание: версия для скачивания с Config API при включенном load_binaries
  version: ""

  # По умолчанию: 30s
  # Валидация: scrape_timeout >= 1s
  # Описание: таймаут запроса vmagent для получения метрик с экспортера
  scrape_timeout: ""

  # По умолчанию: []
  # Описание: описания целей наблюдения для vmagent кроме экспортеров из вкладки конфига exporters
  custom_targets:
    - # По умолчанию: обязательный параметр
      # Описание: уникальное имя цели наблюдения
      name: ""

      # По умолчанию: обязательный параметр
      # Валидация: ip:port
      # Описание: адрес цели наблюдения в формате ip:port
      target: ""

      # По умолчанию: "/metrics"
      # Валидация: путь со слэшом вначале
      # Описание: путь для получения метрик с цели наблюдения
      metrics_path: "/metrics"

      # По умолчанию: 30s
      # Валидация: scrape_interval >= 1s
      # Описание: интервал сбора метрик с цели наблюдения
      scrape_interval: 30s

      # По умолчанию: {}
      # Описание: дополнительные метки, которые будут добавлены к метрикам с этой цели наблюдения
      labels:
        a: b

      # По умолчанию: false
      # Описание: отключить сбор метрик с этой цели наблюдения
      disabled: true


### Менеджер логов, запускает vector для сбора логов с внутренних компонент агента и с других источников
logs:
  # По умолчанию: false
  # Описание: запустить ли vector
  enabled: false

  # По умолчанию: general.base_directory + "/logs/vector"
  # Валидация: корректное имя файла/директории в Linux или Windows
  # Описание: путь до vector
  path: ""

  # По умолчанию: ":9704"
  # Валидация: ip:port
  # Описание: адрес vector для получения логов в push режиме и информации о работе
  server_address: ""

  # По умолчанию: general.base_directory + "/logs/vector.yaml"
  # Валидация: корректное имя файла/директории в Linux или Windows
  # Описание: путь к файлу, в который записывается конфиг vector перед запуском
  # Также в эту папку нужно складывать кастомные конфиги для вектора
  save_config_path: ""

  # По умолчанию: general.base_directory + "/logs/vector.log"
  # Валидация: корректное имя файла/директории в Linux или Windows
  # Описание: путь к файлу, в который записывается лог vector
  # ! Если указать log_file: "", то логирования не будет, так его можно отключить
  log_file: ./data/logs/vector.log

  # По умолчанию: general.base_directory + "/logs/data/"
  # Валидация: корректное имя файла/директории в Linux или Windows
  # Описание: папка, в которой сохраняются данные vector при недоступности remote write
  # ! Если указать cache_directory: "", то кэширования не будет, так его можно отключить
  cache_directory: ./data/logs/data/

  # По умолчанию: "/health"
  # Валидация: путь со слэшом вначале
  # Описание: путь, по которому обращаться в logs.server_address для получения информации о работе vector
  # ! Если указать health_path: "", то проверок не будет, так их можно отключить
  health_path: /health

  # По умолчанию: 20s
  # Валидация:health_interval >= 100ms
  # Описание: интервал healthcheck проверок vector (не рекомендуется ставить меньше 1 секунды)
  health_interval: ""

  # По умолчанию: latest
  # Описание: версия для скачивания с Config API при включенном load_binaries
  version: ""

  # По умолчанию: "", не используется
  # Валидация: корректное имя файла/директории в Linux или Windows
  # Описание: файл, куда записывать все логи, собираемые vector
  all_logs_file: ""

  # По умолчанию: false
  # Описание: выключить требование подтверждения remote write о получении пакета логов
  disable_acknowledgements: true

  # По умолчанию: []
  # Валидация: agent, exporters, vmagent, vmauth, custom, self, demo
  # Описание: список источников, откуда брать логи
  # ! Если указать sources: [], то логирования не будет, так его можно отключать без отключения vector
  sources: ["exporters", "custom"]

  # По умолчанию: false
  # Описание: добавить все возможные sources ("agent", "exporters", "vmagent", "custom")
  all_sources: false

  # По умолчанию: []
  # Валидация: корректный ID
  # Описание: список ID конфигураций вектора, которые нужно использовать для сбора логов
  vector_config_ids: []


### Менеджер экспортеров, запускает экспортеры для предоставления метрик в prometheus формате
exporters:
  # По умолчанию: false
  # Описание: запустить ли менеджер экспортеров
  enabled: false

  # По умолчанию: general.base_directory + "/exporters"
  # Валидация: корректное имя файла/директории в Linux или Windows
  # Описание: путь до папки с экспортерами
  directory: ""

  # По умолчанию: 20s
  # Валидация: health_interval >= 100ms
  # Описание: интервал healthcheck проверок экспореров (не рекомендуется ставить меньше 1 секунды)
  health_interval: ""

  # По умолчанию: false
  # Описание: отключить healthcheck проверки экспореров
  disable_health: true

  # По умолчанию: []
  # Описание: описание экспортеров, которые нужно запустить
  exporters:
    - # По умолчанию: обязательный параметр
      # Валидация: корректное имя файла/директории в Linux или Windows
      # Описание: имя экспортера, используется для идентификации в логах и метриках
      name: ""

      # По умолчанию: обязательный параметр
      # Валидация: ip:port
      # Описание: адрес, на котором будет слушать сервер экспортера в формате ip:port
      address: ""

      # По умолчанию: "am"
      # Валидация: am | args | cfg | cfg_args | nothing
      # Описание: тип запуска экспортера
      start_type: am

      # По умолчанию: {general.base_directory}/exporters/{name}
      # Валидация: корректное имя файла/директории в Linux или Windows
      # Описание: путь до бинарника экспортера
      path: ""

      # По умолчанию: {}
      # Описание: дополнительные лейблы для метрик экспортера
      labels:
        a: a

      # По умолчанию: обязательный параметр для start_type: args | cfg_args
      # Описание: аргументы командной строки для запуска экспортера
      args: "-c config"

      # По умолчанию: false
      # Описание: отключить экспортер
      disabled: true

      # По умолчанию: {}
      # Описание: базовая конфигурация экспортера (используется для start_type: am)
      base:
        # По умолчанию: "/metrics"
        # Валидация: путь со слэшом вначале
        # Описание: путь до метрик экспортера
        metrics_path: /metrics

        # По умолчанию: "30s"
        # Валидация: интервал >= 1s
        # Описание: интервал сбора метрик
        interval: 30s

        # По умолчанию: "/health"
        # Валидация: путь со слэшом вначале
        # Описание: путь до health check экспортера
        health_path: /health

        # Описание: настройки логирования экспортера
        logger:
          # По умолчанию: "info"
          # Валидация: trace, debug, info, warn, error, disabled
          # Описание: уровень логирования
          level: info

          # По умолчанию: general.base_directory + "/exporters/logs/{name}.log"
          # Валидация: корректное имя файла/директории в Linux или Windows
          # Описание: файл для записи логов
          file: test-1.log

          # По умолчанию: "json"
          # Валидация: "", json, nocolor, disabled
          # Описание: формат вывода в stderr (json или text)
          stderr: json

        # По умолчанию: false
        # Описание: собирать метрики go runtime
        go_metrics: true

        # По умолчанию: false
        # Описание: собирать метрики процесса
        proc_metrics: true

      # Описание: ПРИМЕР специфичной конфигурации экспортера, сохраняется as it is в yaml конфиг экспортера
      # ! Используется для start_type: am | cfg | cfg_args
      config:
        dns:
            srv: 127.0.0.1
            host: abc


### Настройки логов бинарника
logger:
  # По умолчанию: info
  # Валидация: trace, debug, info, warn, error, disabled
  # Описание: уровень логирования
  level: ""

  # По умолчанию: "", нет логирования в файл
  # Валидация: корректное имя файла/директории в Linux или Windows
  # Описание: путь к файлу, в который будут записаны логи бинарника
  file: ""

  # По умолчанию: "", обычное логирования zerolog console format с цветами
  # Валидация: "", json, nocolor, disabled
  # Описание: формат логирования в stderr
  stderr: ""