小编最近在研究使用flume监控tomcat的日志,以便及早发现问题,防止集群出现问题。初来乍到,确实踩了很多坑,一个简单的问题花了好几天的时间。在这做一个小小的总结。
最开始,我是在windows系统上做测试,在网上查了很多资料,网上的资料一般都是基于linux系统,所以很难借鉴。就是因此,导致了我再windows上测试了遇到许多问题,比如说tomcat日志没有catalina.out文件,tail命令windows系统不自带等等。最终是在linux上弄成功了,虽然我还是没有找到windows上的问题,但我还是建议大家就在linux系统上测试。下面阐述的一下我的整个过程。
1.了解tomcat日志的构成
大家可以看看tomcat的logs目录,我们可以发现tomcat是由一个大文件catalina.out和许多小文件构成。那个大文件其实就是所有的日志,一产生日志就追加,而小文件就是每一天的日志,每天产生的就追加到相应的文件里去。当然我采用的数据源是大文件catalina.out,具体原因待会再做讲解。
2.flume的安装及使用
1.认识flume
Flume是Cloudera提供的一个高可用、高可靠、分布式的海量日志采集、聚合和传输的系统.说白了,就是日志采集系统,而且是实时的。
我的认识就是:它是一个中间件,从别的数据源读取数据,再放到另外的地方去。
官方解释:Flume的数据流由事件(Event)贯穿始终。事件是Flume的基本数据单位,它携带日志数据(字节数组形式)并且携带有头信息,这些Event由Agent外部的Source生成,当Source捕获事件后会进行特定的格式化,然后Source会把事件推入(单个或多个)Channel中。可以把Channel看作是一个缓冲区,它将保存事件直到Sink处理完该事件。Sink负责持久化日志或者把事件推向另一个Source。
我们要特别注意三大部分:分别是:source,channel,sink
source:即数据源,主要有avro,