日志系统之rsyslog

关于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