Могу ли я использовать 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

Вы можете увидеть идентификатор контейнера и идентификатор роя в удобном для чтения формате

Другие вопросы по тегам