标签: rsyslog

CentOS 7 中的日志文件

在 CentOS 7 中,我如何定位和查看所有系统日志,这些日志告诉我谁试图进入系统、谁进入了系统、他们联系了哪些进程、他们完成了什么等等。我希望能够将每个活动链接到任一活动用户 ID 或远程 IP 地址。

我的var/log/目录包含许多资源,包括/var/log/messages/var/log/secure,但大多数文件都是类型的Binary (application/octet-stream),操作系统不知道如何打开它们,除非我将一些未知的查看程序与它们关联起来。此外,var/log/firewalld似乎不包含有用的信息。

我可以找到我的应用程序、我的数据库和 NginX/Apache 生成的所有日志。

logs firewall centos rsyslog systemd

8
推荐指数
1
解决办法
7万
查看次数

将 apt/dpkg 活动记录到系统日志

我的目标是使用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真的是唯一的选择吗?

dpkg apt rsyslog syslog

8
推荐指数
1
解决办法
2649
查看次数

如何禁用日志记录?

我最近了解到它journalctl占用了我的 16GB SD 卡(Raspberry Pi)的很大一部分:

\n
$ journalctl --disk-usage\nArchived and active journals take up 312.1M in the file system.  \n
Run Code Online (Sandbox Code Playgroud)\n

我没有这种感觉,journalctl并且在我的这台机器的用例中发挥journald作用。\n它是一个老式的 RPi,并且rsyslog也在运行。我估计我对它的需求和使用journalctl可能是“千载难逢”。因此,我决定禁用journald- which “feeds” journalctl。我认为这很简单,使用systemctlto stop,或者可能只是disableing ,systemd-journald.service这样它就不会在下次启动时启动。

\n

在拔掉插头之前,我决定做一些研究。没有找到数千个提供“操作方法”建议的参考文献,而是针对我的特定搜索词“如何禁用日志”的结果非常少。相反,结果主要提供了减少journald资源消耗的建议。我确实找到了一些让我犹豫的参考资料:

\n

ArchLinux 论坛中的一个旧帖子表明,不可能journald在没有影响的情况下禁用它;即"Masking systemd-journald causes all kinds of dependency failures and drops you at an …

rsyslog systemd systemd-journald

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

如何将具有唯一 id 子字符串的内核消息重定向到单独的日志文件(使用 `rsyslog`)?

我正在使用iptables的日志记录功能来调试我的网络活动。我使用带有--log-prefix参数的特定前缀来唯一标识内核日志中属于iptables输出的消息,例如::IPT::LOG::.

如何配置rsyslog以将这种方式标记的消息重定向到单独的日志文件中?手册页对rsyslog我来说看起来太神秘了。

logs iptables rsyslog

7
推荐指数
1
解决办法
4994
查看次数

rsyslog:在匹配的日志事件上执行脚本

我有以下行 /etc/rsyslog.conf

:programname, contains, "suhosin" /var/log/suhosin.log
Run Code Online (Sandbox Code Playgroud)

它将所有与 php 安全相关的事件记录到/var/log/suhosin.log. 这很好,但我希望 rsyslog 执行我的脚本action.sh而不是记录到文件。我怎么能那样做?

rsyslog

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

不要在 auth.log 中记录 cron 事件

在 my 中/etc/rsyslog.conf,我有以下行可以将auth设施登录到/var/log/auth.log

auth,authpriv.*           /var/log/auth.log
Run Code Online (Sandbox Code Playgroud)

但是该文件充斥着 cron 日志,例如:

CRON[18620]:  pam_unix(cron:session): session opened for user root by (uid=0)
CRON[18620]:  pam_unix(cron:session): session closed for user root
Run Code Online (Sandbox Code Playgroud)

我想摆脱 cron 日志,并且只有真正的“身份验证”事件被记录到该文件中。我的意思是,我想查看哪些用户已登录系统,或创建了su -.

我怎样才能做到这一点?

cron logs rsyslog

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

如何在 Docker 容器内配置日志记录?

我试图将 OpenVPN 服务器 dockerize(进入 Debian 8.2)(是的,我知道,已经有这样的容器)但是容器内部出现问题,服务器无法启动。

我决定检查日志,但是/var/log/syslog(我的主机上的 OpenVPN 日志)在容器内丢失。

我认为rsyslog没有安装并在 OpenVPN 安装之前将其安装添加到 Dockerfile。但这没有任何效果,syslog仍然丢失了。

我的 Dockerfile 是:

FROM debian:8.2
USER root
EXPOSE 53/udp
EXPOSE 1194/udp
EXPOSE 443/tcp
RUN apt-get update
RUN apt-get install -y rsyslog
RUN apt-get install -y openvpn
# ...
# Some configuration stuff
# ...
ENTRYPOINT service openvpn start && sh
Run Code Online (Sandbox Code Playgroud)

问题是:

  • 为什么 OpenVPNsyslog在我的主机 Debian 8.2 上默认安装后登录,而不是在容器内登录?我没有在我的主机上配置任何东西来强制 OpenVPN 日志到syslog. 这是默认行为。

  • 如何配置在 docker 容器内运行的 OpenVPN 服务器的日志记录?

debian rsyslog syslog docker containers

7
推荐指数
1
解决办法
9013
查看次数

rsyslog - 动作 AND 动作

我想创建规则来从数据发送facility到文件MySQL的数据库。

它如何实现?只需添加第二行,如:

syslog.*                         /var/log/syslog.log
syslog.*                         :ommysql:localhost,database,user,password
Run Code Online (Sandbox Code Playgroud)

或者有更正确的方法吗?

rsyslog syslog

6
推荐指数
1
解决办法
2752
查看次数

Linux 的 rsyslog 支持 RFC 5424 吗?

由于某种原因,rsyslogd似乎无法正确解释有效RFC 5424消息。即使 RFC 给出的例子也不起作用:

$ echo "<165>1 2003-08-24T05:14:15.000003-07:00 192.0.2.1 myproc 8710 - - %% It's time to make the do-nuts." | nc -w1 -Uu /dev/log
Run Code Online (Sandbox Code Playgroud)

日志行结果:

Dec  1 16:39:08 host 1 2003-08-24T05:14:15.000003-07:00 192.0.2.1 myproc 8710 - - %% It's time to make the do-nuts.
Run Code Online (Sandbox Code Playgroud)

这表明消息无法正确解释为RFC 5424消息,而是整个字符串被视为消息有效负载。

另一方面,旧RFC 3164格式被接受没有问题:

$ echo "<165>Dec  1 05:14:15 myproc[8710]: %% It's time to make the do-nuts."| nc -w1 -Uu /dev/log
Run Code Online (Sandbox Code Playgroud)

结果是正确的日志行:

Dec  1 16:44:31 host myproc[8710]: %% …
Run Code Online (Sandbox Code Playgroud)

linux rsyslog syslog

6
推荐指数
1
解决办法
7564
查看次数

cron:在未安装 MTA 时将错误消息发送到文件

当我的 crontab 中出现错误时,我收到此消息:

cron: No MTA installed, discarding output
Run Code Online (Sandbox Code Playgroud)

我不想在我的系统上安装 MTA,但我也不想错过这些错误消息。

cron 尝试通过邮件发送这些信息是在哪里配置的?我可以更改它,以便将这些消息发送到文件吗?(也许通过 sysylog)。

我不想记录所有 cron 消息,只想记录错误。

我的rsyslog.conf

cron.=info                    stop

*.*                          |/dev/xconsole
Run Code Online (Sandbox Code Playgroud)

不幸的是,似乎即使错误消息也有.info标签

我怎样才能只记录 cron 错误?或者,换句话说:我如何发送到日志文件,如果安装了 MTA,否则会发送到什么内容?

我的系统是 Debian 10,我用于rsyslog日志记录(无 systemd)

更新:

正如 @basin 所建议的那样,对每一行单独使用重定向是我到目前为止使用的解决方案,它几乎没有问题:

首先,正如我所说,我想要一个解决方案,将通常默认发送到 MTA 的内容重定向到其他位置,即|/dev/xconsole,无需单独指定每个谎言。

其次,如果我的 crontab 行中存在语法错误,则重定向将不起作用。Cron 仍然尝试通过 MTA 发送错误,并且我No MTA installed在日志中收到错误。

是否有某种方法可以重定向通过 MTA 发送的内容,以便将其发送(直接或通过 sysylog)到/dev/xconsole

附加问题:

当使用建议的解决方案时@Binarus,编写我自己的自定义sendmail脚本:

我可以不使用默认值/usr/sbin/sendmail,而是为自定义脚本指定其他位置,例如/usr/local/sbin/sendmail?中cron的信息在哪里?这是硬编码的,还是可以在 cron 的配置文件之一中进行配置?sendmail/usr/sbin/

cron logs debian rsyslog

6
推荐指数
1
解决办法
7478
查看次数