码迷,mamicode.com
首页 > 其他好文 > 详细

docker容器日志收集方案(方案一 filebeat+本地日志收集)

时间:2018-11-23 12:34:35      阅读:251      评论:0      收藏:0      [点我收藏+]

标签:tar   日志   att   elastic   本地   data   hystrix   策略   --   

filebeat不用多说就是扫描本地磁盘日志文件,读取文件内容然后远程传输。

docker容器日志默认记录方式为 json-file 就是将日志以json格式记录在磁盘上

格式如下:

{
 "log": "2018-11-16 01:24:30.372  INFO [demo1,786a42d3b893168f,786a42d3b893168f,false] 1 --- [hystrix-test1-2] demo1.demo1.TestRest                     : 我收到了其他服务调用\n",
 "stream": "stdout",
 "time": "2018-11-16T01:24:30.37454385Z"
}
技术分享图片

docker日志记录位置默认(centos7)为:

/var/lib/docker/containers
技术分享图片

这个目录下面就是以各个容器命名的文件夹,文件夹下面就是日志如下图:

技术分享图片???技术分享图片

 

那这个时候我们针对每个容器进行参数设置就可以了,设置参数如下示例(这里只给出docker swarm集群的一个语句,单机可以看docker官网):

sudo docker service update --log-driver json-file --log-opt max-size=1m --log-opt max-file=3 pbblyrmsof5t
技术分享图片

 --log-driver 为日志驱动类型

 --log-opt 为日志驱动参数,可以是多个具体可以查看docker官方文档(https://docs.docker-cn.com/engine/admin/logging/json-file/#usage

 --log-opt max-size=1m  设置日志文件每个大小
 --log-opt max-file=3 设置日志文件最多几个

这样我们就可以设置filebeat进行目录扫描然后传输到ES(elasticsearch)搜索因引擎中。

不过很遗憾有个潜在的问题,这个参数里面没有按时间进行滚动删除日志文件的策略,所以上面的数字要设计好,以免还没有吧日志传输出去就被删掉的情况。

下面是所有配置参数(也可官方查看):

技术分享图片?技术分享图片

 

这个方案有一个麻烦的问题,每个文件夹代表一个容器,如果要区分索引的话就需要设置,或解析日志,多个容器副本在多个宿主机上运行,需要拿到对应的服务名称等关键字段。

如果大锅烩或一起全部收集可能会造成日志混乱,搜索排除条件增多,性能不佳等(ES服务器配置牛逼除外)

docker容器日志收集方案(方案一 filebeat+本地日志收集)

标签:tar   日志   att   elastic   本地   data   hystrix   策略   --   

原文地址:https://www.cnblogs.com/zhyg/p/10006706.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!