我有一个 Foreman 1.9.0 系统,使用 postgres 作为 RHEL 7.2 上的后端。
要求能够近乎实时地(5-10 分钟)将审计日志和报告发送给外部实体。
我一直在网上搜索,但一直无法确定这是否可行。我可以创建一个脚本,直接从数据库读取日志并将其输出到 xml 中。但从问责制的角度来看,这并不理想。
理想的输出解决方案是 XML,但 syslog 消息格式就足够了。
谢谢
答案1
我认为,鉴于这些严格的要求,您应该创建一个 Foreman 插件。请参阅https://theforeman.org/plugins/#3.WritingYourOwn寻求帮助或在邮件列表和 IRC 频道中提问。
Foreman 使用了“审计”一词(https://github.com/collectiveidea/audited) 来捕获对所有对象所做的更改。此 gem 将审计存储在名为“Audit”的对象中。您可以在 Foreman 插件中扩展此对象,并编写一个after_save
调用,以 XML 格式将其自身表示发送到您的外部服务器。这样,您的审计将自动发送,但是您应该小心并使操作异步并在与外部服务器的连接不起作用时捕获错误等...
另外(有点初级且容易出错),你可以编写一个 rake 任务(参见此处的示例https://github.com/theforeman/foreman/tree/develop/lib/tasks) 每隔 X 分钟收集一次所有审计信息,并以 XML 格式将其发送到外部服务器。实际上,这将是一个非常类似于您之前描述的脚本。
答案2
我还要补充一点,有一个现有的插件https://github.com/frimik/foreman_audited_notifications具有与您要求的基本/类似的功能。