Запуск агента в Docker

Обновлено 15.10.2026
Запуск агента ProtoOBP в отдельном контейнере, через docker compose и в Docker Swarm.

На этой странице:

Запуск в отдельном контейнере

  1. Подключитесь к Docker репозиторию ProtoOBP выполнив команду:

    sudo docker login --username <USERNAME> registry.git.proto.group
    

    Ваш <USERNAME> и пароль указаны в лицензионном сертификате, полученном ранее от вендора, в разделе “Учетные данные”. Пароль вводится интерактивно.

  2. Запустите агента

        docker run -d \
        --cgroupns host \
        --pid host \
        --name protoobp-agent \
        -v /var/run/docker.sock:/var/run/docker.sock:ro \
        -v /proc/:/host/proc/:ro \
        -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro \
        -e POBP_API_KEY=<your_api_key> \
        -e POBP_POBP_URL=http://<адрес_бекенд_сервера_protoobp> \
        -e POBP_APM_POBP_URL=http://<адрес_бекенд_сервера_protoobp> \
        -e POBP_PROCESS_CONFIG_PROCESS_COLLECTION_ENABLED=false \
        registry.git.proto.group/protoobp/protoobp-artifacts/protoobp-agent:7.80.2
    

    Переменные окружения:

    POBP_API_KEYзначение, указанное в лицензионном сертификате, полученном ранее от вендора, в разделе Учетные данные -> Пароль
    POBP_POBP_URLстрока вида http://<адрес_бекенд_сервера_protoobp>, где <адрес_бекенд_сервера_protoobp> - адрес вашего ProtoOBP Backend сервера, доступного для агента
    POBP_APM_POBP_URLстрока вида http://<адрес_бекенд_сервера_protoobp>, где <адрес_бекенд_сервера_protoobp> – адрес вашего ProtoOBP Backend сервера, доступного для агента

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

  1. Подключитесь к Docker репозиторию ProtoOBP выполнив команду:

    sudo docker login --username <USERNAME> registry.git.proto.group
    

    Ваш <USERNAME> и пароль указаны в лицензионном сертификате, полученном ранее от вендора, в разделе “Учетные данные”. Пароль вводится интерактивно.

  2. Добавьте в ваш docker-compose.yaml файл следующее:

    protoobp-agent:
      container_name: protoobp-agent
      image: registry.git.proto.group/protoobp/protoobp-artifacts/protoobp-agent:7.80.2
      pid: host
      volumes:
        - /var/run/docker.sock:/var/run/docker.sock:ro
        - /proc/:/host/proc/:ro
        - /sys/fs/cgroup/:/host/sys/fs/cgroup:ro
        - /etc/os-release:/host/etc/os-release:ro
      environment:
        - POBP_API_KEY=<your_api_key>
        - POBP_POBP_URL=http://<адрес_бекенд_сервера_protoobp>     # используйте httpS только если на сервере ProtoOBP Backend подключен доверенный сертификат
        - POBP_PROCESS_CONFIG_PROCESS_COLLECTION_ENABLED=false
        - POBP_APM_POBP_URL=http://<адрес_бекенд_сервера_protoobp> # используйте httpS только если на сервере ProtoOBP Backend подключен доверенный сертификат
    

    Переменные окружения:

    POBP_API_KEYзначение, указанное в лицензионном сертификате, полученном ранее от вендора, в разделе Учетные данные -> Пароль
    POBP_POBP_URLстрока вида http://<адрес_бекенд_сервера_protoobp>, где <адрес_бекенд_сервера_protoobp> - адрес вашего ProtoOBP Backend сервера, доступного для агента
    POBP_APM_POBP_URLстрока вида http://<адрес_бекенд_сервера_protoobp>, где <адрес_бекенд_сервера_protoobp> – адрес вашего ProtoOBP Backend сервера, доступного для агента
  3. Запустите агента, выполнив:

    docker compose up -d protoobp-agent
    

Docker Swarm

В кластере Docker Swarm агент устанавливается как обычный Docker-агент: данные собираются через сокет Docker-демона на каждой ноде кластера. Дополнительных компонентов, аналогичных cluster-агенту в Kubernetes, не требуется.

  1. Подключитесь к Docker репозиторию ProtoOBP на каждой ноде кластера:

    sudo docker login --username <USERNAME> registry.git.proto.group
    

    Ваш <USERNAME> и пароль указаны в лицензионном сертификате, полученном ранее от вендора, в разделе “Учетные данные”. Пароль вводится интерактивно.

  2. Опишите агента в файле стека (например, protoobp-agent-stack.yaml):

    version: "3.8"
    
    services:
      protoobp-agent:
        image: registry.git.proto.group/protoobp/protoobp-artifacts/protoobp-agent:7.80.2
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock:ro
          - /proc/:/host/proc/:ro
          - /sys/fs/cgroup/:/host/sys/fs/cgroup:ro
          - /etc/os-release:/host/etc/os-release:ro
        environment:
          - POBP_API_KEY=<your_api_key>
          - POBP_POBP_URL=http://<адрес_бекенд_сервера_protoobp>     # используйте httpS только если на сервере ProtoOBP Backend подключен доверенный сертификат
          - POBP_APM_POBP_URL=http://<адрес_бекенд_сервера_protoobp> # используйте httpS только если на сервере ProtoOBP Backend подключен доверенный сертификат
          - POBP_APM_NON_LOCAL_TRAFFIC=true
          - POBP_PROCESS_CONFIG_PROCESS_COLLECTION_ENABLED=false
        ports:
          - target: 8126
            published: 8126
            protocol: tcp
            mode: host
          - target: 8125
            published: 8125
            protocol: udp
            mode: host
        deploy:
          mode: global
    
  3. Разверните стек с ноды-менеджера:

    docker stack deploy -c protoobp-agent-stack.yaml protoobp
    

Автообнаружение и теги Swarm

Агент автоматически добавляет к метрикам и логам контейнеров теги на основе стандартных лейблов Docker Swarm:

Лейбл контейнераТег в ProtoOBP
com.docker.swarm.service.nameswarm_service
com.docker.stack.namespaceswarm_namespace

Дополнительно на ноды, входящие в кластер Swarm, добавляется тег хоста docker_swarm_node_role со значением manager или worker.

Конфигурация проверок и дополнительные теги задаются лейблами автообнаружения с префиксом com.protoobp.ad. В файле стека такие лейблы необходимо указывать в секции labels сервиса, а не в секции deploy.labels: лейблы из deploy.labels назначаются объекту сервиса Swarm и в контейнер не попадают, поэтому агент их не увидит.

services:
  my-app:
    image: my-app:1.0.0
    labels:                                  # лейблы контейнера – агент их видит
      com.protoobp.ad.tags: '["team:billing"]'
    deploy:
      labels:                                # лейблы сервиса Swarm – агент их НЕ видит
        com.example.owner: "billing"

Отправка трейсов и метрик приложений

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

services:
  my-app:
    image: my-app:1.0.0
    environment:
      - POBP_AGENT_HOST={{.Node.Hostname}}
      - POBP_TRACE_AGENT_PORT=8126

Имена переменных зависят от используемого трейсера – проверьте их в разделе по инструментации вашего языка (для части трейсеров используется префикс DD_, например DD_AGENT_HOST).

Обращение к агенту по имени сервиса через оверлейную сеть не рекомендуется: балансировка Swarm может направить данные на агента другой ноды.

Ограничения в Docker Swarm

  • Объекты Docker Swarm (сервисы, стеки, задачи) не инвентаризируются в ресурсной модели платформы – в отличие от объектов Kubernetes. Принадлежность к сервису и стеку доступна только в виде тегов телеметрии swarm_service и swarm_namespace, по которым можно строить дашборды, отчёты и правила алертов.
  • Метрики уровня управления кластером Swarm (заданное и фактическое число реплик, состояние задач, история перепланирования) не собираются.
  • Трафик, проходящий через сеть ingress и внутреннюю балансировку Swarm, учитывается на уровне сетевых интерфейсов контейнера, без разбора логики балансировки.
  • Файл конфигурации агента и дополнительные конфигурации проверок передаются через переменные окружения либо через механизмы Docker configs и secrets.