网站建设案例策划,蚌埠网站制作,青岛哪家做网站好,免费微信点餐小程序官方文档#xff1a;http://www.plumelog.com/zh-cn/docs/FASTSTART.html 简介
无代码入侵的分布式日志系统#xff0c;基于log4j、log4j2、logback搜集日志#xff0c;设置链路ID#xff0c;方便查询关联日志基于elasticsearch作为查询引擎高吞吐#xff0c;查询效率高全… 官方文档http://www.plumelog.com/zh-cn/docs/FASTSTART.html 简介
无代码入侵的分布式日志系统基于log4j、log4j2、logback搜集日志设置链路ID方便查询关联日志基于elasticsearch作为查询引擎高吞吐查询效率高全程不占应用程序本地磁盘空间免维护;对于项目透明不影响项目本身运行无需修改老项目引入直接使用支持dubbo,支持springcloud
架构 应用服务通过整合plumelog客户端搜集日志并推送kafkaredis等队列plumelog-server 负责把队列中的日志日志异步写入到elasticsearchplumelog_ui为操作界面客户端用于查询日志使用各种定制功能
常见部署模型
单redis小集群模式大部分中小规模项目 kafka集群模式每个项目量都很大
功能
日志查询 扩展字段 在系统扩展字段里添加扩展字段字段值为 orderid 显示值为 订单编号 查询的时候选择应用名下面会显示扩展字段可以通过扩展字段查询
MDC.put(orderid,1);
MDC.put(userid,4);
logger.info(扩展字段);链路追踪
设置追踪码后支持注解手动打点和切面全局打点
滚动日志
可以连接到机器上查看实时日志
错误统计
错误报警
支持通过webhook自定义报警
索引管理
查看和操作ES索引
plumelogELK
plumelog日志是客户端上报的方式客户端配置极其简单不需要像logstash一样去解析日志的格式因为plumelog客户端已经格式化好了traceid的设计都是内置的这些用户都不用刻意去管跨线程跨应用链路传递都是内置的组件部署简单你只要个有redis就行了ELK组合要完成完整部署可能还需要配置kafka,filebeat之类的组件而且版本需统一日志的查询速度大于ELK因为plumelog查询是优化过的比kibanna通用查询快很多plumelog的查询界面就是专门按照国人习惯设计的很多人用ELK到了大量日志的时候发现检索效率极其下降那是因为ES的索引等设计不合理造成的plumelog专业处理日志索引的设置都已经早就设计好了不需要使用者自己去优化ELK不是专业处理日志的plumelog在日志上功能就很多例如扩展字段链路追踪错误报警错误统计后续还有QPS统计等功能ELK都是没有的
多大体量
根据用户反馈目前搜集到最大的用户每日日志量已经到达3TB并稳定运行
部署应用
第一步安装 redis 或者 kafka一般公司redis足够 redis 官网:https://redis.io kafkahttp://kafka.apache.org
第二步安装 elasticsearch 官网下载地址:https://www.elastic.co/cn/downloads/past-releases
第三步下载安装包plumelog-server 下载地址https://gitee.com/plumeorg/plumelog/releases
第四步配置plumelog-server并启动redis和kafka作为队列模式下可以部署多个plumelog-server达到高可用配置一样即可
第五步后台查询语法详见plumelog使用指南
应用案例
以mservice为例查询线上问题时提供的是用户Id或订单号
之前查日志
根据custId找到udid根据订单号找到custId再找到udid。到kibana根据udid和时间点找到对应的请求记录找到对应的机器找到请求的唯一标识“tc”登录机器根据“tc”参数查询elk日志找到对应的线程号。根据线程号和时间范围过滤default日志。
现在查询日志
登录plumeLog页面根据用户Id或订单号查询即可查询到关键日志大致定位问题。根据日志的hostIp参数登录到机器根据追踪码过滤即可得到详细日志。
整合过程 pom添加依赖 dependencygroupIdcom.plumelog/groupIdartifactIdplumelog-logback/artifactIdversion3.5.2/version
/dependencylogback.xml添加appender注意区分测试和线上环境 appenders!--使用redis启用下面配置--appender nameplumelog classcom.plumelog.logback.appender.RedisAppenderappNameplumelog/appNameredisHost172.16.249.72:6379/redisHostredisAuth123456/redisAuth/appender!-- 使用kafka启用下面配置 --appender nameplumelog classcom.plumelog.logback.appender.KafkaAppenderappNameplumelog/appNamekafkaHosts172.16.247.143:9092,172.16.247.60:9092,172.16.247.64:9092/kafkaHosts/appender!-- 使用lite模式启用下面配置 --appender nameplumelog classcom.plumelog.logback.appender.LiteAppenderappNameworker/appNameplumelogHostlocalhost:8891/plumelogHost/appender
/appenders!--使用上面三个三选一加入到root下面--
root levelINFOappender-ref refplumelog/
/root!-- 结合环境配置案例--
springProfile namedevroot levelINFOappender-ref refplumelog //root
/springProfile
springProfile nametestroot levelINFOappender-ref refplumelog //root
/springProfile
springProfile nameprodroot levelINFOappender-ref refplumelog //root
/springProfile代码调整输出日志 当前只把部分关键日志输出到plumeLog可以解决大部分问题每条日志都有机器IP把用户Id作为扩展字段方便搜索。链路追踪将“tc”参数作为追踪码调用交易时将其放到head中传给交易可以直接根据追踪码搜索串联mservice和交易系统。将“tc”参数放到MDC中输出到日志头可以直接根据“tc”参数过滤日志 下载server包调整server配置文件 spring.application.nameplumelog_serverspring.profiles.activetest-confidentialserver.port8891spring.thymeleaf.modeLEGACYHTML5spring.mvc.view.prefixclasspath:/templates/spring.mvc.view.suffix.htmlspring.mvc.static-path-pattern/plumelog/**spring.boot.admin.context-pathadmin#值为4种 redis,kafka,rest,restServer#redis 表示用redis当队列#kafka 表示用kafka当队列#rest 表示从rest接口取日志#restServer 表示作为rest接口服务器启动#ui 表示单独作为ui启动#lite 简易模式启动不需要配置redis等plumelog.modelkafka#plumelog.lite.log.path/Users/chenlongfei/lucene# 如果使用kafka,启用下面配置plumelog.kafka.kafkaHostsbroker.kafka.mid:443,broker.kafka.mid:443plumelog.kafka.kafkaGroupNamelogConsumer#队列redis地址model配置redis集群模式哨兵模式用逗号隔开队列redis不支持集群模式#plumelog.queue.redis.redisHost127.0.0.1:6379#如果使用redis有密码,启用下面配置#plumelog.queue.redis.redisPassWord123456#plumelog.queue.redis.redisDb0#哨兵模式需要配置的#plumelog.queue.redis.sentinel.masterNamemyMaster#管理端redis地址 集群用逗号隔开不配置将和队列公用plumelog.redis.redisHost127.0.0.1:8389,127.0.0.1:8388#如果使用redis有密码,启用下面配置#plumelog.redis.redisPassWord123456#plumelog.redis.redisDb0#哨兵模式需要配置的#plumelog.redis.sentinel.masterNamemyMaster#如果使用rest,启用下面配置#plumelog.rest.restUrlhttp://127.0.0.1:8891/getlog#plumelog.rest.restUserNameplumelog#plumelog.rest.restPassWord123456#redis解压缩模式开启后不消费非压缩的队列#plumelog.redis.compressortrue#elasticsearch相关配置Hosts支持携带协议如http、httpsplumelog.es.esHosts127.0.0.1:9200plumelog.es.shards5plumelog.es.replicas0plumelog.es.refresh.interval30s#日志索引建立方式day表示按天、hour表示按照小时plumelog.es.indexType.modelday#plumelog.es.maxShards100000#ES设置密码,启用下面配置#plumelog.es.userNameelastic#plumelog.es.passWordelastic#是否信任自签证书#plumelog.es.trustSelfSignedtrue#是否hostname验证#plumelog.es.hostnameVerificationfalse#单次拉取日志条数plumelog.maxSendSize100#拉取时间间隔kafka不生效plumelog.interval100#plumelog-ui的地址 如果不配置报警信息里不可以点连接plumelog.ui.urlhttp://plumelog.ck.api:8891#管理密码手动删除日志的时候需要输入的密码admin.password123456#日志保留天数,配置0或者不配置默认永久保留admin.log.keepDays30#链路保留天数,配置0或者不配置默认永久保留admin.log.trace.keepDays30#登录配置配置后会有登录界面#login.usernameadmin#login.passwordadmin部署server当前已部署6个pod。当前实际应用中日常每天日志总量200多万条。2G左右。