是否建议将日志直接从PHP应用程序发送到ElasticSearch?还是总是更好地存储到文件,并使用文件节拍来传送日志?我很熟悉直接发送给ES的C#和Serilog实现,而且我们从来没有遇到过问题,但我想知道是否可以在不严重影响性能的情况下使用Monolog来实现PHP应用程序。我假设Serilog能够异步发送日志,我不确定PHP上的Monolog实现是否能够这样做,或者只要不频繁的错误日志(但是info/debug日志记录会降低性能),直接发布就可以了。有人有这样做的经验吗?对于更多的背景,我们将使用AWS OpenSearch,而PHP应用程序也将运行在ECS/Fargate容器中的AWS中,因此它将在同一个网络中运行。
发布于 2021-11-07 19:53:41
就我个人而言,我建议将日志记录到一个文件中,然后再发送,不管您最终选择的是哪个数据存储。
原因是,否则您需要处理客户端中的大量逻辑--负载平衡/故障转移、重试、错误处理、背压--尽管另一个用于该数据存储的客户端库可能会将其中的一些抽象出来,但它可能不是最佳的位置。
最大的问题将是背压力。如果发生了延迟或停止登录到数据存储的事件,会发生什么情况?您是否将日志保存在内存中,然后稍后重试?你会一直阻塞直到日志被储存起来吗?你是如何管理这些方面的?
如果您登录到一个文件(甚至是容器的stdout ),您的代码就有了相当清晰的划分点。您可能会备份日志,如果您需要检查它,您可以使用特定于任务的工具来发送日志。
https://stackoverflow.com/questions/69854717
复制相似问题