设为首页 收藏本站
查看: 1352|回复: 0

[经验分享] Tomcat容器日志收集方案fluentd+elasticsearch+kilbana

[复制链接]

尚未签到

发表于 2018-12-1 08:05:34 | 显示全部楼层 |阅读模式
  在上一遍博文中我们介绍了Nginx容器访问日志收集的方案,我们使用EFK的架构来完成对容器日志内应用日志的收集,如果不知道什么是EFK架构,那么请访问以下链接获取相关的帮助
  Nginx容器日志收集方案fluentd+elasticsearch+kilbana
  

  如果你已经认真阅读了上面的链接,并撑握了其用法,那么再来看本博文(针对于初学者),下面假设我们已经搭建好了上一讲所需要的基础环境,我们接下来就直接开始步入正题。
  

  在步入正题之前我们首先需要确认我们需要完成的目标与效果,同样我们在启动Tomcat容器的时候使用fluentd日志驱动,将标准输出的日志发送到fluentd服务端,然后通过fluentd服务端处理日志发送至ES,最后再通过kilbana展示日志。就这么简单?NO NO NO!!!经测试默认情况下Tomcat容器(docker hub官方镜像)内catalina的日志会自动从stdout输出,并发送到fluentd服务端,但access日志不会,这是我们第一个需要解决的技术问题,另外Tomcat的日志默认情况下是每天滚动生成,每天日志名称都不一样,这是我们需要解决的第二个问题,假设我们解决了以上两个问题,最后还会存在一个问题,也就是我们输出的日志有两种类型,我们又如何通过fluentd服务端区分不同的日志,并发送到ES存储为不同的Index。我们明白了目标和技术难题下面我们就一步一步来解决。
  

  第一个问题解决方法(先解决第二个问题再解决第一个问题)
  我们可以手工指定将access日志输出到/dev/stdout,所以此方法刚下载下来的镜像无法直接使用,我们需要重新build该镜像创建一个/dev/stdou的软链接到Tomcat的access日志文件路径。
ln -s /dev/stdout  /usr/local/tomcat/logs/localhost_access_log.txt  第二个问题解决方法:
  默认docker hub官方的tomcat镜像的日志是每天滚动生成的,所以我们需要重新build该镜像,关闭日志的滚动生成
  关闭catalina日志的滚动生成
  编辑容器内配置文件:/usr/local/tomcat/conf/logging.properties
#下面这一行是已经存在的一行,用来定义文件的前缀
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
#下面两行是需要加入的内容,分别为定义文件的后缀和关闭日志轮替,最终日志名称为catalina.out
1catalina.org.apache.juli.AsyncFileHandler.suffix = out
1catalina.org.apache.juli.AsyncFileHandler.rotatable = False  关闭access日志的滚生成
  编辑配置文件:/usr/local/tomcat/conf/server.xml
#配置中rotatable="false"是我们加入的内容,而pattern里面的内容是我们需要修改为的内容,用来将访问日志转换为json格式用来关闭日志的轮替,最终日志名称为localhost_access_log.txt
          第三个问题解决方法:
  这里我们可以采用通过fluentd服务端对收集过来的日志再进行过滤,分类重新打标签,最后再发送到ES存为不同的Index,修改fluentd服务端配置文件如下:
#如果没有rewrite-tag-filter插件请安装gem install fluent-plugin-rewrite-tag-filter

  @type forward
  port 24224
  bind 0.0.0.0

#下面根据tomcat.test.docker标签进行过滤,因为里面有两种日志输出,分别为access和catalina

  @type copy
  
    @type rewrite_tag_filter
    #这里是匹配我们的catalina日志,根据log字段用正则匹配,这里需要根据自己字段进行修改正则
    rewriterule1 log ^\d.*$ catalina.${tag}
   
  
    @type rewrite_tag_filter
    #因为我们的访问日志转换为了json,所以开头一定为{,这里根据正则匹配,匹配到后重新打tag
    rewriterule1 log ^{.*$ access.${tag}
  

#对访问日志做json转换,**代表任何字符

  @type parser
  format json
  key_name log

#将访问日志输出到ES,索引名为tomcat.test.docker.access

  @type elasticsearch
  host 192.168.1.23
  port 9200
  logstash_format true
  logstash_prefix tomcat.test.docker.access
  logstash_dateformat %Y-%m-%d
  flush_interval 5s
  type_name docker_container_log
  include_tag_key true

#将catalina日志输出到ES,索引名为tomcat.test.docker.catalina

  @type elasticsearch
  host 192.168.1.23
  port 9200
  logstash_format true
  logstash_prefix tomcat.test.docker.catalina
  logstash_dateformat %Y-%m-%d
  flush_interval 5s
  type_name docker_container_log
  include_tag_key true
  完成以上配置以后我们只要启动我们的fluentd服务端服务和Tomcat容器,并访问下我们的Tomcat站点,这时候就可以在ES中查看到我们所需要的Index了
systemctl start td-agent
docker run -dit -p 80:8080 --log-driver=fluentd --log-opt fluentd-address=192.168.3.232:24224 --log-opt tag="tomcat.test.docker" tomcat  上面需要注意tag,需要和fluentd服务端配置文件里面接收的tag一样
  

  最后还有一个技术问题,一直没有解决,需要大家独立思考,如果有好的解决方案可以在博文中留言,如果后续我解决了,会及时更新此博文。问题就是catalina的错误日志多行合并处理,目前没有找到适合的方法
  .




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-641761-1-1.html 上篇帖子: 运维新手 公司中的第一次 搭建tomcat和部署jdk服务 下篇帖子: linux下jdk1.7和tomcat7和mysql5.5安装步骤
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表