我可以使用logspout在Docker群集上进行全局系统日志logging吗?
我有一个运行Docker 1.12的单一Docker主机,能够使用gliderlabs / logspout将docker日志集中到papertrail。
是否有可能将此configuration部署到Docker Swarm上的所有节点?
我努力了:
docker service create --name logspout --mode=global \ gliderlabs/logspout \ syslog+tls://<yourhost>.papertrailapp.com:<yourport>
但是服务不断重新开始。 在docker(非swarm实例)上,您需要将unix:///var/run/docker.sock
套接字unix:///var/run/docker.sock
映射到papertrail文档中 。 这是可能的群体服务? 如何将docker socket安装到服务中?
更新:当前的gliderlabs/logspout
容器似乎在第一次连接之后停止logging。 经过大量的search结果(似乎指向一堆超时/重新连接问题)。 我决定改用docker的--log-driver
选项。 这意味着要触及每台机器并重新启动守护进程,但除了编辑我的Ubuntu实例上的/etc/default/docker
文件并重新启动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
来标识来自群集的系统日志也是有利的,因为默认情况下,主机名是容器ID(其可以改变并且相当不透明)。 看来你还需要随机发布/公开日志logging的端口。
如果我添加一个节点到群体中,这个服务会自动部署并configuration到新的主机上! 群魔!
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和群体标识符
- 在谷歌容器registry中使用Amazon ECS
- 如何在docker php上安装pgsql驱动程序:7.1-apache?
- 错误1045(28000):拒绝访问用户'root'@'localhost'(使用密码:Y
- khwunchai / hortonworksdocker的形象
- 如何在Docker容器中启动tomcat8服务器,以便将进程保持在docker容器的范围内
- WordPress Docker容器的默认configuration
- Docker的撰写 – 如何在一个MySQL容器中引用许多模式
- 使用docker-compose创build容器将删除另一个已经运行的容器
- 错误发生为:w0无法读取带有错误的json文件:无法在使用docker-compose启动couchbase图像时解码JSON对象