暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

使用rsyslog读取本地日志文件

IT那活儿 2022-06-16
4751

点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!

 


读取日志
将本机实时生成的操作日志或者业务记录日志通过rsyslog传到日志服务器中想必大家都了解如何配置,但是当日志已经保存为文件后,怎么从日志文件中读取日志,并传输到日志服务器中呢?
这就要使用到rsyslog中自带的imfile模块了。

 


imfile模块
作用:此模块提供将任何标准文本文件转换为系统日志消息的能力。
imfile模块读取文件是逐行读取的,任何读取的行都会传递到 rsyslog 的规则引擎,规则引擎应用过滤条件并选择需要执行的操作,且不处理空行。写入新行时,它们会从文件中读取并进行处理。

1. 读取的策略分为两种:轮询和inotify

  • 轮询:imfile在不指定策略的前提下,默认为轮询,即一定时间间隔内检查文件变化,所以会有一定的延迟;
  • inotify:基于文件监控系统的机制,监控文件发生修改、新增、删除等操作,当文件发生变化时,触发该机制,对文件进行读取。
当 rsyslogd 在监视文本文件时停止,它会记录上次处理的位置并在重新启动时从检查点继续读取。因此在重新启动期间不会丢失任何数据。
2. 通配符

1)版本:8.25.0及以前 仅在文件名部分支持通配符,在目录名称中不支持

  • /var/log/*.log
  • /var/log/*/syslog.log

2)版本:8.25.0以后文件名和路径支持通配符

  • /var/log/*.log
  • /var/log/*/syslog.log
  • /var/log/*/*.log
所有匹配子文件夹中的所有匹配文件都将被读取。
但是需要注意的是当被监控文件过多时,会降低 imfile 的性能。
3. 常用相关选项

参数说明:

  • File:被监控的文件。必须是绝对地址,文件名支持通配符。
  • Tag:标记信息,会记录到每行被读取到的日志中。
  • Facility:要分配给从此文件读取的消息的系统日志工具。可以指定为文本形式(例如local0, local1, ...)或数字(例如 16 表示local0),建议采用文本形式,默认为local0。
  • Severity:要分配给读取的行的系统日志严重性。可以以文本形式(例如info, warning, ...)或数字(例如 6 表示info)指定。建议采用文本形式。默认为notice。
  • PersistStateInterval:指定在处理输入文件时应多久写入一次状态文件。该缺省值是0,任何其他值 n 意味着至少在每次处理 n 个文件行时写入状态文件。此设置可用于防止由于致命错误(如电源故障)而导致消息重复。
  • readMode:这为处理某些标准类型的多行消息提供了支持。
    该值的范围为 0-2,决定了多线检测方法
    0 -(默认)基于行(每行是一条新消息);
    1 - 基于段落(日志消息之间有一个空行);
    2 - 基于缩进(新的日志消息从一行的开头开始。如果一行以空格或制表符“t”开头,它就是它之前的日志消息的一部分)。 



配置案例
#载入imfile文件,并设置PollingInterval值为5。
module(load="imfile" PollingInterval="5")
#配置被采集文件信息,以及tag等信息。
input(type="imfile" 
File="/app/udal/dbproxy_****/logs/udal_monitor_slow_sql.log" 
Tag="teledb#133. ****
Severity="info" Facility="local6")

#使用UDP将采集到的日志传输到日志服务器中 local6.* @133.****:****
查看接收到的日志行:
至此我们便了解了imfile的应用场景,也完成了rsyslog采集文件中日志的配置。

END



本文作者:胡京康(上海新炬王翦团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论