Update: текущий gliderlabs/logspout
контейнер появляется в остановить протоколирования после первого подключения. После долгих поисков по результатам поиска (кажется, указывается на кучу тайм-аутов/повторных проблем). Вместо этого я решил перейти на опцион --log-driver
докера. Это означало касание каждой машины и перезапуск демона, но не было прерывания обслуживания, кроме боли в редактировании файла /etc/default/docker
на моих экземплярах ubuntu и перезапуске докеров.
Оригинальный ответ
Благодаря блестящей части исследования в this article by 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
Вы можете увидеть идентификатор контейнера и идентификатор роя в удобном для чтения формате