Cloud Foundry上的业务审计事件



我在CloudFoundry上部署了一些spring-boot微服务,我必须实现传播并存储(到存储库(它们发出的业务审计事件。

我可以用几种方法来做,例如:

  1. 将审核事件发布到Source(Spring Cloud Stream/RabbitMQ(,并由Sink服务将事件写入存储库来使用它
  2. 将审核事件发布为自定义应用程序日志,并通过log-consuming service筛选并将事件写入存储库来使用它
  3. 使用internal CF's mechanism作为新的自定义log type或自定义audit event发布审核事件-我认为这个选项不是个好主意,但我可能错了

有什么推荐的方法/模式可以在Cloud Foundry平台上实现这个问题吗?


编辑

所有的方法都符合(在我看来(12因素规则,但每种方法都有其优缺点:

  • (1(春云流
    • +确保交付(事件不会丢失(
    • +允许使用路由(RabbitMQ(
    • -需要连接到消息代理(不像记录器那么简单(
  • (2(日志消耗服务
    • +很简单
    • -日志可能丢失
    • -审计biznes信息传播太广-GDPR
  • (3(新CF的日志类型
    • -可能会迫使CF发生变化

我要用一个问题来回答你的问题。您的"业务审核日志"究竟是什么?如果你丢了一些会有问题吗?

如果答案是,并且丢失哪怕一个日志都是不可接受的,那么我会认为它们不是真正的日志,而是业务记录(可能只是看起来像日志(。在这种情况下,将记录存储在保证存储的数据库或其他服务中。这是一项额外的工作,但你需要确保这些记录被正确存储,这样额外的工作是有保证的。

如果答案是no,并且丢失部分甚至全部(为最坏的情况做好计划(这些日志是可以接受的,那么我建议将它们写入STDOUT。Cloud Foundry将为您处理这些日志的路由,因此非常简单。如果你想将syslog drain发送到日志消耗服务,你可以绑定它们,或者你可以实现Logcollector喷嘴,直接从CF读取日志。从应用程序的角度来看,这并不重要,你甚至可以稍后改变主意,不需要更新你的应用程序。

希望能有所帮助!

在我的应用程序中,我坚持使用12因素应用程序规则。

第11条规则是:将日志视为事件流

这是关于日志的重要部分:

一个十二因素应用程序从不关心路由或存储其输出流。它不应该试图写入或管理日志文件。而是每个正在运行的进程写入其事件流,没有缓冲,到stdout。在当地开发期间,开发商将在终端的前景中查看此流,以观察应用程序的行为。

在暂存或生产部署中,每个流程的流将由执行环境捕获,并与所有来自应用程序的其他流,并路由到一个或多个最终流查看和长期存档的目的地。这些档案目的地对应用程序不可见或不可配置,以及而是完全由执行环境管理。提供开源日志路由器(如Logplex和Fluentd(为此目的。

因此,建议的方法是将日志写入stdout。

相关内容

  • 没有找到相关文章

最新更新