Docker处理日志的方法&日志收集工具比较

测试logstash:docker run -it mylogstash:0.1.0 logstash -e 'input{stdin{}}output{stdout{codec=>rubydebug}}'

http://www.jianshu.com/p/8384f6cd0f22

https://www.cnblogs.com/richaaaard/p/6109595.htmlhtml

===========================web

Docker处理日志的方法是经过docker engine捕捉每个容器进程的STDOUT和STDERR,经过为contrainer制定不一样log driver 来实现容器日志的收集,

缺省json-file log driver是将容器的STDOUT/STDERR 输出保存在磁盘上,而后用户就能使用docker logs <container>来进行查询

https://www.cnrancher.com/collect-container-log/docker

============json

纵览当前容器日志收集的场景,无非就是两种方式:一是直接采集Docker标准输出,容器内的服务将日志信息写到标准输出,这样经过Docker的log driver能够发送到相应的收集程序中;二是延续传统的日志写入方式,容器内的服务将日志直接写到普通文件中,经过Docker volume将日志文件映射到Host上,日志采集程序就能够收集它。ruby

第一种方式足够简单,直接配置相关的Log Driver就能够,可是这种方式也有些劣势:性能

  1. 当主机的容器密度比较高的时候,对Docker Engine的压力比较大,毕竟容器标准输出都要经过Docker Engine来处理。
  2. 尽管原则上,咱们但愿遵循一容器部署一个服务的原则,可是有时候特殊状况不可避免容器内有多个业务服务,这时候很难作到全部服务都向标准输出写日志,这就须要用到前面所说的第二种场景模式。
  3. 虽然咱们能够先选择不少种Log Driver,可是有些Log Driver会破坏Docker原生的体验,好比docker logs没法直接看到容器日志。

https://www.cnrancher.com/rancher-logging/测试

===================ui

1)日志客户端(Logstash,Fluentd, Logtail)横评

https://yq.aliyun.com/articles/3228?spm=5176.team4.teamshow1.37.faH93Z阿里云

 2)Logstash 与它的五种替代方案(Filebeat、Fluentd、rsyslog、syslog-ng 以及 Logagent)的比较
http://www.cnblogs.com/richaaaard/p/6109595.htmlspa

3)Fluentd是很通用的日志采集程序,拥有优异的性能,相对Logstash来讲同等压力下,其内存消耗要少不少。Logging Helper是能够理解微Fluentd的助手,它能够识别容器内的日志卷文件,通知Fluentd进行采集 

经过Fluentd咱们能够对接不少第三方日志存储体系,可是Fluentd自身并不能完成日志采集的全部场景,因此很是须要Logging Helper的帮助。经过Logging Helper能够定制出一些额外采集规则,好比能够过滤某些容器日志等等

https://www.cnrancher.com/rancher-logging/

=============

https://yq.aliyun.com/articles/3228

ogstash支持全部主流日志类型,插件支持最丰富,能够灵活DIY,但性能较差,JVM容易致使内存使用量高。fluentd支持全部主流日志类型,插件支持较多,性能表现较好。logtail占用机器cpu、内存资源最少,结合阿里云日志服务的E2E体验良好,但目前对特定日志类型解析的支持较弱,后续须要把这一块补起来

相关文章
相关标签/搜索