近几年笔者在生产环境中,很多日志处理场景中都适用了Rsyslog,在基于UDP的分布式日志汇聚、日志文件采集方面都有出色的发挥,“The rocket-fast system for log processing” 真不是吹的。

在Rsyslog的官方文档中,发现Rsyslog已经提供了文件(imfile)输入方法,毕竟它原本就在系统中,拿来就用,还选什么 filebeat,logstash。

Rsyslog读文件输入源的支持已经相当完善,直接摘抄官方文档:

This module provides the ability to convert any standard text file into a syslog message. A standard text file is a file consisting of printable characters with lines being delimited by LF.

这个模块(imfile)提供了将任何标准文本文件转换为syslog消息的能力。标准文本文件是由可打印字符组成的文件,其中的行由LF分隔。

The file is read line-by-line and any line read is passed to rsyslog’s rule engine. The rule engine applies filter conditions and selects which actions needs to be carried out. Empty lines are not processed, as they would result in empty syslog records. They are simply ignored.

通过逐行读取文件,并将任何行读取传递给rsyslog的规则引擎。规则引擎应用过滤条件并选择需要执行哪些操作。空行不会被处理,因为它们会产生空的syslog记录。所以被简单的忽略掉了。

As new lines are written they are taken from the file and processed. Depending on the selected mode, this happens via inotify or based on a polling interval. Especially in polling mode, file reading doesn’t happen immediately. But there are also slight delays (due to process scheduling and internal processing) in inotify mode.

当在写入新行时,它们会从文件中取出并进行处理。这取决于所选的模式,通过inotify或基于轮询间隔进行。特别是在轮询模式下,文件读取不会立即发生。但inotify模式也有轻微的延迟(由于进程调度和内部处理)。

The file monitor supports file rotation. To fully work, rsyslogd must run while the file is rotated. Then, any remaining lines from the old file are read and processed and when done with that, the new file is being processed from the beginning. If rsyslogd is stopped during rotation, the new file is read, but any not-yet-reported lines from the previous file can no longer be obtained.

文件监视器支持文件旋转(替换为新的文件时)。要充分工作,必须在文件旋转时运行rsyslogd。然后,读取和处理旧文件中的所有剩余行,当这些行完成后,将从头开始处理新文件。如果在旋转期间停止rsyslogd,则会读取新文件,但前一个文件中尚未报告的行无法被重新获取。

When rsyslogd is stopped while monitoring a text file, it records the last processed location and continues to work from there upon restart. So no data is lost during a restart (except, as noted above, if the file is rotated just in this very moment).

当rsyslogd在监视文本文件时停止时,它将记录最后处理的位置,并在重新启动时从那里继续工作。因此,在重启过程中不会丢失数据(如上所述,除非文件在此时被旋转)。

闲话少说,开始配置一个从本地文件读取日志文件并输出到Kafka的例子:

1. 环境准备,最新V8稳定版已经提供RPM包的Rsyslog-kafka插件了,直接yum安装即可,

yum install rsyslog rsyslog-kafka.x86_64

2. 配置, 将如下内容保存到配置文件/etc/rsyslog.d/nginx_kafka.conf (没有可以自己创建,文件名可自己指定),重启rsyslog即可。

# 加载文件读取模块(im前缀为输入模块),imfile模块
module(load="imfile")
# 加载kafka输出模块(om前缀为输出模块),omkafka
module(load="omkafka")# nginx 日志模版(原样输出)
template(name="nginxAccessTemplate" type="string" string="%msg%\n")# 定义消息来源及设置相关的action
input(type="imfile" Tag="nginx" File="/data/log/nginx/access.log" Ruleset="nginx-kafka")# 定义消息的输出模版
ruleset(name="nginx-kafka") {#日志转发kafkaaction (type="omkafka"template="nginxAccessTemplate"confParam=["compression.codec=snappy","queue.buffering.max.messages=100000"]partitions.number="3"topic="topic_nginx_log"broker="192.168.1.12:19092,192.168.1.13:19092,192.168.1.14:19092"queue.spoolDirectory="/tmp"queue.filename="nginx_kafka"queue.size="360000"queue.maxdiskspace="4G"queue.highwatermark="216000"queue.discardmark="350000"queue.type="LinkedList" queue.dequeuebatchsize="4096"queue.timeoutenqueue="0"queue.maxfilesize="10M" queue.saveonshutdown="on"queue.workerThreads="4")
}

说明: 检查conf文件是否正确可以运行rsyslogd debug模式rsyslogd -dn运行,看日志输出结果,或者直接运行rsyslogd -N 1检查conf文件是否正确。

完了,整体就这么简单。

日志收集之rsyslog to kafka - 简书项目需要将日志收集起来做存储分析,数据的流向为rsyslog(收集) -> kafka(消息队列) -> logstash(清理) -> es、hdfs; 今天我们先将如何利...https://www.jianshu.com/p/1b7fdb1cff3c

基于Rsyslog的日志文件采集办法相关推荐

  1. 基于logstash实现日志文件同步elasticsearch

    更多编程教程请到:菜鸟教程 https://www.piaodoo.com/ 友情链接: 高州阳光论坛https://www.hnthzk.com/ 人人影视http://www.op-kg.com/ ...

  2. java tomcat 日志分析工具_tomcat日志集中采集、分析与展示的几种方法

    大家在做分布式web系统的时候,比如那么多个tomcat,每天都会产生很多的日志(虽然已经按小时进行日志拆分了,但日志内容还是很大,vim查日志的时候很慢),而且那么多个tomcat,每个tomcat ...

  3. 唯品会基于 Clickhouse 存储日志的实践

    1.背景 唯品会日志系统dragonfly 1.0是基于EFK构建,于2014年服务至今已长达7年,支持物理机日志采集,容器日志采集,特殊分类日志综合采集等,大大方便了全公司日志的存储和查询. 随着公 ...

  4. Linux 服务器日志文件查找技巧精粹

    用来在日志文件里搜索特定活动事件的工具不下几十种,本文将介绍搜索日志文件时应该采取的策略.然后,通过几个具体示例介绍一些使用grep命令手动搜索日志文件的办法.接下来,我们将看到 logwatch工具 ...

  5. Springboot配置保存日志文件

    点击关注公众号,利用碎片时间学习 来源:blog.csdn.net/gaopinqiang/ article/details/109228641 springboot日志配置: springboot默 ...

  6. 大数据离线处理数据项目(一) 网站日志文件数据采集 日志拆分 数据采集到HDFS并进行预处理

    简介: 这篇写的是大数据离线处理数据项目的第一个流程:数据采集 主要内容: 1)利用flume采集网站日志文件数据到access.log 2)编写shell脚本:把采集到的日志数据文件拆分(否则acc ...

  7. python读取日志统计ip_使用python脚本实现统计日志文件中的ip访问次数

    使用python脚本实现统计日志文件中的ip访问次数,注意此脚本只适用ip在每行开头的日志文件,需要的朋友可以参考下 适用的日志格式: 106.45.185.214 - - [06/Aug/2014: ...

  8. logback过期日志文件自动删除配置

    logback过期日志文件自动删除配置 前言 logback应该是目前最主流的日志框架,在实际使用中经常遇到打印的日志文件不会自动删除,导致日志文件占有大量磁盘空间的问题. 本文主要介绍logback ...

  9. ArcSDE 日志文件表(一)

    今天跟大家介绍一下ArcSDE日志文件表,一直都想好好研究一下这块,因为基本上不太受大家重视,感兴趣的用户不是很多,但是一旦出现多用户并发查询或者版本操作的时候,这个东西就显得非常重要了,而且根据不同 ...

最新文章

  1. Latex中设置字体颜色
  2. 双11个性化推荐背后,阿里云“舜天”如何应对百亿次挑战?
  3. 编程python用什么软件比较好-新手入门Python编程的8个实用建议
  4. Ubuntu下安装Chrome浏览器
  5. Lucene4.3.1 拼写检查SpellChecker
  6. ajax无刷新页面切换,历史记录后退前进解决方案
  7. shell脚本实现检測回文字符串
  8. Android 应用开发(40)---TextView(文本框)详解
  9. php不用框架怎么写,php框架不用写sql语句就能调用数据库里表的字段是怎么实现的...
  10. centOS下JDK1.8的安装
  11. 带你一起一步步推理出RocketMQ的架构
  12. 有没有能够很快上手的报表框架
  13. 解决被卡巴斯基提示说KEY被列为黑名单
  14. PLC软件申请软件著作权登记指南(新申请)
  15. ts16949 软件开发流程图_新产品开发流程图:包括APQP,DFMEA,PFMEA,PPAP(FAI),SPC,MSA(GRR)等...
  16. JavaScript(BOM、窗口事件和计时器)
  17. vscode怎么运行代码HTML 怎么在vscode编写HTML代码
  18. 英语五种基本句型判断
  19. centos安装pecl
  20. 程序员都是这样关机的

热门文章

  1. 星巴克2022新年限定特饮;丹麦蓝罐曲奇虎年春节礼盒;尊尼获加、督威啤酒等虎年限定 | 食品饮料新品...
  2. 2022年中国互联网数据中心(IDC)行业产业链及市场现状分析(附国家绿色数据中心公示名单)[图]
  3. kdj指标主要看哪个值_KDJ指标怎么看?KDJ指标详解
  4. TL-WDN5200H无线usb网卡在Linux上的使用
  5. 开源开放 | 多模态地球科学知识图谱GAKG
  6. 计算机专业的创意文案,高考借势广告文案又双叒叕来了,这些借势扎心了!
  7. 微信小程序产品定位及功能介绍
  8. 三个月能学到多少网络安全知识?
  9. Unity3D_Could not produce Class With ID xxx
  10. 欢迎高校选修云创大数据免费在线直播课!