微信号:gh_a523545b1d3e

介绍:深圳睿云智合科技有限公司官方订阅号

容器内应用日志收集方案

2016-08-11 16:45 nathan


容器化应用日志收集挑战


应用日志的收集和分析,监控是时日常运维工作重要的部分.  妥善的处理应用日志收集往往是应用容器化重要的一个课题.

 

Docker处理日志的方法是通过docker engine捕捉每一个容器进程的STDOUT和STDERR,通过为contrainer指定log driver 来实现容器日志的收集,缺省joson-file log driver是将容器的STDOUT/STDERR 输出保存在主机的磁盘上,然后用户就能使用docker logs <container>来进行查询。

 

在部署一个传统的应用的时候, 应用程序记录日志的方式通常记录到文件里, 一般(但不一定)会记录到/var/log目录下.  应用容器化后,不同于以往将所有日志放在主机系统的统一位置,日志分散在很多不同容器的相互隔离的环境中.

因此,如何收集应用写在容器内日志记录,有以下挑战:


  资源消耗


如果在每个容器运行一个日志收集进程, 比如logstatsh/fluentd 这类的日志采集工具, 在主机容器密度高的时候,logstatsh/fluentd这类日志采集工具会消耗大量的系统资源.


  应用侵入


一些传统应用,特别是legacy 系统,写日志机制往往是没法配置和更改的,包括应用日志的格式,存放地址等等。日志采集机制,要尽量避免要求修改应用。


  日志来源识别


采用统一应用日志收集方案,日志分散在很多不同容器的相互隔离的环境中,需要解决日志的来源识别问题.


容器化应用日志收集方案


下面是我们设计的一个低资源资源消耗,无应用侵入,可以清楚识别日志来源的统一容器内应用日志收集方案, 该方案已经在睿云智合的客户有成功实施案例.


在该方案中, 会在每个host 部署一个wise2c-logger, wise2C会监听docker engine的events, 当有新容器创建和销毁时,会去判断是否有和日志相关的local volume 被创建或者销毁了,根据容器的lables,  wise2c-logger 可以动态配置内置的logstatsh工具的source,filter 和output 规则,然后reload这些配置,从而实现应用日志的收集和分发.


1

应用如何配置


应用容器化时候,需要在为应用容器挂载一个专门写日志的volume, 为了区别该volume 和容器的其它数据volume,  我们把该volume 定义在容器中,通过

volume_from 指令share 给应用容器,  下面是一个例子

demo应用的docker-compose file:

 

app-log 容器使用一个local volume, mount到/var/log目录(也可以是其它目录),在app-log 中定义了几个标签.

io.wise2c.logger_volume:true  -  说明这个容器中包含了日志目录
io.wsie2c.logger_opt:{type=kafka;endpoint=192.168.100.1:9092} - 指定日志的后端存储/分析工具地址, wise2c 内置支持logstatsh的各种output, 可以支持elasticsearch, kafka 等后端.


2

Wise2c-logger 如何工作





  1. wise2c-logger 侦听docker events 事件, 检查是否有一个日志容器创建挥或者被销毁

  2. 当有容器日志被创建后,(通过containr label 判断),  insepct 容器的volume 在主机的path.

  3. 重新配置wise2c-logger 内置的logstatsh 的配置文件,设置新的source, filter 和output 规则.

  4. Wise2c-logger 通过volume 判断相关联的app 容器,会在logstatsh的日志event 中添加日志来源信息.  


优化


(1) 收集容器的STDOUT/STDERR日志


目前我们还在对Wise2C-logger 作进一步的优化,主要方向有:

 特别是对default 使用json-file driver的容器,通过扫描容器主机的json-file 目录,实现容器STDIN/STDERR日志的收集.


(2) 更多的内置日志收集方案


目前内置缺省使用logstatsh 作日志的收集,和过滤和一些简单的转码逻辑。未来wise2C-logger  可以支持一些更轻量级的日志收集方案,比如fluentd.


(3) 支持用户可配置的日志logstatsh filter 方案


支持用户在部署应用是,指定应用日志的过滤和砖码配置,比如用户自定义的logstatsh filter 规则.

 



              Wise2C               

 

❶ 点击历史信息,查看更多精彩内容

❷ 复制网址在浏览器打开:www.Wise2C.com

❸ 长按二维码,关注睿云智合




如有疑问,请回复管理员,我们将为您细心解答~



 
Wise2C 更多文章 Kubernetes In Rancher Rancher平台部署Percona XtraDB Cluster数据库集群(Galera Cluster for MySQL) 关于持续交付你准备好了吗? 重磅来袭|首届中国金融行业容器技术应用峰会 倒计时6天|首届中国金融行业容器技术应用峰会
猜您喜欢 问题排查,性能调优,先学会阅读GC日志 详解 Android 是如何启动的 【大数据精英群】魅族 flyme莫涵宇:魅族大数据上云之路 Android开发的前景到底怎么样? 据说工资的多少决定你的御寒方式