$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imklog # provides kernel logging support (previously done by rklogd)
module(load="imfile" PollingInterval="5")
$ModLoad imtcp
$InputTCPServerRun 514
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$IncludeConfig /etc/rsyslog.d/*.conf
*.info;mail.none;authpriv.none;cron.none;local5.none /var/log/messages
*.info;mail.none;authpriv.none;cron.none;local5.none @@115.236.160.82:514
authpriv.* /var/log/secure
mail.* -/var/log/maillog
cron.* /var/log/cron
uucp,news.crit /var/log/spooler
local7.* /var/log/boot.log
$InputFilePersistStateInterval 1
input(type="imfile"
File="/var/log/nginx/access.log"
Tag="zjzc-frontend01-access"
PersistStateInterval="1"
reopenOnTruncate="on"
Severity="info"
Facility="local5")
input(type="imfile"
File="/var/log/nginx/error.log"
Tag="zjzc-frontend01-error"
Severity="info"
PersistStateInterval="1"
reopenOnTruncate="on"
Facility="local5")
local5.* @@115.236.160.82:9514
##reopenOnTruncate="on" #版本要求8.16.0以上,此配置是为了解决log rotate切割日志后不收集问题
这个模块提供了将任何标准的文本文件为一个syslog 消息。一个标准的文本文件是一个文件有可打印的字符组成
这个文件是逐行读取,任何行读取时传递到rsyslog的规则引擎。
这个规则引擎应用过滤条件和选择哪个动作来执行。
空行是不被处理的
当新航被写入时 它们从文件取出并处理。
根据选定的模式, 这个发生通过inotify或者基于一个polling 间隔。
特别在polling模式, 文件读取不立即发生。
但是会有轻微的延迟(由于进程调度和内部处理)在inotify 模式
文件监控支持file rolation,全面工作,rsyslogd 必须运行当文件被rorated.
然后,任何留下的行从旧的文件是被读取和处理
Metadata:
imfile 模块支持消息元数据,它支持下面数据项:
filename:
消息源文件的名字, 这个是很有用的当使用通配符在监控文件中,因为 它是唯一方式知道 消息来自于哪个文件。
State Files 状态文件
rsyslog 必须跟踪监控文件的哪个部分已经被处理了, 这个是通过所谓的"state files".
这些文件总是创建在rsyslog 工作目录(通过$WorkDirectory)
$WorkDirectory /var/lib/rsyslog
[root@PD rsyslog]# pwd
/var/lib/rsyslog
[root@PD rsyslog]# ls
imfile-state:-u01-app-oracle-diag-rdbms-ncdb-podinndb-trace-alert_podinndb.log
[root@PD rsyslog]#
为了避免重复的状态文件的问题,rsyslog 自动的生成状态文件根据下面的方案:
1. 字符串 "imfile-state" 是增加在实际文件名字的前面, 包含了完整的路径
2. 完整的名字是在那个字符串后面, 所有的"/"替换为"-"
作为一个具体的例子, 考虑文件/var/log/applog 是被监控的,
相应的state文件会被命名为 imfile-state:-var-log-applog.
注意 它是可能的 设置一个固定的state file 通过过期的"stateFile" parameter.
建议避免这个, 因为用户必须照顾名字冲突。
最重要的是, 如果"stateFile"是设置用于文件监控使用通配符,
相同的状态文件是用于所有那些文件的事件。
注意 当$WorkDirectory 是没有被设置或者设置为不能写的位置,状态文件不会生成。
在这些情况下, 文件内容总是会被完整的重新发送,因为模块不知道 文件已经处理的位置
模块参数
mode ["inotify"/"polling"]
Default: “inotify”
Available since: 8.1.5
这是指定 如果imfile 是运行在inotify 或者polling模式。
传统上,imfile是用在polling模式, 是更资源紧张和慢的相比intofy 模式。
它是建议用户启用"polling"模式 只有它们遇到奇怪的文件在inotify 模式。
理论上讲, 不应该有一个理由来启用"polling"模式。
PollingInterval seconds
Default: 10
这个设置指定 文件轮训的频率, 显而易见, 它只有在imfile是运行在polling模式才有影响。
Input Parameters 输入参数:
File [/path/to/file]
(需要参数) 文件是被监控的,到目前为止,这个必须是一个绝对的名字(没有宏和模板)
注意 通配符是支持的在文件名字层面
Tag[tag:]
( 需要的参数) tag用于消息来自哪个文件, 如果你想看到tag
Tag="Nc-Finace-db-192.168.10.53"
Facility [facility]
syslog facility 是被分配到lines read 默认是local0
PersistStateInterval [lines]
指定 state file 应该被写的频率 当处理输入文件时 默认是0,
这意味着一个新的状态文件只有当监控的文件被关闭才会被写
任何其他值 n 意味着状态文件是每隔n 文件行被处理才写。
这个设置可以用于防止消息重复由于致命错误(像断电)
注意这个设置影响了imfile性能,尤其是设置为一个小的值,频繁写state file是非常耗时的
startmsg.regex [POSIX ERE regex]
这个允许处理多行消息, 当设置的时候,一个消息是终止当下一个开始,
startmsg.regex 包含regex 定义了消息的开始。
因为这个参数是使用正则表达式, 它比readMode 更加灵活 但是性能较差
MaxLinesAtOnce [number]
这个是一个过时的设置 只用于polling mode,在intofy 模式,它是固定为0 所有常识配置不同的值都会被忽略,但是会产生一个错误
请注意 ,imfile的未来版本 可能不支持这个参数,建议不要使用它
MaxSubmitAtOnce [number]
deleteStateOnFileDelete [on/off] (requires v8.5.0+)
默认 on:
这个参数文件控制如果状态文件是删除了 如果它相关的主文件是被删除了。
这个通常是一个好主意,因为否则会有问题当一个新的文件使用相同的名字被创建,在那张情况下,
imfile 会从删除的文件的上次的位置开始读,这个不是你需要的
stateFile [name-of-state-file]
Default: unset
这个参数是过时了,它仍旧被接受,但是 不能用于新的创建的配置
reopenOnTruncate [on/off] (requires v8.16.0+)
Default: off
这是一个实验性的功能,告诉rsyslog 重新打开input file 当他被truncated