我有兴趣将我的 Apache 日志记录到 MySQL(基本上是为了更容易分析……并且,为了防止数据库变得庞大,我正在考虑定期清除超过 XX 个月的请求)
谷歌搜索大多建议使用mod_log_sql_mysql
,但这个包似乎不适用于 CentOS 7。我偶然发现了一个有趣的页面这里其中作者使用 Apache 的自定义日志模块通过管道写入客户mysql
端,但这似乎效率很低(为每个日志条目生成一个 mysql 客户端?或者有没有办法让 Apache 以不太频繁的批处理进行日志更新?)。
但是那个页面给了我一个想法,也许可以编写一个守护进程来提供一个 Apache 可以写入的 unix 套接字或管道,并且该守护进程可以维护与 MySQL 守护进程的开放连接或者也许只是一个使用 inotify 或 fswatch 来监视正常文本日志变化的守护进程。
但是,在我开始这些项目之前,有人对此有什么想法吗:
- CentOS 7 真的没有 mod-log-ssl-mysql 吗?
- 如果不是,这些方法之一(为每个条目调用 mysql、使用守护进程监视管道或使用守护进程监视正常文本日志)是否似乎是更好的途径?
- 记录到数据库只是一个糟糕的想法吗?我应该忘记我曾经有过这样的想法吗?
我想编写自己的守护进程的优点之一是我可以用数据库做一些聪明的事情......而不是将所有内容都记录到单个表中,而是可以为每个请求的文件路径(因为这些文件路径往往很长)在单独的表中提供一个条目,然后只需在请求日志中通过主键引用它即可。