Перейти к содержимому
Skip to main content

Интеграция с Docker

info

Перевод в процессе / Translation in progress. See русская версия.

Интеграция собирает данные Docker Engine: события контейнеров (create, start, die, restart), потоки логов stdout/stderr и метрики Docker API (число контейнеров, перезапуски, uptime, статусы health-check). Агент общается с демоном через локальный Unix-сокет в режиме read-only и не требует привилегий сверх доступа к сокету.

Предварительные требования

  • Агент Flaree установлен и зарегистрирован (см. Установка через Docker Compose).
  • Docker Engine версии ≥ 20.10 запущен на том же хосте, где работает агент.
  • Сокет /var/run/docker.sock доступен агенту в режиме read-only (для Docker Compose добавьте - /var/run/docker.sock:/var/run/docker.sock:ro в volumes).
  • Пользователь агента входит в группу docker или имеет права на чтение сокета.
  • Токен агента и endpoint ingestion-шлюза заданы через переменные окружения ${FLAREE_TOKEN} и ${FLAREE_ENDPOINT}.

Минимальная конфигурация

Минимально — подключить Docker-интеграцию к агенту через agent.yaml:

# agent.yaml
integrations:
docker:
enabled: true
socket: /var/run/docker.sock

Если агент запускается рядом с приложением через Docker Compose, смонтируйте сокет read-only:

# docker-compose.yml
services:
flaree-agent:
image: flaree/agent:latest
restart: unless-stopped
environment:
FLAREE_TOKEN: ${FLAREE_TOKEN}
FLAREE_ENDPOINT: ${FLAREE_ENDPOINT}
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./agent.yaml:/etc/flaree/agent.yaml:ro

Полная конфигурация

Расширенный пример с фильтрами, событиями и стримингом логов:

# agent.yaml
integrations:
docker:
enabled: true
socket: /var/run/docker.sock
api_version: "1.43"

# Какие контейнеры наблюдать
include_labels:
- flaree.monitor=true
exclude_containers:
- ^k8s_POD_
- ^buildx_buildkit_

# События Docker Engine
events:
enabled: true
types:
- create
- start
- die
- kill
- restart
- oom

# Стриминг stdout/stderr
log_stream:
enabled: true
since: 1m
follow: true
fields_redact:
- password
- token
sampling:
info: 0.1
warn: 1.0
error: 1.0

# Метрики
metrics:
enabled: true
interval: 15s
include:
- container_count
- container_restarts
- container_cpu_percent
- container_memory_bytes

# Секреты — только через env-переменные
tls:
ca_file: ${DOCKER_TLS_CA}
cert_file: ${DOCKER_TLS_CERT}
key_file: ${DOCKER_TLS_KEY}

Проверка работы

  1. Убедитесь, что сокет виден агенту: docker ps из контейнера агента должна возвращать список контейнеров.
  2. Проверьте, что события Docker поступают в агент, запустив тестовый контейнер и наблюдая лог агента.
  3. Откройте дашборд Flaree и убедитесь, что в списке источников появился Docker-хост с ненулевым числом контейнеров.
# Список контейнеров из-под агента
docker ps --format '{{.Names}} {{.Status}}'

# Проверка доступности сокета и стрима событий
curl --unix-socket /var/run/docker.sock \
--silent --max-time 3 \
http://localhost/events?filters=%7B%22type%22%3A%5B%22container%22%5D%7D | head -n 5

Troubleshooting

tip

Агент никогда не пишет в Docker-сокет. Монтируйте его исключительно с флагом :ro, иначе утечка токена агента даст возможность управлять контейнерами хоста.