Запуск агента в Docker
На этой странице:
Запуск в отдельном контейнере
Подключитесь к Docker репозиторию ProtoOBP выполнив команду:
sudo docker login --username <USERNAME> registry.git.proto.groupВаш
<USERNAME>и пароль указаны в лицензионном сертификате, полученном ранее от вендора, в разделе “Учетные данные”. Пароль вводится интерактивно.Запустите агента
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
Подключитесь к Docker репозиторию ProtoOBP выполнив команду:
sudo docker login --username <USERNAME> registry.git.proto.groupВаш
<USERNAME>и пароль указаны в лицензионном сертификате, полученном ранее от вендора, в разделе “Учетные данные”. Пароль вводится интерактивно.Добавьте в ваш
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 сервера, доступного для агентаЗапустите агента, выполнив:
docker compose up -d protoobp-agent
Docker Swarm
В кластере Docker Swarm агент устанавливается как обычный Docker-агент: данные собираются через сокет Docker-демона на каждой ноде кластера. Дополнительных компонентов, аналогичных cluster-агенту в Kubernetes, не требуется.
Подключитесь к Docker репозиторию ProtoOBP на каждой ноде кластера:
sudo docker login --username <USERNAME> registry.git.proto.groupВаш
<USERNAME>и пароль указаны в лицензионном сертификате, полученном ранее от вендора, в разделе “Учетные данные”. Пароль вводится интерактивно.Опишите агента в файле стека (например,
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Разверните стек с ноды-менеджера:
docker stack deploy -c protoobp-agent-stack.yaml protoobp
Обратите внимание
Агент должен запускаться в режиме deploy.mode: global – по одному экземпляру на каждой ноде кластера. При режиме replicated часть нод останется без агента: их контейнеры и системные метрики собираться не будут.
Порты 8126/tcp и 8125/udp публикуются в режиме mode: host. Публикация через сеть ingress приводит к тому, что трейсы и метрики приложения могут попасть на агента другой ноды – в этом случае теряется привязка данных к контейнеру и появляется лишний межнодовый трафик.
Автообнаружение и теги Swarm
Агент автоматически добавляет к метрикам и логам контейнеров теги на основе стандартных лейблов Docker Swarm:
| Лейбл контейнера | Тег в ProtoOBP |
|---|---|
com.docker.swarm.service.name | swarm_service |
com.docker.stack.namespace | swarm_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.