Plumelog-Java分布式日志组件

Plumelog-Java分布式日志组件

2022-09-02 0 1,235
资源编号 36637 最近更新 2022-09-02
¥ 0人民币 升级VIP
立即下载 注意事项
下载不了?请联系网站客服提交链接错误!
增值服务: 安装指导 环境配置 二次开发 模板修改 源码安装

本期推荐的是 Plumelog一个简单易用的 Java分布式日志组件。

系统介绍

  1. 无代码入侵的分布式日志系统,基于log4j、log4j2、logback搜集日志,设置链路ID,方便查询关联日志
  2. 基于elasticsearch作为查询引擎
  3. 高吞吐,查询效率高
  4. 全程不占应用程序本地磁盘空间,免维护;对于项目透明,不影响项目本身运行
  5. 无需修改老项目,引入直接使用,支持dubbo,支持springcloud

Plumelog-Java分布式日志组件

系统架构

  • plumelog-core 核心组件包含日志搜集端,负责搜集日志并推送到kafka,redis等队列
  • plumelog-server 负责把队列中的日志日志异步写入到elasticsearch
  • plumelog-demo 基于springboot的使用案例
  • 下面是全功能图,红色部分是4.0内容,目前开发中

Plumelog-Java分布式日志组件

使用

一、服务端安装

第一步:安装 redis 或者 kafka(一般公司redis足够)

第二步:安装 elasticsearch

第三步:下载安装包,plumelog-server 下载地址:https://gitee.com/plumeorg/plumelog/releases

备注:3.1版本以后UI和server合并,plumelog-ui这个项目可以不用部署

第四步:配置plumelog-server,并启动

第五步:后台查询

Plumelog-Java分布式日志组件

更多查询内容:
https://gitee.com/plumeorg/plumelog/blob/master/HELP.md

服务端配置文件
plumelog-server/application.properties 详解

        spring.application.name=plumelog_server        server.port=8891        spring.thymeleaf.mode=LEGACYHTML5        spring.mvc.view.prefix=classpath:/templates/        spring.mvc.view.suffix=.html        spring.mvc.static-path-pattern=/plumelog/**        #值为6种 redis,kafka,rest,restServer,redisCluster,redisSentinel        #redis 表示用redis当队列        #redisCluster 表示用redisCluster当队列        #redisSentinel 表示用redisSentinel当队列        #kafka 表示用kafka当队列        #rest 表示从rest接口取日志        #restServer 表示作为rest接口服务器启动        #ui 表示单独作为ui启动        plumelog.model=redis                #如果使用kafka,启用下面配置        #plumelog.kafka.kafkaHosts=172.16.247.143:9092,172.16.247.60:9092,172.16.247.64:9092        #plumelog.kafka.kafkaGroupName=logConsumer        #解压缩模式,开启后不消费非压缩的队列,如果开启压缩,客户端也要配置开启压缩否则不消费        #plumelog.redis.compressor=true        #队列redis,3.3版本把队列redis独立出来,方便不用的应用用不通的队列,如果是集群模式用逗号隔开        plumelog.queue.redis.redisHost=127.0.0.1:6379        #如果使用redis有密码,启用下面配置        #plumelog.queue.redis.redisPassWord=plumelog        #plumelog.queue.redis.redisDb=0        #哨兵模式需要填写masterName        #plumelog.queue.redis.sentinel.masterName=plumelog                #redis单机模式和kafka模式必须配置管理redis地址,redis集群模式不需要配置管理redis地址配置了也不起作用        plumelog.redis.redisHost=127.0.0.1:6379        #如果使用redis有密码,启用下面配置        #plumelog.redis.redisPassWord=plumelog                #如果使用rest,启用下面配置        #plumelog.rest.restUrl=http://127.0.0.1:8891/getlog        #plumelog.rest.restUserName=plumelog        #plumelog.rest.restPassWord=123456                #elasticsearch相关配置,host多个用逗号隔开        plumelog.es.esHosts=127.0.0.1:9200        #ES7.*已经去除了索引type字段,所以如果是es7不用配置这个,7.*以下不配置这个会报错        #plumelog.es.indexType=plumelog        plumelog.es.shards=5        plumelog.es.replicas=1        plumelog.es.refresh.interval=30s        #日志索引建立方式day表示按天、hour表示按照小时,如果每天日志量超过了500G建议启动小时模式        plumelog.es.indexType.model=day        #指定索引建立的时区        plumelog.es.indexType.zoneId=GMT+8        #ES设置密码,启用下面配置        #plumelog.es.userName=elastic        #plumelog.es.passWord=123456        #是否信任自签证书        #plumelog.es.trustSelfSigned=true        #是否hostname验证        #plumelog.es.hostnameVerification=false                #单次拉取日志条数        plumelog.maxSendSize=100        #拉取时间间隔,kafka不生效        plumelog.interval=200                #plumelog-ui的地址 如果不配置,报警信息里不可以点连接        plumelog.ui.url=https://127.0.0.1:8891                #管理密码,手动删除日志的时候需要输入的密码        admin.password=123456        #日志保留天数,配置0或者不配置默认永久保留        admin.log.keepDays=30               #链路保留天数,配置0或者不配置默认永久保留        admin.log.trace.keepDays=30                #登录用户名密码,为空没有登录界面        login.username=admin        login.password=admin

二、客户端使用

客户端在项目使用,非maven项目下载依赖包(
https://gitee.com/frankchenlong/plumelog/releases )放在自己的lib下面直接使用,去除重复的包即可使用,然后配置log4j就可以搜集日志了。

推荐使用logback,特别是springboot,springcloud项目;注意:3.2版本logback有bug,请使用3.2.1修复版本或者以上版本。

引入Maven依赖

   <dependency>       <groupId>com.plumelog</groupId>       <artifactId>plumelog-log4j</artifactId>       <version>3.4.2</version>   </dependency>

配置log4j配置文件,增加下面这个Appender,示例如下:

    log4j.rootLogger = INFO,stdout,L    log4j.appender.stdout = org.apache.log4j.ConsoleAppender    log4j.appender.stdout.Target = System.out    log4j.appender.stdout.layout = org.apache.log4j.PatternLayout    log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} [%c.%t]%n%m%n    #kafka做为中间件    log4j.appender.L=com.plumelog.log4j.appender.KafkaAppender    #appName系统的名称(自己定义就好)    log4j.appender.L.appName=plumelog    log4j.appender.L.env=${spring.profiles.active}    log4j.appender.L.kafkaHosts=172.16.247.143:9092,172.16.247.60:9092,172.16.247.64:9092    #redis做为中间件    log4j.appender.L=com.plumelog.log4j.appender.RedisAppender    log4j.appender.L.appName=plumelog    log4j.appender.L.env=${spring.profiles.active}    log4j.appender.L.redisHost=172.16.249.72:6379    #redis没有密码这一项为空或者不需要    #log4j.appender.L.redisAuth=123456

客户端配置详解

字段值

用途

appName

自定义应用名称

redisHost

redis地址

redisPort

redis端口号 3.4版本后可以不用配置可以配置在host上用冒号结尾

redisAuth

redis密码

redisDb

redis db

model

(3.4)redis三种模式(standalone,cluster,sentinel) 不配置默认standalone

runModel

1表示最高性能模式,2表示低性能模式 但是2可以获取更多信息 不配置默认为1

maxCount

(3.1)批量提交日志数量,默认100

logQueueSize

(3.1.2)缓冲队列数量大小,默认10000,太小可能丢日志,太大容易内存溢出,根据实际情况,如果项目内存足够可以设置到100000+

compressor

(3.4)是否开启日志压缩,默认false

env

(3.4.2)环境 默认是default

traceID生成配置

非springboot,cloud项目要想产生traceID,需要在拦截器里增加,如下:(也可以加载过滤器里(
com.plumelog.core.TraceIdFilter),如果是定时任务,监听类的放在定时任务的最前端)

        @Component        public class Interceptor extends HandlerInterceptorAdapter{            @Override            public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {                String uuid = UUID.randomUUID().toString().replaceAll("-", "");                String traceid= uuid.substring(uuid.length() - 7);                TraceId.logTraceID.set(traceid);//设置TraceID值,不埋此点链路ID就没有                return true;            }        }                //注解配置filter示例        @Bean        public FilterRegistrationBean filterRegistrationBean1() {            FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();            filterRegistrationBean.setFilter(initCustomFilter());            filterRegistrationBean.addUrlPatterns("/*");            filterRegistrationBean.setOrder(Integer.MIN_VALUE);            return filterRegistrationBean;        }            @Bean        public Filter initCustomFilter() {            return new TraceIdFilter();        }

spring boot,spring cloud 项目引入sleuth,项目之间采用feign调用的话,可以自己实现跨服务传递traceId

        <dependency>            <groupId>org.springframework.cloud</groupId>            <artifactId>spring-cloud-starter-sleuth</artifactId>            <version>2.2.7.RELEASE</version>        </dependency>

TraceId跨线程传递

如果不使用线程池,不用特殊处理,如果使用线程池,有两种使用方式,(plumelog-demo也有)

修饰线程池

        private static ExecutorService executorService = TtlExecutors.getTtlExecutorService(                    new ThreadPoolExecutor(8, 8,0L, TimeUnit.MILLISECONDS,new LinkedBlockingQueue<Runnable>()));          //省去每次Runnable和Callable传入线程池时的修饰,这个逻辑可以在线程池中完成                executorService.execute(() -> {                      logger.info("子线程日志展示");          });

修饰Runnable和Callable

        private static ThreadPoolExecutor threadPoolExecutor= ThreadPoolUtil.getPool(4, 8, 5000);                threadPoolExecutor.execute(TtlRunnable.get(() -> {                   TraceId.logTraceID.get();                   logger.info("tankSay =》我是子线程的日志!{}", TraceId.logTraceID.get());         }));

Plumelog-Java分布式日志组件

图片示例

资源下载此资源为免费资源立即下载

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

七爪网 免费源码 Plumelog-Java分布式日志组件 https://www.7claw.com/36637.html

分享免费的开源源码

常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、七爪会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、七爪无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在七爪上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于七爪介入快速处理。
查看详情
  • 1、七爪作为第三方中介平台,依据交易合同(商品描述、交易前商定的内容)来保障交易的安全及买卖双方的权益; 2、非平台线上交易的项目,出现任何后果均与互站无关;无论卖家以何理由要求线下交易的,请联系管理举报。
查看详情

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务