Docker


Агент мониторинга доступен в виде Docker-контейнера, собранного на базе ubi образа Astra Linux 1.8.

Поддерживается только linux контейнеры архитектуры amd64.

Примечание

Вам может потребоваться добавить sudo перед командой или добавить пользователя в docker группу. Для получения дополнительной информации см. шаги после установки Linux для Docker Engine.

Образ контейнера агента доступен по адресу registry.astralinux.ru/am/agent:latest

Перед началом установки

Убедитесь что docker engine установлен и доступен в системе.

Создайте файл конфигурации

Для запуска агента требуется указать адрес для его подключения. Агент должен иметь доступ к компоненту config-api через прокси шлюз. По умолчанию, точка подключения агента для docker-compose версии находится на 8427 порту сервера мониторинга, для kubernetes есть преднастроеный ingress vmauth, выступающий точкой подключения агентов.

Важно

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

Конфигурационный файл должен находиться в одной директории с запускаемым файлом агента. По умолчанию, это /opt/am-agent/config.yml для Linux-систем и C:\Program Files\am-agent\config.yml для Windows-систем.

/opt/am-agent/config.yml
general:
  # адрес для подключения vmauth(8427) или другой агент с proxy agent(9700)
  upstream_address: https://astra-monitoring.server:8427
  insecure: True  # игнорировать самоподписаный сертификат для https
  # name: Имя_в_интерфейсе  # имя агента
  # hostname: hostname  # имя хоста агента
  # auth_token: <upstream_token>  # токен для подключения

Замените general.upstream_address на адрес своего сервера astra-monitoring.

Хранение данных агента

Агент хранит свою конфигурацию на сервере мониторинга и фактически, все данные что ранятся локально, будут восстановлены после перезагрузкии системы. Такие данные как «экспортёры» или их конфигурации будут скачены из системы мониторинга. Некоторые компоненты к примеру для сбора логов пишут локально кеш с отправленными с обранными чанками, потеря этой информации может привести к утере части данных отправляемых на сервер. Критически важной информацией, которую хранит агент является его id, он хранится в папке с данными агента в файле ID_agent. По данному id идентифицируется конфигурация агента на сервре, так что его хранение является крайне важным для корректности работы системы.

Чтобы избежать потери данных, вы можете настроить постоянное хранилище с помощью томов Docker или связать локальную директорию с директорией в контейнере.

Примечание

Хотя оба метода похожи, есть небольшая разница. Если вы хотите, чтобы ваше хранилище полностью управлялось Docker и к нему можно было получить доступ только через контейнеры Docker и Docker CLI, вам следует выбрать постоянное хранилище docker volume . Однако если вам нужен полный контроль над хранилищем и вы хотите разрешить другим процессам, помимо Docker, получать доступ к слою хранилища или изменять его, то bind mounts — правильный выбор для вашей инсталяции.

Ипользование Docker volume (рекомендуется)

Используйте тома Docker, если вы хотите, чтобы Docker Engine управлял томом хранилища.

Чтобы использовать тома Docker для постоянного хранения, выполните следующие действия:

Создайте том Docker, который будет использоваться контейнером Agent, дав ему описательное имя (например, agent_data). Выполните следующую команду:

shell
# создайте постоянный docker-volume для данных
docker volume create agent_data

# проверьте что docker-volume создан корректно
# вы должны увидеть JSON с описанием
docker volume inspect agent_data

Использование Docker bind mounts

Если вы планируете использовать каталоги на своем хосте для базы данных или конфигурации при запуске агента в Docker, вам необходимо запустить контейнер с пользователем, имеющим разрешение на доступ и запись в используемый вами каталог.

Создайте директорию которая будет использована для хранения данных

# создание директории
sudo mkdir -p /opt/am-agent
# назначение прав для пользователя
sudo chown -R $USER:$USER /opt/am-agent

Запуск через docker cli

Примечание

В приведённых ниже командах используется ранее созданный volume „agent_data“. Для использования bind mounts необходимо заменить agent_data в строке -v agent_data:/opt/am/data на путь к директории на хосте.

shell
docker run -d \
  --name agent \
  --hostname my-agent \
  --privileged \
  --pid host \
  -v agent_data:/opt/am/data \
  -v /opt/am-agent/config.yml:/opt/am/config.yml \
  -v /:/rootfs:ro \
  -v /var/run:/var/run:rw \
  -v /sys:/sys:ro \
  -v /var/lib/docker/:/var/lib/docker:ro \
  -p 9700:9700 \
  registry.astralinux.ru/am/agent:latest \
  --dir /opt/am/data \
  --config /opt/am/config.yml

Параметры подключения должны быть заданы в файле конфигурации /opt/am-agent/config.yml

При управлении через конфигфайл требуется перезагрузка контейнера для применения изменений.

shell
docker run -d \
  --name agent \
  --hostname my-agent \
  --privileged \
  --pid host \
  -v agent_data:/opt/am/data \
  -v /:/rootfs:ro \
  -v /var/run:/var/run:rw \
  -v /sys:/sys:ro \
  -v /var/lib/docker/:/var/lib/docker:ro \
  -p 9700:9700 \
  registry.astralinux.ru/am/agent:latest \
  --dir /opt/am/data \
  --httpProxy 0.0.0.0:9700 -i \
  --upstreamAddr http(s)://astra-monitoring.server:8427

Параметры подключения должны быть заданы в --upstreamAddr (замените http(s)://astra-monitoring.server на свой адрес подключения агента, адрес компонента vmauth в сервреной части мониторинга)

Остановить контейнер агента

Чтобы остановить контейнер Agent, выполните следующую команду:

shell
# Для остановки контейнера агента выполните команду
# docker stop CONTAINER-ID или используйте
# docker stop NAME, если имя agent было задано
docker stop agent

Запуск через docker compose

Чтобы запустить последнюю версию агента с помощью docker compose выполните следующие действия:

  1. Создайте docker-compose.yaml файл.

shell
# переходим в директорию где будет создан docker-compose файл
cd /opt/am-agent

# создание docker-compose.yaml файла
touch docker-compose.yaml
  1. Добавьте следующий код в docker-compose.yaml файл.

Примечание

В приведённых ниже командах используется ранее созданный volume „agent_data“. Для использования bind mounts необходимо заменить agent_data в блоке volumes на путь к директории на хосте.

docker-compose.yaml
version: "3.8"
volumes:
  agent_data: {}
services:
  agent:
    image: registry.astralinux.ru/am/agent:latest
    container_name: agent
    restart: unless-stopped
    hostname: agent
    privileged: true
    pid: host
    ports:
    - 9700:9700
    command:
    - "--config"
    - "/opt/am/config.yml"
    - "--dir"
    - "/opt/am/data"
    volumes:
    - agent_data:/opt/am/data
    - /opt/am-agent/config.yml:/opt/am/config.yml
    - /:/rootfs:ro
    - /var/run:/var/run:rw
    - /sys:/sys:ro
    - /var/lib/docker/:/var/lib/docker:ro

Параметры подключения должны быть заданы в файле конфигурации /opt/am-agent/config.yml

При управлении через конфигфайл требуется перезагрузка контейнера для применения изменений.

docker-compose.yaml
version: "3.8"
volumes:
  agent_data: {}
services:
  agent:
    image: registry.astralinux.ru/am/agent:latest
    container_name: agent
    restart: unless-stopped
    hostname: agent
    privileged: true
    pid: host
    ports:
    - 9700:9700
    command:
    - "--upstreamAddr"
    - "http(s)://astra-monitoring.server:8427"
    - "--httpProxy"
    - "0.0.0.0:9700"
    - "--dir"
    - "/opt/am/data"
    volumes:
    - agent_data:/opt/am/data
    - /:/rootfs:ro
    - /var/run:/var/run:rw
    - /sys:/sys:ro
    - /var/lib/docker/:/var/lib/docker:ro

Параметры подключения должны быть заданы в --upstreamAddr (замените http(s)://astra-monitoring.server на свой адрес подключения агента, адрес компонента vmauth в сервреной части мониторинга)

  1. Для запуска docker-compose.yaml выполните следующую команду:

shell
# запуск контейнера агента
docker compose up -d

Для проверки работы контейнера можно ознакомиться с его логом, для этого необходимо выполнить:

shell
# логи запущенного контейнера агента
docker compose logs

Примечание

Для получения дополнительной информации об использовании команд Docker Compose обратитесь к документации docker compose.