Pages

Monday, 29 October 2012

将Apache的日志发送到syslog服务器

一直想要统一收集管理Apache的日志,一来可以较实时的分析系统的负载情况、分析系统问题,另一个,也可以把收集日志的工作分散到平时,分散带宽使用,并且解决日志合并问题。
想到的解决方法主要有两个:
第一,使用haproxy。
haproxy本身刚好就支持将日志以udp的方式发送给syslog服务器。看上去完美、感觉上官方。
第二,使用/bin/logger。
这个,是我晚上发梦的时候想到的。试图将CustomLog 管道给/bin/logger,再由本地的syslog forward到远程统一的syslog服务器上。实验了一下,居然成功了。就是绕了那么一道弯子,感觉不太完美。
PS:
发布之后,自己搜了一下,发现了下文:http://www.lslnet.com/linux/dosc1/32/linux-247167.htm
解决方法倒也差不多,不过多了些详细的描述,很实用。
并且要注意:至少默认的syslog配置会将短时候内重复的日志记录给于提示,并不记录:
May  3 14:31:51 localhost last message repeated 99 times
另外,将nginx的日志发送到syslog:
mkfifo  /srv/logs/access_log.fifo
将 nginx 的日志写到这个 管道文件上
然后:logger -f /srv/logs/access_log.fifo 即可。