在长时间运行的系统上,我通常有一个终端
$ tail -f /var/log/kern.log
Run Code Online (Sandbox Code Playgroud)
或类似的东西打开。
但有时我必须重新启动此类命令,因为不再显示新消息。
我认为这是因为替换日志文件的日志轮换作业tail -f正在“观察”。
如何避免这种重启问题?
我可以调用tail这样它注意到旋转过程并做正确的事情吗?
(我在rsyslogd默认使用的 Ubuntu 11.04 系统上注意到了这个问题。)
据我了解,Linux 内核会记录到/proc/kmsg文件(主要是与硬件相关的消息)和/dev/log套接字吗?还有其他地方吗?其他应用程序是否也能够向/proc/kmsg或发送消息/dev/log?最后但并非最不重要的,我是正确的,这是系统日志守护程序(rsyslog现在,syslog-ng的),该检查的消息来自这两个地方,然后分发到那些像各种文件/var/log/messages或者/var/log/kern.log甚至是中央系统日志服务器?
我想使用 syslog 来记录来自我的基于 PHP 的站点的消息。我的问题是 - 我可以添加自定义设施名称吗?我知道有一些预定义的设施,例如:
auth, authpriv, cron, dæmon, kern, lpr, mail, mark, news, syslog, user, UUCP and local0 through local7.
Run Code Online (Sandbox Code Playgroud)
据我所知,我可以为此使用 local0 - local6 设施。
但我只是觉得如果我可以在 syslog 中添加这样的东西:
mySiteName.* /var/log/mySiteName.log
Run Code Online (Sandbox Code Playgroud)
其他人在视觉上更容易理解。不幸的是,上面的行导致:
rsyslogd-3000: unknown facility name "mySiteName"
Run Code Online (Sandbox Code Playgroud)
那么 - 有没有办法使用自定义设施名称?
这是一个奇怪的问题。
我正在 RHEL7 VM 上测试 chrony/ntp 服务,并正在重置其时间以及主机的时间。一旦我对它感到满意,我检查/var/log/messages并意识到它已经有一段时间没有改变了。
现在无论我做什么,除了重新启动 rsyslog 服务本身之外,什么都没有被记录;当我这样做时:
Apr 15 13:59:43 mymachine1 rsyslogd: [origin software="rsyslogd" swVersion="7.4.2" x-pid="2847" x-info="http://www.rsyslog.com"] exiting on signal 2.
Apr 15 13:59:59 mymachine1 rsyslogd: [origin software="rsyslogd" swVersion="7.4.2" x-pid="2853" x-info="http://www.rsyslog.com"] start
Apr 15 14:00:11 mymachine1 rsyslogd-3000: sd_journal_get_cursor() failed: 'Cannot assign requested address'
Run Code Online (Sandbox Code Playgroud)
尝试诸如logger test不记录之类的事情,似乎除了 rsyslog 自己的消息之外别无其他。当我使用-n -N1参数手动运行 rsyslog 时,我得到:
rsyslogd: version 7.4.2, config validation run (level 1), master config /etc/rsyslog.conf
rsyslogd: End of config validation run. Bye
Run Code Online (Sandbox Code Playgroud)
由于某种原因,似乎没有任何东西可以通过 rsyslog 登录。同一主机上的第二个相同的虚拟机(它没有经历完全相同的循环,反复禁用 …
rsyslog 的默认行为是将跟踪附加到现有日志文件。
现在,我已经看到(CentOs,Scientific Linux),当 rsyslog 已经运行时,您删除日志文件(例如,专门用于记录应用程序中的日志跟踪的文件),然后运行您的应用程序,rsyslog不会创建日志文件并且不会记录任何痕迹。
是否有一个配置选项可以告诉 rsyslog 在附加跟踪之前创建一个日志文件?
注意:执行 aservice rsyslog restart将强制创建一个空的日志文件。
rsyslog.conf(未添加任何内容)
# rsyslog v5 configuration file
# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html
# If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html
#### MODULES ####
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imklog # provides kernel logging support (previously done by rklogd)
#$ModLoad immark # provides --MARK-- message capability
$SystemLogRateLimitInterval 1
$SystemLogRateLimitBurst 50000
# Provides …Run Code Online (Sandbox Code Playgroud) 请注意,对于 VM 框,获取 rsyslogd 进程得到 HUPed 的日志。除了一些论坛上的一些帖子说这是为了logrorate之外,没有找到任何想法。任何想法如何解决/解决这个问题..
messages-20141011:2014-10-10T04:02:02.054134-06:00 udr-oradl01 rsyslogd: [origin software="rsyslogd" swVersion="5.8.12" x-pid="364" x-info="http://www.rsyslog.com"] rsyslogd was HUPed
messages-20141011:2014-10-11T04:02:02.079917-06:00 udr-oradl01 rsyslogd: [origin software="rsyslogd" swVersion="5.8.12" x-pid="739" x-info="http://www.rsyslog.com"] rsyslogd was HUPed
messages-20150124:2015-01-24T04:02:01.497596-07:00 udr-oradl01 rsyslogd: [origin software="rsyslogd" swVersion="5.8.12" x-pid="819" x-info="http://www.rsyslog.com"] rsyslogd was HUPed
Run Code Online (Sandbox Code Playgroud) 我有一个运行内核 3.13.0-74 和 32GB RAM 的 Ubuntu 14.04.3 机器,它的特点是一个 rsyslogd 进程变得疯狂:
$ ps -auxww | grep rsyslog
syslog 16212 0.7 64.0 27966168 21070336 ? Ssl Jan04 180:31 rsyslogd -c 5 -x
$ free -m
total used free shared buffers cached
Mem: 32142 31863 278 228 9 363
-/+ buffers/cache: 31490 651
Swap: 16383 11937 4446
Run Code Online (Sandbox Code Playgroud)
我知道 ps 的输出不能完全依赖等,但肯定有点高!我还有两台具有相同软件/软件(同时运行)的兄弟机器,并且在这两个兄弟机器上,rsyslogd 的表现更好(每台机器仍然使用大约 3.5GB)。
这是 rsyslogd 7.4.4,我知道在较新版本中修复了内存泄漏。
我的问题:在我急于升级之前,如果可能的话,我想收集一些证据来证明我确实遇到了那个漏洞。我现在已经让 rsyslogd 运行了,但是用不了多久它就会搅动所有的交换,所以需要尽快采取行动......
我收集证据的一件事是atop。这清楚地显示了泄漏开始发生的时间(我不记得当时对盒子做了什么特别的事情)。有趣的是,在内存开始增长的同时,磁盘写入活动急剧下降——尽管它并没有完全停止。文件系统在容量方面很好。
$ atop -r atop_20160117 | grep …Run Code Online (Sandbox Code Playgroud) 过去,我使用 syslog-ng 或 rsyslog 将系统日志发送到网络上其他地方的专用日志服务器。然而,对于 systemd,诸如之前存储在 /var/log/secure 或 /var/log/auth.log (取决于您的发行版)中的 sudo 命令之类的东西。
我知道 /etc/systemd/journald.conf 有一个ForwardToSyslog=yes选项可以让我回到我的旧方式,但这似乎是一种不雅的倒退。systemd 是否具有将日志发送到中央日志服务器(如 Logrhythm、ELK 或类似服务器)的内置方法,或设置ForwardToSyslog=yes正确的方法来执行此操作?
我试图理解该/etc/rsyslog.conf文件,但我遗漏了一些东西。例如,这是文件的一部分:
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
cron.* /var/log/cron.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
lpr.* -/var/log/lpr.log
mail.* -/var/log/mail.log
user.* -/var/log/user.log
Run Code Online (Sandbox Code Playgroud)
根据这个页面:
该工具是以下关键字之一:auth、authpriv、cron、daemon、kern、lpr、mail、mark、news、security(与 auth 相同)、syslog、user、uucp 和 local0 到 local7。
优先级是以下关键字之一,按升序排列:debug,info, notice,warning,warn(同warning),err,error(同err)crit,alert,emerg,panic(同emerg)。关键字 error、warn 和 panic 已被弃用,不应再使用。优先级定义了消息的严重性。
星号(“*”)代表所有设施或所有优先级,具体取决于它的使用位置(句点之前或之后)。关键字 none 代表没有给定设施的优先级。
您可以使用逗号 (",") 运算符在一个语句中指定多个具有相同优先级模式的设施。您可以指定任意数量的设施。请记住,仅采用此类语句中的设施部分,将跳过优先级部分。
可以使用分号 (";") 分隔符为单个操作指定多个选择器。请记住,选择器字段中的每个选择器都能够覆盖前面的选择器。使用此行为,您可以从模式中排除某些优先级。
所以,这是很容易理解的,但是右边的文件路径呢?它可以只是一条路径,也可以是它之前|或-之前的路径(或者甚至是其他东西)。三者有什么区别?
开箱即用的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)