当前位置: 首页>>技术教程>>正文


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

, ,

问题描述

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

并且其logging documentation读取:

If you wish to send logs to a remote system, enter the IP address of that machine which is also running a syslog utility (it needs an open network socket in order to accept logs being sent by the router).

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

最佳思路

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

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

首先是编辑/etc/rsyslogd.conf,并从以下几行中删除初始的#


#$ModLoad imudp
#$UDPServerRun 514

要么


#$ModLoad imtcp
#$InputTCPServerRun 514

第二种是创建一个新文件,其内容可能在/etc/rsyslog.d/中名为local-enable-tcp.conf,其内容如下:


# enable TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514

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

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

次佳思路

另一个选择是使用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);  };

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/11244.html,未经允许,请勿转载。