一直想要统一收集管理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 即可。
五月 2009 | ||||||
一 | 二 | 三 | 四 | 五 | 六 | 日 |
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |