1

我有一个运行 Docker 1.12 的 docker 主机运行良好,并且能够使用gliderlabs/logspout将 docker 日志集中到 papertrail。

是否可以将此配置部署到Docker Swarm上的所有节点?

我努力了:

    docker service create --name logspout --mode=global \
        gliderlabs/logspout \
        syslog+tls://<yourhost>.papertrailapp.com:<yourport>

但是服务会死掉并不断重生。在 docker(非 swarm 实例)上,您需要unix:///var/run/docker.sock按照papertrail docs映射 docker 套接字。这在群体服务中可能吗?您如何将 docker 套接字安装到服务中?

4

1 回答 1

0

更新:当前gliderlabs/logspout容器似乎在第一次连接后停止记录。经过大量搜索结果(似乎指向一堆超时/重新连接问题)。我决定--log-driver改用 docker 的选项。这意味着接触每台机器并重新启动守护程序,但服务没有中断,除了/etc/default/docker在我的 ubuntu 实例上编辑文件和重新启动 docker 的痛苦之外。

原始答案

感谢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将 syslog 标识为来自您的 swarm也很有用,因为默认情况下,主机名是容器 ID(可以更改并且相当不透明)。看来您还需要发布/公开日志记录端口随机失败。

如果我向 swarm 添加一个节点,该服务会自动部署并配置到新主机!群魔!

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

您可以以易于阅读的格式查看容器 ID 和集群标识符

于 2016-09-29T21:50:51.913 回答