一、什么是PlumeLog
-
PlumeLog 是一款无入侵的分布式日志系统
基于log4j、log4j2、logback搜集日志,设置链路ID,方便查询关联日志
基于elasticsearch作为查询引擎.
实现日志报错预警
PlumeLog有什么优点
效率高 免维护 搭建快
高吞吐,查询效率高 全程不占应用程序本地磁盘空间,免维护 无需修改老项目,引入直接
开源项目地址 : http://www.plumelog.com/#/
二 、如何引入该项目
该项目(PlumeLog)与已有项目的结合逻辑:
将已有项目的日志数据位置指定到redis/kafka中,把redis/kafka当做一个中间件,该项目(PlumeLog)主动到指定的redis/kafka中拉取日志数据,对数据进行逐条处理后同步到elasticsearch中,供前端页面搜索展示。总体来说是将日志从原先的存储位置从磁盘文件换到elasticsearch中,更方便定位问题发现问题。同时也有相应的弊端,毕竟elasticsearch是以内存作为存储的引擎,但庞大的数据量的日志文件最终还是需要落地到磁盘文件,所以如皋想尽可能的扩大搜索范围就需搭建elasticsearch集群环境,这个看所处企业的数据量及日志规划。一般的企业,搜索范围15天内,一台elasticsearch 其余文件落地到磁盘压缩足以应对了。因为改项目(PlumeLog)有完善的日志报警功能,通知到个人手机、邮箱、微信、钉钉都可对接。
1、根据自己系统的日志插件的使用选择指定依赖放到原本系统中
2、以log4j为例子,
1)引入相应的jar包,修改xml文件,在标签内添加标签 ,同时在标签中也指定输出对象如下:
<appender>
<RedisAppender name="plumelog_demo" appName="liyu_test" redisHost="127.0.0.1" redisPort="6379"
logQueueSize="1000" runModel="1">
<ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/>
</RedisAppender>
</appenders>
<root level="debug">
<appender-ref ref="plumelog_demo"/>
</root>
2、根据日志量的大小选择redis或kafa作为中间件
1)、该项目(PlumeLog)主动从redis中拉取,源码中是while(true)+睡眠的机制实现,不知这种实现机制与spring boot带的定时任务有何区别是否在效率上或是内存占用是会什么不同
2)、以从redis中拉取日志信息为例
使用redis的pipeline 去拉取一条条数据会提高很多,因为redis的性能瓶颈不是硬件问题,而是网络传输,使用pipeline能够集中的将请求批量处理,减少重复的网络传输所产生的耗时