开箱即用的rsyslog会将所有内容转储到SystemEvents`Syslog 数据库中的表中(如果您使用提供的默认架构)。我想使用正则表达式将入站消息过滤到单独的数据库表中。
我玩过这个,但我很难找出实现这一点的最佳方法(甚至是一种起作用的方法)。
在我的 rsyslog.conf 中:
$template wireless, \
"insert into RogueAPs \
(ReceivedAt, DeviceReportedTime, Facility, Priority, FromHost, Message) \
VALUES('%timegenerated%', '%timereported%', '%syslogfacility%', '%syslogpriority%', '%fromhost-ip%', '%msg%');", \
stdsql
if $msg contains 'subtype=wireless' then :ommysql:127.0.0.1,Syslog,dbusername,dbpassword;wireless
*.* :ommysql:127.0.0.1,Syslog,dbusername,dbpassword
Run Code Online (Sandbox Code Playgroud)
这是我最近的尝试,但我被卡住了。
(RogueAPs 表只是 rsyslog 附带的默认 SystemEvents 表的克隆)
版本信息:
shell# /usr/local/sbin/rsyslogd -v
rsyslogd 5.5.5, compiled with:
FEATURE_REGEXP: Yes
FEATURE_LARGEFILE: No
FEATURE_NETZIP (message compression): Yes
GSSAPI Kerberos 5 support: No
FEATURE_DEBUG (debug build, slow code): No
Atomic operations supported: Yes
Runtime Instrumentation …Run Code Online (Sandbox Code Playgroud) 有没有办法配置 rsyslog 来抑制相同的重复消息?
在某些情况下(通常是硬件故障),由于每四分之一秒左右的重复消息,我的系统日志可能会增长到 100 MB 或更多。
我刚刚遇到了 rsyslog 的 imjournal 模块的问题,可能是这里描述的问题,即 systemd 日志导致的并发症
日志在一个紧密的循环中无休止地返回相同的数据。这会导致 rsyslog 中的大量消息重复,可能会在系统资源耗尽时导致拒绝服务
无论如何,它确实使处理器最大程度地消除了几个月前的重复消息。我没有意识到 rsyslog 和 journald 在默认情况下是如此紧密耦合,所以我重新配置了前者,使用更传统、更高效的实时套接字作为输入,按照以下说明:
$ModLoad imuxsock
$OmitLocalLogging off
Run Code Online (Sandbox Code Playgroud)
就创建和使用套接字而言,这似乎有效。但是,我在测试它时注意到了一个奇怪的事情。
> logger "hello world"
Run Code Online (Sandbox Code Playgroud)
结果在 中/var/log/syslog,仅在 中提到过一次rsyslog.conf:
Apr 17 10:35:45 pidora logger: hello world
Apr 17 10:35:45 pidora logger: hello world
Run Code Online (Sandbox Code Playgroud)
该消息被重复,似乎所有其他消息也是如此。有的完全一样,有的只有一个方面不同:
Apr 17 10:42:26 pidora systemd[1]: Stopping System Time Synchronized.
Apr 17 10:42:26 pidora systemd: Stopping System Time Synchronized.
Run Code Online (Sandbox Code Playgroud)
该[1]是PID。我相信正在发生的事情是 rsyslog 从应用程序获取一次消息,然后从 journald 再次获取消息。 …
我正在将 Ubuntu 14.04 VM 强化到 CIS 标准,并且在获取 rsyslog 以创建必要文件时遇到问题。
注意:我对 Linux 的使用越来越好,但我还不是大师,请原谅我的无知。
我插入了一个文件 /etc/rsyslog.d/CIS.conf ,内容如下:
*.emerg :omusrmsg:*
mail.* -/var/log/mail
mail.info -/var/log/mail.info
mail.warning -/var/log/mail.warn
mail.err /var/log/mail.err
news.crit -/var/log/news/news.crit
news.err -/var/log/news/news.err
news.notice -/var/log/news/news.notice
*.=warning;*.=err -/var/log/warn
*.crit /var/log/warn
*.*;mail.none;news.none -/var/log/messages
local0,local1.* -/var/log/localmessages
local2,local3.* -/var/log/localmessages
local4,local5.* -/var/log/localmessages
local6,local7.* -/var/log/localmessages
Run Code Online (Sandbox Code Playgroud)
我还修改了/etc/rysyslog.conf。内容是这样的:
$ModLoad imuxsock # provides support for local system logging
$ModLoad imklog # provides kernel logging support
$KLogPermitNonKernelFacility on
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$RepeatedMsgReduction on
$FileOwner syslog
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$PrivDropToUser syslog …Run Code Online (Sandbox Code Playgroud) 在我的 iptables 中,我有一个记录丢弃数据包的规则:
-A INPUT -i eth0 -j LOG --log-prefix "FW: " --log-level 7
-A INPUT -i eth0 -j DROP
Run Code Online (Sandbox Code Playgroud)
在/etc/rsyslog.conf,我有另一个规则将这些日志发送到一个专用文件/var/log/firewall.log。
:msg, contains, "FW: " -/var/log/firewall.log
& ~
Run Code Online (Sandbox Code Playgroud)
将& ~立即删除日志,因此它们不会淹没syslog或其他日志文件。
这很有效,除了它充斥dmesg着那些防火墙日志(不是/var/log/dmesgcommand 的输出dmesg)。
有没有办法防止这些日志显示在dmesg?
我使用 rsyslog 以这种方式将日志从远程主机保存到服务器:
服务器:
# Logfile for each host
$template DynaFile,"/var/log/rsyslog/%HOSTNAME%.log"
*.* -?DynaFile
Run Code Online (Sandbox Code Playgroud)
客户:
*.* @servername
Run Code Online (Sandbox Code Playgroud)
这会为服务器中的每个客户端主机创建日志文件,/var/log/rsyslog/但它也会将每条消息记录到服务器/var/log/syslog。所以它变得非常臃肿。如何防止/var/log/syslog它只包含来自服务器本身的消息?
当我的内核启动时,除了有用的重要信息外,它还会打印大量调试信息,例如
....
kernel: [0.00000] BIOS-e820: [mem 0x0000000000000000-0x000000000009d3ff] usable
kernel: [0.00000] BIOS-e820: [mem 0x000000000009d400-0x000000000009ffff] reserved
kernel: [0.00000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved
...
kernel: [0.00000] MTRR variable ranges enabled:
kernel: [0.00000] 0 base 0000000000 mask 7E00000000 write-back
...
kernel: [0.00000] init_memory_mapping: [mem 0x00100000-0xcf414fff]
kernel: [0.00000] [mem 0x00100000-0x001fffff] page 4k
kernel: [0.00000] [mem 0x00200000-0xcf3fffff] page 2M
kernel: [0.00000] [mem 0xcf400000-0xcf414fff] page 4k
....
kernel: [0.00000] ACPI: XSDT 0xD8FEB088 0008C (v01 DELL CBX3 01072009 AMI 10013)
kernel: [0.00000] ACPI: FACP 0xD8FFC9F8 0010C (v05 DELL …Run Code Online (Sandbox Code Playgroud) 在 CentOS 7 中,我如何定位和查看所有系统日志,这些日志告诉我谁试图进入系统、谁进入了系统、他们联系了哪些进程、他们完成了什么等等。我希望能够将每个活动链接到任一活动用户 ID 或远程 IP 地址。
我的var/log/目录包含许多资源,包括/var/log/messages和/var/log/secure,但大多数文件都是类型的Binary (application/octet-stream),操作系统不知道如何打开它们,除非我将一些未知的查看程序与它们关联起来。此外,var/log/firewalld似乎不包含有用的信息。
我可以找到我的应用程序、我的数据库和 NginX/Apache 生成的所有日志。
我的目标是使用syslog (rsyslog)记录apt/dpkg活动,以便将日志条目发送到中央系统日志服务器。
dpkg 写入/var/log/dpkg.log, apt 写入/var/log/apt目录。
我做了一些研究,似乎 apt 和 dpkg 都可以使用 syslog。唯一的选择是使用 rsyslog“文本文件输入模块”功能(http://www.rsyslog.com/doc/master/configuration/modules/imfile.html),它会定期检查日志文件中的新内容。
/etc/dpkg/dpkg.cfg配置文件有log选项,但没有 dpkg.cfg 选项和功能的手册页。
rsyslog imfile真的是唯一的选择吗?
我最近了解到它journalctl占用了我的 16GB SD 卡(Raspberry Pi)的很大一部分:
$ journalctl --disk-usage\nArchived and active journals take up 312.1M in the file system. \nRun Code Online (Sandbox Code Playgroud)\n我没有这种感觉,journalctl并且在我的这台机器的用例中发挥journald了作用。\n它是一个老式的 RPi,并且rsyslog也在运行。我估计我对它的需求和使用journalctl可能是“千载难逢”。因此,我决定禁用journald- which “feeds” journalctl。我认为这很简单,使用systemctlto stop,或者可能只是disableing ,systemd-journald.service这样它就不会在下次启动时启动。
在拔掉插头之前,我决定做一些研究。没有找到数千个提供“操作方法”建议的参考文献,而是针对我的特定搜索词“如何禁用日志”的结果非常少。相反,结果主要提供了减少journald资源消耗的建议。我确实找到了一些让我犹豫的参考资料:
ArchLinux 论坛中的一个旧帖子表明,不可能journald在没有影响的情况下禁用它;即"Masking systemd-journald causes all kinds of dependency failures and drops you at an …