我们知道,使用“@IP:端口”或“@@IP:端口”的格式可以把日志发送到远程主机上,那么这么做有什么意义吗?
我们知道,使用“@IP:端口”或“@@IP:端口”的格式可以把日志发送到远程主机上,那么这么做有什么意义吗?
假设我需要管理几十台服务器,那么我每天的重要工作就是查看这些服务器的日志,可是每台服务器单独登录,并且查看日志非常烦琐,我可以把几十台服务器的日志集中到一台日志服务器上吗?这样我每天只要登录这台日志服务器,就可以查看所有服务器的日志,要方便得多。
如何实现日志服务器的功能呢?其实并不难,不过我们首先需要分清服务器端和客户端。假设服务器端的服务器 IP 地址是 192.168.0.210,主机名是 localhost.localdomain;客户端的服务器 IP 地址是 192.168.0.211,主机名是 www1。我们现在要做的是把 192.168.0.211 的日志保存在 192.168.0.210 这台服务器上。实验过程如下:
#服务器端设定(192.168.0.210): [root@localhost ~]# vi /etc/rsyslog.conf …省略部分输出… # Provides TCP syslog reception $ModLoad imtcp $InputTCPServerRun 514 #取消这两句话的注释,允许服务器使用TCP 514端口接收日志 …省略部分输出… [root@localhost ~]# service rsyslog restart #重启rsyslog日志服务 [root@localhost ~]# netstat -tlun | grep 514 tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN #查看514端口已经打开 #客户端设置(192.168.0.211): [root@www1 ~]# vi /etc/rsyslog.conf #修改日志服务配置文件 *.* @@192.168.0.210:514 #把所有日志采用TCP协议发送到192.168.0.210的514端口上 [root@www1 ~]# service rsyslog restart #重启日志服务
这样日志服务器和客户端就搭建完成了,以后 192.168.0.211 这台客户机上所产生的所有日志都会记录到 192.168.0.210 上。比如:
#在客户机上(192.168.0.211) [root@wwwl ~]# useradd zhangsan #添加zhansan用户提示符的主机名是www1) #在限务器(192.168.0.210)上 [root@localhost ~]# vi /var/log/secure #査看服务器的secure日志(注意:主机名是localhost) Aug 8 23:00:57 wwwl sshd[1408]: Server listening on 0.0.0.0 port 22. Aug 8 23:00:57 wwwl sshd[1408]: Server listening on :: port 22. Aug 8 23:01:58 wwwl sshd[1630]: Accepted password for root from 192.168.0.101 port 7036 ssh2 Aug 8 23:01:58 wwwl sshd[1630]: pam_unix(sshd:session): session opened for user root by (uid=0) Aug 8 23:03:03 wwwl useradd[1654]: new group: name=zhangsan, GID-505 Aug 8 23:03:03 wwwl useradd[1654]: new user: name=zhangsan, UXD=505, GID=505, home=/home/zhangsan, shell=/bin/bash Aug 8 23:03:09 wwwl passwd: pam_unix(passwd:chauthtok): password changed for zhangsan #注意:查看到的日志内容的主机名是www1,说明我们虽然查看的是服务器的日志文件,但是在其中可以看到客户机的日志内容
需要注意的是,日志服务是通过主机名来区别不同的服务器的。所以,如果我们配置了日志服务,则需要给所有的服务器分配不同的主机名。