今天北京网络工程师给我一个需求,要搭建一个syslog服务,并且接受远程路由器的日志,后来google一下发现用syslog-ng搭建比较方便,搭建还是很简单,一顿google,找到一篇文章的,http://hi.baidu.com/qingchunranzhi/item/de6fce0795c23bd572e6766a。

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

rpm -ivh epel-release-6-8.noarch.rpm

yum --enablerepo=epel install syslog-ng eventlog syslog-ng-libdbi

[root@logsys0 data]# chkconfig rsyslog off; chkconfig syslog-ng on

[root@logsys0 data]# service rsyslog stop;service syslog-ng start

关闭系统日志记录器:                                       [确定]

启动 syslog-ng:                                           [确定]
#重新加载配置:service syslog-ng reload

由于我得server在内网,所以就把selinux 和iptables 都关闭了。关键的问题来了,下面是如何监控远程路由器的日志,网络工程师已经告诉我,他已经在router上将日志指向我得server了,以前从来没配置过,于是又是一顿google,貌似国内的没有几个配置成功的文章,包括chinunix论坛上得一个类似的问题都没有得到回答,于是挂上代理,用英文在google一次,找到了大牛的一篇文章教给你如何收取远程cisco router的日志http://paulpodolny.blogspot.com/2009/12/syslog-ng-cisco-configuration.html。

首先你要在文件/etc/sysconfig/syslog-ng 里机上下面两行

SYSLOGD_PARAMS="-r"

SYSLOG_DAEMON="syslog-ng"

第一行是让syslog-ng作为一个日志服务器

第二行是让syslog-ng作为默认的日志服务

接下来是配置/etc/syslog-ng/syslog-ng.conf文件

保留原来的配置,在下面加上一下语句

source s_udp {
        udp();
};
destination df_udp {
        file("/var/log/syslog/logs");
};
                                                       
log {
        source(s_udp);
        destination(df_udp);
};

然后 service syslog-ng restart, netstat -lntup|grep 514,查看一下syslog-ng有没有在监听,如果有,这时候就可以通知网络管理员在路由器运行 logging ip addr,这里的ip addr 是我syslog server的ip地址,这时候tailf /var/log/syslog/logs 就可以看到远程的数据了。