当前位置: 首页 > news >正文

一种轻量级日志采集解决方案

前言

目前各大公司生产部署很多都是采用的集群+微服务的部署方式,如果让日志散落在各个主机上,查询起来会非常的困难,所以目前我了解到的都是采用的日志中心来统一收集管控日志,日志中心的实现方案大多基于ELK(即Elasticsearch、Logstash和Kibana三个开源软件的缩写),ELK一般都要配合FileBeat使用,其中FileBeat做为采集器,Logstash做为日志过滤格式化工具、Elasticsearch做为存储介质、Kibana做为视图解析器,四个组件搭配组成日志中心。

已有开源日志采集实现

FileBeat作为一款日志采集工具,工作原理就是轮询目标目录来监听文件的变化,它是通过文件MD5值得变化来感知文件内容得变化。开源的工具虽然好用,但是配置繁琐,配置项多,有些时候我们可能只是简单的需要将多个服务器的日志打印在同一个主机上,为了便于查看。
目前有两种方案来实现日志采集:
一种是在应用中集成netty客户端,在打日志的时候使用aop的方式在日志后添加发送到netty服务端的逻辑。
第二种,和FileBeat的思路一样,采用监听轮询文件的方式来监听文件的变化,最后将变化内容发送到netty服务端。

Jef-log-tail日志采集工具介绍

概述:

Jef-log-tail是一款基于netty的轻量级的日志采集器,支持指定文件、指定文件后缀、指定文件目录的采集方式,提供了供java程序插码(agent)的集成方式,可以实时采集日志。
Jef-log-tail分为采集端和服务端,采集端将采集到的文件传输到服务端,服务端根据自定义配置可输出到指定文件中,也可以保存到数据库、Redis、Kafka或其他组件中。
仓库地址:https://gitee.com/chengzhi2/jef-log-tail

使用方式:

客户端配置如下:

netty.server.ip = 127.0.0.1
# netty.server.ip = fe80::f816:3eff:fe17:bb2e/64
netty.server.port = 9999
# 与服务端断开后重连次数
netty.max.retry.count=13
# 连接超时时间
netty.connect.timeout=60
# 心跳间隔时间 单位 秒
netty.heart.interval = 10
# 重连最大间隔时间
netty.connect.retry.intervalue = 7200# 监听文件的后缀
log.listen.suffix=.sql
# 监听文件夹
log.listen.filepath=D:\test\test1
# 轮询间隔时间 单位s
log.listen.intervalue.time=5log.file.chatset=UTF-8# 是否在发送的消息中添加ip地址
log.add.address = true

服务端配置如下:

# 服务端口
server.port = 9999
# 心跳超时断开时间,该配置需要大于客户端的心跳间隔时间
server.heart.read.time=20
# 文件存放路径
log.filepath = D:\test\all\20221005.txt
# 文件分割原则 单位 M,例如10M为一个新文件
log.split.size = 10
# 存储方案
save.plan = localFile

启动方式:
服务端启动:其中-Djef.properties表示自定义配置文件。

nohup java -Djef.properties=file:///home/acctuser/tools/logTail/config/server.properties -jar -Dorg.slf4j.simpleLogger.defaultLogLevel=debug ./LogTail-server-1.0-SNAPSHOT-start.jar > ./log/logTail.log 2>&1 &

客户端启动同上。

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第30天,点击查看活动详情

http://www.lryc.cn/news/60439.html

相关文章:

  • 【源码】Spring Cloud Gateway 是在哪里匹配路由的?
  • BAT批处理基本命令
  • Python数组仿射变换
  • “==“和equals方法究竟有什么区别?
  • 蓝桥杯15单片机--超声波模块
  • 【学习笔记】ARC159
  • 2023/4/16总结
  • 【剑指offer】常用的数据增强的方法
  • /lib/lsb/init-functions文件解析
  • 【ChatGPT】ChatGPT-5 强到什么地步?
  • [ARM+Linux] 基于全志h616外设开发笔记
  • 如何实现24小时客户服务
  • 查询数据库空间(mysql和oracle)
  • 为什么 SQLite 一定要用 C 语言来开发?
  • TensorFlow Lite,ML Kit 和 Flutter 移动深度学习:6~11
  • 你的GPT跟ChatGPT可能只差了一个DPU
  • springboot服务端接口外网远程调试,并实现HTTP服务监听 - 内网穿透
  • NumPy的应用-1
  • k8s的yaml文件中kind类型详解
  • 第三天:C语言控制结构
  • 访问若依vue版后端api接口
  • 另一种迁移xxl-job任务的方法,适合不满足数据迁移条件
  • Redis缓存穿透、击穿、雪崩面试题详解
  • 【网络安全】本地提权漏洞分析
  • 电脑端(PC)按键精灵——3.其他命令
  • Hudi集成Flink-写入方式
  • 深度探索list
  • QQuick-自绘
  • 【算法】【算法杂谈】已知[1,m]的等概率函数,求[1,n]的等概率函数
  • 【Python】Python中的列表,元组,字典