我一直在研究 apache 日志的远程日志记录,我发现的所有内容都涉及管道传输到记录器。
两个问题:
- 还有其他方法可以远程记录 apache 日志吗?
- 通向记录器的管道是否稳定?
谢谢你!
杰夫
答案1
1)如标签所示,rsyslog 可以做到这一点。将日志写入文件并使用http://www.rsyslog.com/doc/imfile.html。
2)是的。logger
是一个稳定的程序 apache 的管道机制是稳定的(例如,管道rotatelogs
已经使用了很长一段时间)。
答案2
我们用日志存储,一个开源日志聚合工具。它可以从多台机器中提取 Apache 日志,也可以从许多其他应用程序中提取日志。最好的方法是将 apache httpd 日志的输出格式化为 json 格式,如下所示:
LogFormat "{ \"@timestamp\": \"%{%Y-%m-%dT%H:%M:%S%z}t\", \"@fields\": { \"client\": \"%{X-Forwarded-For}i\", \"virtualhost\": \"%{Host}i\", \"duration_usec\": %D, \"status\": %s, \"request\": \"%U%q\", \"method\": \"%m\", \"referrer\": \"%{Referer}i\" } }" logstash_json
然后安装 logstash 并让其将所有日志收集到中央服务器中。它非常可靠,能够经受住网络中断(logstash 会记住它所处的位置),并且具有非常漂亮的用户界面和搜索功能。
答案3
- 通向记录器的管道是否稳定?
许多程序将其输出通过管道传输到logger
。它与任何其他软件一样稳定。
logger
简单易用。logger
利用您现有的 syslog 配置。它不需要对 syslog 或 rsyslog 进行任何调整,也不需要向需要日志的用户授予超级用户权限。记录器将日志发送到本地系统上的 syslog,然后 syslog 处理其余部分。
请注意,syslog 过去一直使用 UDP,UDP 旨在成为一种低开销、“不可靠”的协议。请参阅RFC5426 - “通过 UDP 传输 Syslog 消息”,第 4. 可靠性注意事项部分。如果您想要可靠的系统日志,请使用 TLS,请参阅RFC5425,Syslog 的传输层安全性 (TLS) 传输映射。