如何从联网系统接收系统日志?


23

我想将Ubuntu配置为从DD-WRT路由器接收日志。路由器的配置屏幕包含以下部分:

DD-WRT系统日志

日志记录文档显示为:

如果希望将日志发送到远程系统,请输入该计算机的IP地址,该计算机也正在运行syslog实用程序(它需要一个开放的网络套接字才能接受路由器发送的日志)。

我以前从未(知道)使用过syslog。在Ubuntu中,我需要做什么才能使其接收这些日志?


我的Motorola Surfboard Extreme SBG901似乎具有与DD-WRT相似的设置。只是以为我会为此谷歌搜索其他人添加该关键字。
滚刀

Answers:


23

接收日志的主机将需要运行一些配置为侦听远程日志的syslog守护程序。Ubuntu中有许多syslog实现,但rsyslog通常建议这样做,并且默认情况下应安装。我无法从发布的链接中的文档中得知DD-WRT是通过TCP还是UDP发送日志,因此,如果您担心减少可通过网络访问的数量,则可能需要进行一些实验才能准确找到正确的设置主机上的端口。

有两种方法可以实现此目的:第一种更简单,但是在升级系统时可能需要重新集成。第二个稍微复杂一些,如果在更新过程中对syslog配置进行了重大更改,则可能导致令人困惑的结果。我会选择第二个,但您的偏好可能会有所不同。

首先是编辑/etc/rsyslogd.conf,然后#从以下几行中删除首字母:

#$ ModLoad imudp
#$ UDPServerRun 514

要么

#$ ModLoad imtcp
#$ InputTCPServerRun 514

二是创建一个新的文件,或许命名local-enable-tcp.conf/etc/rsyslog.d/,其内容如下:

#启用TCP Syslog接收
$ ModLoad imtcp
$ InputTCPServerRun 514

如果要使用单独的文件方法,并且需要UDP,请更改内容以匹配上面的UDP节。特定的文件名并不重要,但建议以“ local-”开头,因为此命名空间是为本地管理员配置保留的,并且必须以“ .conf”结尾,因为只有这样结尾的文件会自动包含在文件名中。 rsyslog配置。

如果您希望使用其他syslog实现,请检查该实现的配置和文档:缺省情况下,很可能已将syslog守护程序配置为不在网络上侦听,但应明确记录启用此常见情况的示例配置。


1
最好以两位数开头的文件名,并相对于其他现有的.conf文件建立顺序。
enzotib

嗯,那可能很复杂。软件包名称没有理由不能以两位数开头,并且.d / $ {package}-. conf都保留给软件包使用(尽管对于72-local-myconf.conf这样的冲突不太可能发生) )。其次,重要的是尝试编写配置文件,以使顺序并不重要。例如,由0access.conf由假设的“ 0access”包提供的配置文件将在大多数以两位数开头的配置文件之前应用。
Emmet Hikory 2011年

1
还可能需要更改您的日志文件的所有权:sudo chown syslog:adm /var/log/syslog或您命名为日志文件的任何名称。
滚刀

6

另一个选择是使用syslog-ng,易于使用,到目前为止可以使用!

sudo apt-get install syslog-ng

安装后,我们在/etc/syslog-ng/syslog-ng.conf中有一个conf文件。因此,只需使用我们的参数编辑该.conf文件,但是在此之前,请备份默认配置文件,以后可以使用你想调整一些参数

sudo mv /etc/syslog-ng/syslog-ng.conf /etc/syslog-ng/syslog-ng.conf.bak

现在创建新的配置文件并对其进行编辑!

sudo touch /etc/syslog-ng/syslog-ng.conf
sudo nano /etc/syslog-ng/syslog-ng.conf

因此,只需粘贴此基本配置即可正常工作:

# Listening to incoming UDP Syslog connections
source mysource { udp(); };

#Add the syslog targets:

destination dest { file("/var/log/Cisco$YEAR$MONTH$R_DAY.log"); };
#destination dest_other_server { udp("1.2.3.4" port(514)); };
#Create the filters that will be used to determine what to do with the received syslog message

#filter filter { ( host("2.3.4.5") and level(notice) and match("username=.*@domain\.local" value("MESSAGE") flags("utf8" "ignore-case")) ); };
filter myfilter { ( level(notice) ); };
#And putting it all together:

log { source(mysource); filter(myfilter); destination(dest);  };

如您所见,很容易。照顾自己!


-2

基本上,您在服务器上运行一个守护进程(称为syslogd),以使dd-wrt路由器将日志发布到该守护进程。

教程-http ://www.techiecorner.com/1479/how-to-setup-syslog-server-in-ubuntu/


5
避免张贴旧指南的地址,甚至不检查其指示是否仍然有效。该指南中命名的文件不再存在。Ubuntu使用rsyslog。
enzotib

@enzotib-虽然我同意它缺乏质量并且应该避免链接,但事实证明,这个答案提供了我在Ubuntu 8.04服务器上完成相同任务所需的一切。这里有三个答案,所有答案都针对生产系统中仍在使用的syslog的三个不同变体。这个答案很有用。它从我那里得到+1。
ghoti

是的,但这基本上是仅链接的答案。
Duncan X Simpson
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.