基于Logspout+ELK实现docker日志自动化

Logspout是在用于收集Docker容器日志的工具。它连接到主机上的所有容器,然后将其路由到你想让让它去的地方。它也有一个可扩展的模块系统。现在它仅捕获STDOUT和STDERR。
ELK在文章容器内日志收集方案示例已有所介绍。

所以如果你的需求是

  1. 所有应用日志输出都是STDOUT和STDERR
  2. 容器启动不带-t

我们就可以使用Logspout + ELK的方式自动收集容器日志。
基于Logspout+ELK实现docker日志自动化

下面在容器服务中演示:

通过compose模板方式创建应用,我已经把镜像制作完成,放在阿里云HUB中,这样可以直接使用,省去了制作镜像的时间,所以使用起来实际上就是创建应用这一步了。

logbox:
  image: registry.aliyuncs.com/heizi/logbox
  ports:
    - '5000:5000/udp'
    - '9200:9200'
  restart: always
  hostname: logbox
kibanabox:
  image: registry.aliyuncs.com/heizi/kibanabox
  command: ["http://logbox:9200"]
  links:
    - logbox
  ports:
    - '5601:5601'
  hostname: kibanabox
  restart: always
logspout:
  image: registry.aliyuncs.com/heizi/logspout
  hostname: logspout
  labels:
    aliyun.global: true
  links:
    - logbox
  restart: always
  ports:
    - '8100:8000'
  volumes:
    - /var/run/docker.sock:/tmp/docker.sock
  command: ["syslog://logbox:5000"]

应用启动后,就可以在Kibana console看到日志
基于Logspout+ELK实现docker日志自动化