Rsyslog 的 imfile 插件不能在 CentOS 7 上运行?
Rsyslog's imfile plugin not working on CentOS 7?
我正在尝试让 Rsyslog 的 imfile
插件在 没有 的情况下工作
任何真正的成功。
这里有用OS版本信息:
# cat /etc/centos-release
CentOS Linux release 7.1.1503 (Core)
这里是 Rsyslog 版本信息:
# rsyslogd -v
rsyslogd 7.4.7, compiled with:
FEATURE_REGEXP: Yes
FEATURE_LARGEFILE: No
GSSAPI Kerberos 5 support: Yes
FEATURE_DEBUG (debug build, slow code): No
32bit Atomic operations supported: Yes
64bit Atomic operations supported: Yes
Runtime Instrumentation (slow code): No
uuid support: Yes
See http://www.rsyslog.com for more information.
我尝试了 both legacy 和 RainerScript 格式的配置。
可悲的是,None 对我有用。我一定是做错了什么
但我根本无法决定它可能是什么。
这是我实际的 testing 配置(在 RainerScript 中,
我测试的前 legacy 版本在含义上完全相同):
# cat /etc/rsyslog.conf
global(
workDirectory = "/tmp"
)
module(
load = "imuxsock"
)
module(
load = "imjournal"
stateFile = "journal.state"
)
module(
load = "imfile"
pollingInterval = "10"
)
ruleset(name = "test-ruleset") {
if $syslogtag contains "test-syslogtag" then {
action(
type = "omfile"
file = "/tmp/test-file.log"
)
stop
}
}
input(
type = "imfile"
tag = "test-syslogtag"
stateFile = "test-input.state"
facility = "daemon"
severity = "debug"
file = "/tmp/test-input.in"
ruleset = "test-ruleset"
)
if prifilt("*.*") then {
action(
type = "omfile"
file = "/tmp/rsyslog-testing.log"
)
}
No 警告和错误都不会由 Rsyslog 产生
配置,但 /tmp/test-input.in
文件中也没有任何内容
复制到 /tmp/test-file.log
.
(我也仔细检查了 /var/log/audit/audit.log
,当然,还有......
没有什么可疑之处。对正在发生的事情感到绝望,我也
尝试 setenforce 0
完全关闭 SELinux 并重新启动
Rsyslog 之后。它没有帮助所以问题的根本原因
可能不是 SELinux 相关的问题。)
此外,test-input.state
文件已在 全局 中正确创建
workDirectory
路径(/tmp
在这个 testing 案例中)。我也试过
标准路径(登录 /var/log
,状态文件 /var/lib/rsyslog
)
尽管所有相关文件都已正确创建,但它也不起作用。
奇怪的是:如果我填充
即使在 Rsyslog 重新启动后,输入带有一些测试数据的日志文件
# systemctl restart rsyslog
(它应该默认更新状态文件)。
只是指出:imjournal
和 imuxsock
插件可以正常工作并正确填充后备日志文件 /tmp/rsyslog-testing.log
。还
使用 -D
and/or -d
选项在前台手动 运行 Rsyslog
没有帮助我澄清为什么 imfile
插件不起作用
在这个特定配置中对我来说。
那么,请问可以吗
- 检查我的RainerScript语法是否有明显错误(我猜没有),
- 给我一些 working
imfile
插件配置 EL7?
非常感谢。
--
mjf
经过一些 小的 更改,它终于开始正常工作了。我觉得
问题的主要原因 在我的案例中 一定是我在
/tmp
目录,其中 Rsyslog 对某些人来说似乎无法正常工作
CentOS 7.
上的原因
(可能 /tmp
由 文件系统命名空间 填充,甚至
尽管 Systemd 选项 PrivateTmp
未设置为 true
Rsyslog 单元文件和此选项 应该 设置为 false
根据 Systemd 手册页的默认设置?这是极不可能的,但
我还没有设法深入研究它。如果我发现了,
我会更新这个答案。)
另一个 次要的 原因可能是不正确的过滤器写入
RainerScript(我的真实测试实例包含一个 可怕的错字 我
简直被忽视了)。所以这是结果 testing 配置
对我来说就像魅力。
# cat /etc/rsyslog.conf
global(
workDirectory = "/var/lib/rsyslog"
)
module(
load = "imuxsock"
)
module(
load = "imjournal"
stateFile = "journal.state"
)
module(
load = "imfile"
pollingInterval = "10"
)
ruleset(name = "test-ruleset") {
if $programname == "test-syslogtag" then {
action(
type = "omfile"
file = "/var/log/test-file.log"
)
stop
}
}
input(
type = "imfile"
tag = "test-syslogtag:"
stateFile = "test-input.state"
facility = "daemon"
severity = "debug"
file = "/var/log/test-input.in"
ruleset = "test-ruleset"
)
if prifilt("*.*") then {
action(
type = "omfile"
file = "/var/log/rsyslog-testing.log"
)
}
给不知道的人一点提示 - $syslogtag
和
$programname
好像是近亲:$syslogtag := $programname ":"
。
您可以轻松找出可以匹配的所有 $
前缀变量
通过使用已编译的 RSYSLOG_DebugFormat
输出模板。
希望对您有所帮助。
--
mjf
我正在尝试让 Rsyslog 的 imfile
插件在 没有 的情况下工作
任何真正的成功。
这里有用OS版本信息:
# cat /etc/centos-release
CentOS Linux release 7.1.1503 (Core)
这里是 Rsyslog 版本信息:
# rsyslogd -v
rsyslogd 7.4.7, compiled with:
FEATURE_REGEXP: Yes
FEATURE_LARGEFILE: No
GSSAPI Kerberos 5 support: Yes
FEATURE_DEBUG (debug build, slow code): No
32bit Atomic operations supported: Yes
64bit Atomic operations supported: Yes
Runtime Instrumentation (slow code): No
uuid support: Yes
See http://www.rsyslog.com for more information.
我尝试了 both legacy 和 RainerScript 格式的配置。 可悲的是,None 对我有用。我一定是做错了什么 但我根本无法决定它可能是什么。
这是我实际的 testing 配置(在 RainerScript 中, 我测试的前 legacy 版本在含义上完全相同):
# cat /etc/rsyslog.conf
global(
workDirectory = "/tmp"
)
module(
load = "imuxsock"
)
module(
load = "imjournal"
stateFile = "journal.state"
)
module(
load = "imfile"
pollingInterval = "10"
)
ruleset(name = "test-ruleset") {
if $syslogtag contains "test-syslogtag" then {
action(
type = "omfile"
file = "/tmp/test-file.log"
)
stop
}
}
input(
type = "imfile"
tag = "test-syslogtag"
stateFile = "test-input.state"
facility = "daemon"
severity = "debug"
file = "/tmp/test-input.in"
ruleset = "test-ruleset"
)
if prifilt("*.*") then {
action(
type = "omfile"
file = "/tmp/rsyslog-testing.log"
)
}
No 警告和错误都不会由 Rsyslog 产生
配置,但 /tmp/test-input.in
文件中也没有任何内容
复制到 /tmp/test-file.log
.
(我也仔细检查了 /var/log/audit/audit.log
,当然,还有......
没有什么可疑之处。对正在发生的事情感到绝望,我也
尝试 setenforce 0
完全关闭 SELinux 并重新启动
Rsyslog 之后。它没有帮助所以问题的根本原因
可能不是 SELinux 相关的问题。)
此外,test-input.state
文件已在 全局 中正确创建
workDirectory
路径(/tmp
在这个 testing 案例中)。我也试过
标准路径(登录 /var/log
,状态文件 /var/lib/rsyslog
)
尽管所有相关文件都已正确创建,但它也不起作用。
奇怪的是:如果我填充
即使在 Rsyslog 重新启动后,输入带有一些测试数据的日志文件
# systemctl restart rsyslog
(它应该默认更新状态文件)。
只是指出:imjournal
和 imuxsock
插件可以正常工作并正确填充后备日志文件 /tmp/rsyslog-testing.log
。还
使用 -D
and/or -d
选项在前台手动 运行 Rsyslog
没有帮助我澄清为什么 imfile
插件不起作用
在这个特定配置中对我来说。
那么,请问可以吗
- 检查我的RainerScript语法是否有明显错误(我猜没有),
- 给我一些 working
imfile
插件配置 EL7?
非常感谢。
--
mjf
经过一些 小的 更改,它终于开始正常工作了。我觉得
问题的主要原因 在我的案例中 一定是我在
/tmp
目录,其中 Rsyslog 对某些人来说似乎无法正常工作
CentOS 7.
(可能 /tmp
由 文件系统命名空间 填充,甚至
尽管 Systemd 选项 PrivateTmp
未设置为 true
Rsyslog 单元文件和此选项 应该 设置为 false
根据 Systemd 手册页的默认设置?这是极不可能的,但
我还没有设法深入研究它。如果我发现了,
我会更新这个答案。)
另一个 次要的 原因可能是不正确的过滤器写入 RainerScript(我的真实测试实例包含一个 可怕的错字 我 简直被忽视了)。所以这是结果 testing 配置 对我来说就像魅力。
# cat /etc/rsyslog.conf
global(
workDirectory = "/var/lib/rsyslog"
)
module(
load = "imuxsock"
)
module(
load = "imjournal"
stateFile = "journal.state"
)
module(
load = "imfile"
pollingInterval = "10"
)
ruleset(name = "test-ruleset") {
if $programname == "test-syslogtag" then {
action(
type = "omfile"
file = "/var/log/test-file.log"
)
stop
}
}
input(
type = "imfile"
tag = "test-syslogtag:"
stateFile = "test-input.state"
facility = "daemon"
severity = "debug"
file = "/var/log/test-input.in"
ruleset = "test-ruleset"
)
if prifilt("*.*") then {
action(
type = "omfile"
file = "/var/log/rsyslog-testing.log"
)
}
给不知道的人一点提示 - $syslogtag
和
$programname
好像是近亲:$syslogtag := $programname ":"
。
您可以轻松找出可以匹配的所有 $
前缀变量
通过使用已编译的 RSYSLOG_DebugFormat
输出模板。
希望对您有所帮助。
--
mjf