最近想将服务的运行日志收集起来,首先了解到flume技术栈

采用flume方案定了之后有两种方式实现

1: 在应用中,log4j2直接发送日志信息到flume ,

2: 通过监控log4j2 产生的日志文件,将日志文件新产生的日志发送到flume

下面两种方式都会介绍,首先透漏下我们选择的解决方案,我们选择了第二种监控新产生的日志文件

为什么这么选择:

第一种方式需要修改服务中log4j2的配置,添加flume Appender , 在应用中,当日志输出时,就会输出到flume,很显然,这种方式耦合了应用,并且对应用的性能有影响,到底有多大影响,这个还没有测试,其次,这种方式应用中依赖了flume的依赖,假如将来部署服务的时候不想收集日志了,会不会对项目的启动有影响,这一点也还没有验证,后续可能会验证

第二种方式完全是监控日志文件,当产生新的日志文件或者日志文件中生成新的日志时,就会触发日志收集。完全脱离应用存在。

我们介绍第二种方式的探索过程:
需求:当日志目录下产生新的文件或动态产生日志时,收集日志,发送到flume

接下来了解flume能不能解决我们的需求:

flume 入门相关概念:

source:

channel:

sink ;

source 中有很多分类,我们着重分析了几个的使用场景和特点

execSource :

spooldirSource :

taildirSource:

syslogSource ;

httpSource ;

经过分析每种Source的特点,很容易发现tailSource最接近我们的需求:

但是也有几个问题:

1:log4j2产生日志的逻辑是当日志文件内容达到设置的size上限就会重命名该日志文件(例如:sysware-2018-12-20-1.log),然后新建一个sysware.log文件,供日志输出,重命名日志之后,和原来的sysware.log日志文件全路径不一致,taildirSource会当做一个新的日志文件,再次重复读取,造成重复读取的问题

2:dirSource监控的dir 可以指定文件名称或者通过正则,但是如果已经有子文件夹的日志读取不到

上面的问题只能通过源码方式解决了

XXXXXX

所有的准备工作都做好了,我们现在开始做一个demo

XXXX

log4j2 输入日志到flume的更多相关文章

  1. 海量日志采集Flume(HA)

    海量日志采集Flume(HA) 1.介绍: Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集.聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据 ...

  2. VisualSVN设置提交时必须输入日志信息

    VisualSVN设置提交时必须输入日志信息 1.svn提交时强制输入提交信息 为了阻止SVN提交空日志信息和垃圾文件可以在SVN服务器端强制必须填写日志信息,这时需用到pre-commit钩子脚本. ...

  3. log4j2设置日志文件读写权限(filePermissions)

    spring-boot使用log4j2作为日志插件的时候需要设置日志文件的读写权限,可以File 上增加filePermissions,如: <File name="File" ...

  4. 消费滚动滴log日志文件(flume监听,kafka消费,zookeeper协同)

    第一步:数据源 手写程序实现自动生成如下格式的日志文件: 15837312345,13737312345,2017-01-09 08:09:10,0360 打包放到服务器,使用如下命令执行,模拟持续不 ...

  5. log4j2 扩展日志级别,支持将系统日志与业务处理日志拆分

    项目中,有时候需要对系统中已处理的一些业务数据日志进行提取分析,通常log4j默认提供的日志级别可能不够用,这时候我们就需要对日志级别进行扩展,以满足我们的需求. 本文就简单介绍一下log4j2的日志 ...

  6. log4j输出日志到flume

    现需要通过log4j将日志输出到flume,通过flume将日志写到文件或hdfs中 配置flume-config文件 将日志下沉至文件 a1.sources = r1 a1.sinks = k1 a ...

  7. log4j2异步日志解读(二)AsyncLogger

    前文已经讲了log4j2的AsyncAppender的实现[log4j2异步日志解读(一)AsyncAppender],今天我们看看AsyncLogger的实现. 看了这个图,应该很清楚AsyncLo ...

  8. SpringBoot整合log4j2进行日志配置及防坑指南

    写在前面 最近项目经理要求将原先项目中的日志配置logBack,修改为log4j2,据说是log4j2性能更优于logback,具体快多少,网上有说快10多倍,看来还是很快的,于是新的一波挑战又开始了 ...

  9. 普通Java项目中使用Sl4j+Log4j2打印日志

        因工作需要,采用JavaFx开发了一个windows窗口程序.在开发过程中,由于没有引入日志框架,只能自己手动在控制台打印些信息,给调试带来了很多麻烦:因此决定引入日志框架.由于之前接触的项目 ...

随机推荐

  1. mongo启动

    mongo启动 删除data目录里的mongo.lock bin 目录里执行 net  start MongoDB

  2. 怎么解决teamviewer检测商业用途无法使用的问题

    https://jingyan.baidu.com/article/d5c4b52be51162da560dc517.html

  3. C++、Java、JavaScript中的正则表达式

    C++(VS2013编译器):http://msdn.microsoft.com/zh-cn/library/bb982727.aspx#grammarsummary Java:            ...

  4. CSS清除浮动大全的8种方法

    清除浮动是每一个 web前台设计师必须掌握的机能.css清除浮动大全,共8种方法. 浮动会使当前标签产生向上浮的效果,同时会影响到前后标签.父级标签的位置及 width height 属性.而且同样的 ...

  5. python 数据分析----matplotlib

    Matplotlib是一个强大的Python绘图和数据可视化的工具包. 安装方法:pip install matplotlib 引用方法:import matplotlib.pyplot as plt ...

  6. 一键安装lnmp-php(5)

    php(){cd $pathtar zxvf yasm-1.3.0.tar.gz cd yasm-1.3.0.tar.gz ./configuremakemake installcd $pathtar ...

  7. 用hexo在github上搭建自己的静态博客

    在自己的小站上发过一次,这边就不再多发一次了,直接给链接好了: http://nerohwang.github.io/2014/02/11/simple-test/

  8. The Startup Manager FAQ

    Main Features: 1.  Login Items: Manageable list of applications that are launched automatically ever ...

  9. 梅森素数 判定总结 - Lucas-Lehmer算法 & Miller-rabin算法

    梅森素数 定义: if m是一个正整数 and 2^m-1是一个素数 then m是素数 if m是一个正整数 and m是一个素数 then M(m)=2^m-1被称为第m个梅森数 if p是一个素 ...

  10. tensorflow 模型保存

    1.首先 saver = tf.train.Saver(max_to_keep=1)新建一个saver,max_to_keep是说只保留最后一轮的训练结果 2.使用save方法保存模型 saver.s ...