Могу ли я использовать logspout для глобального входа в системный журнал на Docker Swarm?
У меня есть один хост докера под управлением Docker 1.12, работающий хорошо, и я могу использовать gliderlabs / logspout для централизации журналов докера в papertrail.
Можно ли развернуть эту конфигурацию на всех узлах Docker Swarm?
Я пытался:
docker service create --name logspout --mode=global \
gliderlabs/logspout \
syslog+tls://<yourhost>.papertrailapp.com:<yourport>
но служба умирает и возрождается постоянно. На докере (инстанс без роя) вам нужно сопоставить сокет докера unix:///var/run/docker.sock
а-ля документальная документация. Возможно ли это в службе роя? Как вы монтируете докерную розетку в сервис?
1 ответ
Обновление: текущий gliderlabs/logspout
Контейнер перестает регистрироваться после первого подключения. После долгих поисков результатов (кажется, указывает на кучу проблем с таймаутом / переподключением). Я решил перейти на докер --log-driver
вариант вместо Это означало прикосновение к каждой машине и перезапуск демона, но не было никакого прерывания обслуживания, кроме боли редактирования /etc/default/docker
файл на моих экземплярах Ubuntu и перезапуск докера.
Оригинальный ответ
Благодаря блестящему исследованию Sematext в этой статье я обнаружил команду магического связывания:
docker service create --name logspout \
--mode=global -e SYSLOG_TAG=swarm --publish <yourport>:<yourport> \
--mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
gliderlabs/logspout syslog+tls://<yourhost>.papertrailapp.com:<yourport>
Магия в --mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock
команда. Также выгодно использовать SYSLOG_TAG
чтобы идентифицировать системные журналы как исходящие из вашего роя, потому что по умолчанию имя хоста является идентификатором контейнера (который может меняться и довольно непрозрачен). Похоже, что вам также необходимо опубликовать / выставить порт регистрации ошибок регистрации случайным образом.
Если я добавлю узел в рой, эта служба будет автоматически развернута и настроена на новом хосте! Рой магии!
Sep 29 17:07:01 8d551da912a4 swarm: File "/opt/conda/envs/clientapi/lib/python3.5/site-packages/werkzeug/exceptions.py", line 646, in __call__
Sep 29 17:07:01 8d551da912a4 swarm: raise self.mapping[code](*args, **kwargs)
Sep 29 17:07:01 8d551da912a4 swarm: werkzeug.exceptions.InternalServerError: 500: Internal Server Error
Sep 29 17:11:05 cd73e5278032 swarm: ....................
Sep 29 17:11:05 cd73e5278032 swarm: complete: opportunities = added 0 updated 0 out of 2023
Вы можете увидеть идентификатор контейнера и идентификатор роя в удобном для чтения формате