1建立中心日志
服务器
前的准备工作
设置良好的
网络
服务(DNS和NTP)有助于提高日志记录工作的精确性。在默认情况下,当有其他机器向自己发送日志消息时,中心日志服务器将尝试解析该机器的FQDN(fullyqualifieddomainname,完整)。(你能在设置中心服务器时用“-x”选项禁止他这样做。)如果syslog守护进程无法解析出那个地址,他将继续尝试,这种毫无必要的额外负担将大幅降低日志记录工作的效率。类似地,如果你的各个系统在时间上不同步,中心日志服务器给某个事件打上的时间戳就可能会和发送该事件的那台机器打上的时间戳不一致,这种差异会在你对事件进行排序分析时带来非常大的困扰;对网络时间进行同步有助于确保日志消息的时间准确性。如果想消除这种时间不同步带来的麻烦,先编辑/etc/ntp.conf文件,使其指向一个中心时间源,再安排ntpd守护进程随系统开机启动就能了。
2设置一个中心日志服务器
只须稍加设置,就能用syslog实现一个中心日志服务器。所有一台运行syslog守护进程的服务器都能被设置成接受来自另一台机器的消息,但这个选项在默认情况下是禁用的。在后面的讨论里,如无特别说明,有关步骤将适用于包括SUSE和RedHat在内的大多数Linux发行版本。我们先来看看怎么激活一个syslog服务器接受外来的日志消息:
1. 编辑/etc/sysconfig/syslog文件。
在“SYSLOGD_OPTIONS”行上加“-r”选项以允许接受外来日志消息。如果因为关于其他机器的DNS记录项不够齐全或其他原因不想让中心日志服务器解析其他机器的FQDN,还能加上“-x”选项。此外,你或许还想把默认的时间戳标记消息(--MARK--)出现频率改成比较有实际意义的数值,比如240,表示每隔240分钟(每天6次)在日志文件里增加一行时间戳消息。日志文件里的“--MARK--”消息能让你知道中心日志服务器上的syslog守护进程没有停工偷懒。按照上面这些解释写出来的设置行应该是如下所示的样子:
SYSLOGD_OPTIONS="-r-x-m240"
2.重新启动syslog守护进程。修改只有在syslog守护进程重新启动后才会生效。如果你只想重新启动syslog守护进程而不是整个系统,在RedHat机器上,执行以下两条命令之一:
/etc/rc.d/init.d/syslogstop;/etc/rc.d/init.d/syslogstart
/etc/rc.d/init.d/syslogrestart
3.如果这台机器上运行着iptables防火墙或TCPWrappers,请确保他们允许514号端口上的连接通过。syslog守护进程要用到514号端口。
4为中心日志服务器设置各客户机器
让客户机把日志消息发往一个中心日志服务器并不困难。编辑客户机上的/etc/syslog.conf文件,在有关设置行的操作动作部分用一个“@”字符指向中心日志服务器,如下所示:
[email=authpriv.*@192.168.1.40]authpriv.*@192.168.1.40[/email]
另一种办法是在DNS里定义一个名为“loghost”的机器,然后对客户机的syslog设置文件做如下修改(这个办法的好处是:当你把中心日志服务器换成另一台机器时,不用再修改每一个客户机上的syslog设置文件):
authpriv.*@loghost
接下来,重新启动客户机上的syslog守护进程让修改生效。让客户机在往中心日志服务器发送日志消息的同时继续在本地进行日志工作仍有必要,起码在调试客户机的时候不必到中心日志服务器查日志,在中心日志服务器出问题的时候还能帮助调试。
接下来在nginx 的机器进行配置syslog
首先在/etc/hosts/
192.168.127.239 logserver
接下来配置到/etc/syslog.conf 下进行配置。
日志服务器是
!local5.* @logserver ####注意这里有个 ! 不加上的话 会在日志服务器上重复显示日志,每条会显示两次。
执行完以后重启syslog
service syslog restart
然后去日志服务器192.168.127.239上进行配置
/etc/sysconfig/syslog
把
SYSLOGD_OPTIONS="m 0"
修改成
SYSLOGD_OPTIONS="-r -x-m 0"
保存
/etc/syslog.conf
local.* /data/log/nginx_access.log
保存
记住默认指定的日志目录是不会自动创建的需要手动创建目录
mkdir /data/log
service syslog restart
OK
现在我们去nginx服务器上去执行
tail -f /usr/local/nginx/logs/access.log |logger -t nginx_A -p local5.info &
然后这个时候你就可以去日志服务器上看到日志是实时写入到l/data/log/nginx_access.log 里面的。
可以分开存放也可以放到一个文件里面。
阅读(2798) | 评论(0) | 转发(0) |