По мере разрастания облачной инфраструктуры увеличивается необходимость отслеживания происходящего в каждой ее части. Одним из источников подобной информации являются логи – они предоставляют необходимые данные о работе приложений и дают основу для анализа различных бизнес-метрик. Однако сбор логов проекта может быть крайне трудоемким занятием при большом количестве источников – гораздо удобнее собирать логи различных сервисов в одном месте.
В этом и помогает Vector – платформа для агрегации и организации логов. В данной статье мы расскажем, как установить эту платформу и организовать с Vector сбор логов для дальнейшей обработки.
Схема работы
В рамках данной статьи мы рассмотрим, как можно собирать с Вектор логи с двух облачных серверов с приложением (в данном случае на готовом решении Docker).
Конфигурация серверов:
- Сервер приложения – готовое решение Docker, IP в приватной сети –
10.16.0.1и10.16.0.2 - Сервер агрегации – Ubuntu Server, IP в приватной сети –
10.16.0.3
Схема работы будет следующая:
- Логи собираются с помощью
vectorв режиме агента на конечных серверах - Собранные логи отправляются по приватной сети на отдельный сервер с
vectorв режиме агрегатора для дальнейшей обработки - Обработанные логи сохраняются в облачное объектное хранилище
Перенос обработки и сохранения логов на отдельный сервер позволяет минимизировать дополнительную нагрузку на конечные серверы.
Установка
Vector может быть установлен как в виде бинарного исполняемого файла, так и в виде контейнера. Рассмотрим оба способа: на серверах приложения установим его в виде контейнера, на сервере-агрегаторе – с помощью менеджера пакетов дистрибутива.
Серверы приложения
Создадим директорию под конфигурационные файлы Vector:
mkdir -p /opt/vector/conf
cd /opt/vectorДобавим файл compose.yaml:
services:
vector:
image: timberio/vector:0.48.X-distroless-static
volumes:
- ./conf:/etc/vector
- /var/run/docker.sock:/var/run/docker.sock
command: ["-c", "/etc/vector/vector.yaml"]
ports: ["8686:8686"]
container_name: vectorВ директории /opt/vector/conf создадим файл vector.yaml, в нем укажем конфигурацию Vector. В рамках данной статьи просто укажем сбор всех логов контейнеров и их отправку на сервер агрегации по приватной сети:
sources:
containers:
type: docker_logs
sinks:
aggregator:
type: vector
inputs:
- containers
address: 10.16.0.3:6000
version: "2"Загрузим образ vector командой:
docker compose pullПосле чего запустим контейнер командой:
docker compose up -dСервер агрегации
На сервере агрегации рассмотрим установку из репозитория с помощью менеджера пакетов, в данном случае apt.
Для этой задачи загрузим скрипт добавления репозитория:
curl -L -o repo.sh https://setup.vector.devЗатем проверим корректность загруженного файла и добавим репозиторий:
less repo.sh
bash repo.shПосле успешного добавления репозитория удалим скрипт и установим vector:
rm repo.sh
apt install vectorКонфигурация агрегатора
На сервере-агрегаторе нам потребуется настроить сбор логов с других серверов в S3-совместимое хранилище. Для этого в файле /etc/vector/vector.yaml укажем следующие настройки:
sources:
agents:
type: vector
version: "2"
address: "10.16.0.3:6000"
sinks:
s3_archive:
type: "aws_s3"
bucket: "bucket-name"
auth:
access_key_id: "access_key_бакета"
secret_access_key: "secret_key_бакета"
compression: "gzip"
content_type: "application/gzip"
endpoint: "https://s3.ru1.storage.beget.cloud"
region: "ru1"
key_prefix: "date=%Y-%m-%d--"
framing:
method: "newline_delimited"
encoding:
codec: "json"
batch:
max_bytes: 10000000В данной конфигурации vector будет прослушивать порт 6000 на предмет входящих логов из других инстансов vector и архивировать их в S3-хранилище в сжатом виде.
Для запуска агрегатора выполним команды:
systemctl enable vector
systemctl start vectorПроверка работы
На данный момент система сбора логов запущена, однако ей нечего обрабатывать – в нашем случае на серверах с Docker запущены только контейнеры vector. Для проверки работы агрегатора запустим тестовые контейнеры hello-world на серверах с Docker.
docker run hello-worldВывод контейнера будет передан агрегатору, а тот, в свою очередь, сохранит лог в объектное хранилище в сжатом виде:

В файле лога будут содержаться собранные Vector логи с обоих серверов:
{"container_created_at":"2025-08-20T06:12:37.535496666Z","container_id":"1e41367c029b04d00e5365a628d4b6a0bf20b55f57b0c9a23eff983505ca4fdb","container_name":"inspiring_brahmagupta","host":"e407c846511e","image":"hello-world","message":"","source_type":"docker_logs","stream":"stdout","timestamp":"2025-08-20T06:12:38.954183279Z"}
{"container_created_at":"2025-08-20T06:12:37.535496666Z","container_id":"1e41367c029b04d00e5365a628d4b6a0bf20b55f57b0c9a23eff983505ca4fdb","container_name":"inspiring_brahmagupta","host":"e407c846511e","image":"hello-world","message":"Hello from Docker!","source_type":"docker_logs","stream":"stdout","timestamp":"2025-08-20T06:12:38.954307381Z"}
{"container_created_at":"2025-08-20T06:12:37.535496666Z","container_id":"1e41367c029b04d00e5365a628d4b6a0bf20b55f57b0c9a23eff983505ca4fdb","container_name":"inspiring_brahmagupta","host":"e407c846511e","image":"hello-world","message":"This message shows that your installation appears to be working correctly.","source_type":"docker_logs","stream":"stdout","timestamp":"2025-08-20T06:12:38.954328888Z"}
…
{"container_created_at":"2025-08-20T06:12:38.558644762Z","container_id":"fb50713b279b94d06e86079f2e7db0f91fd42773ff9e9da7f5f32b8d30aec632","container_name":"zen_dijkstra","host":"81fcb2d44535","image":"hello-world","message":" https://docs.docker.com/get-started/","source_type":"docker_logs","stream":"stdout","timestamp":"2025-08-20T06:12:40.113742206Z"}
{"container_created_at":"2025-08-20T06:12:38.558644762Z","container_id":"fb50713b279b94d06e86079f2e7db0f91fd42773ff9e9da7f5f32b8d30aec632","container_name":"zen_dijkstra","host":"81fcb2d44535","image":"hello-world","message":"","source_type":"docker_logs","stream":"stdout","timestamp":"2025-08-20T06:12:40.113769278Z"}Заключение
В данной статье мы рассмотрели процесс сбора и сохранения логов в объектное хранилище, однако функционал Vector позволяет гораздо больше – например, с помощью Vector можно собирать логи в Kubernetes и т. д. Все поддерживаемые источники, преобразования и методы хранения вы можете узнать в документации решения.
Если возникнут вопросы, напишите нам, пожалуйста, тикет из панели управления аккаунта (раздел “Помощь и поддержка”), а если вы захотите обсудить эту статью, альтернативы Vector или наши продукты с коллегами по цеху и сотрудниками платформы для IT-инфраструктуры Beget – ждем вас в нашем сообществе в Telegram.