标签: rsyslog

如何对日志轮换文件执行`tail -f`?

在长时间运行的系统上,我通常有一个终端

$ tail -f /var/log/kern.log
Run Code Online (Sandbox Code Playgroud)

或类似的东西打开。

但有时我必须重新启动此类命令,因为不再显示新消息。

我认为这是因为替换日志文件的日志轮换作业tail -f正在“观察”。

如何避免这种重启问题?

我可以调用tail这样它注意到旋转过程并做正确的事情吗?

(我在rsyslogd默认使用的 Ubuntu 11.04 系统上注意到了这个问题。)

logs logrotate rsyslog tail

124
推荐指数
1
解决办法
4万
查看次数

了解 Linux 中的日志记录

据我了解,Linux 内核会记录到/proc/kmsg文件(主要是与硬件相关的消息)和/dev/log套接字吗?还有其他地方吗?其他应用程序是否也能够向/proc/kmsg或发送消息/dev/log?最后但并非最不重要的,我是正确的,这是系统日志守护程序(rsyslog现在syslog-ng的),该检查的消息来自这两个地方,然后分发到那些像各种文件/var/log/messages或者/var/log/kern.log甚至是中央系统日志服务器?

syslog-ng rsyslog syslog linux-kernel

77
推荐指数
2
解决办法
6万
查看次数

添加新的系统日志工具

我想使用 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)

那么 - 有没有办法使用自定义设施名称?

logs rsyslog syslog

27
推荐指数
2
解决办法
4万
查看次数

rsyslog 不记录

这是一个奇怪的问题。

我正在 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 syslog systemd

18
推荐指数
2
解决办法
7万
查看次数

如果没有,如何告诉 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)

logs centos rsyslog

14
推荐指数
2
解决办法
3万
查看次数

rsyslogd 反复 HUP

请注意,对于 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)

linux rhel rsyslog vmware

14
推荐指数
1
解决办法
2万
查看次数

rsyslogd 占用了 20+ GB (!) 的 RAM - 要收集什么证据?

我有一个运行内核 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)

memory-leaks rsyslog

12
推荐指数
1
解决办法
7551
查看次数

我应该如何将 systemd 日志发送到专用日志服务器

过去,我使用 syslog-ng 或 rsyslog 将系统日志发送到网络上其他地方的专用日志服务器。然而,对于 systemd,诸如之前存储在 /var/log/secure 或 /var/log/auth.log (取决于您的发行版)中的 sudo 命令之类的东西。

我知道 /etc/systemd/journald.conf 有一个ForwardToSyslog=yes选项可以让我回到我的旧方式,但这似乎是一种不雅的倒退。systemd 是否具有将日志发送到中央日志服务器(如 Logrhythm、ELK 或类似服务器)的内置方法,或设置ForwardToSyslog=yes正确的方法来执行此操作?

logs rsyslog syslog systemd

12
推荐指数
1
解决办法
9968
查看次数

*.*;auth,authpriv.none -/var/log/syslog 行在 rsyslog 配置文件中是什么意思?

我试图理解该/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 代表没有给定设施的优先级。

您可以使用逗号 (",") 运算符在一个语句中指定多个具有相同优先级模式的设施。您可以指定任意数量的设施。请记住,仅采用此类语句中的设施部分,将跳过优先级部分。

可以使用分号 (";") 分隔符为单个操作指定多个选择器。请记住,选择器字段中的每个选择器都能够覆盖前面的选择器。使用此行为,您可以从模式中排除某些优先级。

所以,这是很容易理解的,但是右边的文件路径呢?它可以只是一条路径,也可以是它之前|-之前的路径(或者甚至是其他东西)。三者有什么区别?

debian rsyslog

11
推荐指数
1
解决办法
3万
查看次数

使用 rsyslog 将 syslog 消息解析为单独的 MySQL 表

开箱即用的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)

logs rsyslog

10
推荐指数
1
解决办法
5079
查看次数