如何解决如何在centos7上调试rsyslog
在 /etc/rsyslog.d
下,我创建了一个 .conf 文件。
这是文件:
$ModLoad imfile
$InputFilePollInterval 1
$InputFileName /var/log/secure
$InputFileTag securelogs:
$InputFileStateFile securelogs
$InputFileFacility local0
$InputRunFileMonitor
:syslogtag,isequal,"securelogs:" {
:msg,contains,"sshd" {
local0.* /var/log/forward_securelogs_audit.log
local0.* @@<server-ip>:514
}
stop
}
我在多台服务器上有相同的配置,但对于其中 2 台,它不起作用。
如何调试?
我尝试按照此处的说明进行操作 - https://www.rsyslog.com/how-to-use-debug-on-demand/
但是没有文件 - /etc/rc.d/init.d/rsyslog
也没有文件 - /var/run/rsyslogd.pid
0726.220297821:7f4d57c22780: Note: debug on demand turned on via configuraton file,use USR1 signal to activate.
rsyslogd 8.24.0-57.el7_9,compiled with:
PLATFORM: x86_64-redhat-linux-gnu
PLATFORM (lsb_release -d):
FEATURE_REGEXP: Yes
GSSAPI Kerberos 5 support: Yes
FEATURE_DEBUG (debug build,slow code): No
32bit Atomic operations supported: Yes
64bit Atomic operations supported: Yes
memory allocator: system default
Runtime Instrumentation (slow code): No
uuid support: Yes
Number of Bits in RainerScript integers: 64
任何帮助将不胜感激。
解决方法
您链接的文档很旧,RedHat 和 CentOS 现在使用 systemd 来启动守护程序,因此这些文件不再存在。如果你这样做
systemctl status rsyslog
您应该看到包含类似内容的行
Active: active (running) since ...
Main PID: 738 (rsyslogd)
您可以将 USR1 信号发送到此编号进程以切换调试。在这种情况下,它将是:
sudo kill -USR1 738
默认情况下,我认为调试输出应该在 stdout 上,在我的 Fedora systemd 上,它被定向到 /dev/null
用于 rsyslogd,所以这可能无济于事。
我没有 CentOS,但它可能是类似的。
您可以使用以下命令查看 systemd 单元:
systemctl cat rsyslog
就我而言,这包括以下几行:
EnvironmentFile=-/etc/sysconfig/rsyslog
StandardOutput=null
如果是这种情况,您可以向文件 /etc/sysconfig/rsyslog
添加选项,例如:
RSYSLOG_DEBUGLOG=/tmp/rsyslogdebug
然后重新启动 rsyslogd 并尝试再次向它发出信号以切换调试。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。