我们正在建立一个集中式日志服务器,它从许多设备和服务器接收日志并将其存储到数据库中。
中央服务器上的 syslog 是 syslog-ng。之所以选择它,是因为其配置简单且易于管理。日志服务器本身托管日志数据库 (mariadb) 和 Web 界面 (apache/mod_php)。
拥有日志服务器的全部意义在于能够在一个地方分析数据。为此,我们选择了 Adiscon LogAnalyzer,它看起来是一个维护良好、成熟且功能丰富的项目。
LogAnalyzer 手册建议使用 MonitorWare 模式。例如,安装手册有一个“MySQL 数据库说明”部分,其中说明它支持“php-syslog-ng”模式以用于过渡目的,但不会充分利用它,而且该模式效率不高,建议改用 MonitorWare 模式。(MonitorWare 是 Adiscon 的另一款产品。)
此外,它建议使用 rsyslog,因为它应该自动在数据库中创建结构(Adiscon 似乎也支持 rsyslog,真是巧合)。除此之外,没有任何地方特别记录这种模式。
有一个2011 年的问题关于如何使用此架构配置 syslog-ng。这也是少数几个以清晰方式呈现架构的地方之一,但它链接到另一个当前不可用的资源(archive.org 也对此一无所知)。
所以问题仍然没有答案:如何正确设置使用 MonitorWare 模式的 Syslog-NG 日志记录到数据库?
答案1
您可以配置syslog-ng 的 sql() 目标将您需要的列和值放入数据库中。检查您的数据库方案以找出您需要哪些列,以及将哪个值放入哪些列中。