关于Rsyslog:
Rsyslog 可以理解为一个 sysklogd 的多线程增强版,其在 sysklogd 的基础上扩展了很多其他功能,如:数据库支持(Mysql、Oracle、PostgreSQL等)、日志内容筛选、定义日志格式模板等。除了默认的 UDP 协议外,Rsyslog 还支持 TCP 协议来接受日志。可以对输出的文件进行自动压缩并支持多个TCP侦听以及性能方面的提升。使用 Rsyslog 可以有效减轻系统磁盘IO,并且其支持TCP传输非常可靠,可以对日志进行过滤,提取有效日志。
rsyslog可以设置模块,一种类型的日志设置成一个模块,多线程来运行
rsyslog经常被用来做集中式日志服务器,就是基于很好的通讯,下面通过案例讲解:
首先在两台机器安装rsyslog,一台作为client,一台作为server
apt-get install rsyslog
修改日志服务器的配置文件,注释掉这几行:
#$ModLoad imudp
#$UDPServerRun 514
#$ModLoad imtcp
#$InputTCPServerRun 514
重启rsyslog
sudo /etc/init.d/rsyslog restart
修改日志客户端的配置文件:
vi /etc/hosts
添加日志服务器的ip和主机名,可以ping通进行验证
vi /etc/rsyslog.conf
在最后加上如下行,目的是让Linux写日志的同时写一份到远端的服务器机器上
*.* @主机名
重启服务
$ sudo /etc/init.d/rsyslog restart
验证:在客户端日志输入:
logger "hi,man"
在服务端:
tail -f /var/log/syslog
同样输出相应的语句
ps:rsyslog在我的本本机出现过一个问题,就是修改了配置之后,重启rsyslog,我使用
service rsyslog restart
是不成功的,只能kill掉这个进程,然后重启rsyslog才成功,不知道是不是个例
/etc/init.d/rsyslog start