Node.js 日志记录设计模式,每个客户机一个日志,而不是查询统一日志 我试图在两种模式之间进行选择,甚至是在我的应用程序中处理日志的另一种模式。p>

Node.js 日志记录设计模式,每个客户机一个日志,而不是查询统一日志 我试图在两种模式之间进行选择,甚至是在我的应用程序中处理日志的另一种模式。p>,node.js,express,logging,elastic-stack,scalability,Node.js,Express,Logging,Elastic Stack,Scalability,我有一个nodejs express服务器,在自动扩展组中为客户端提供服务 理想情况下,目标是能够非常容易地看到每个用户的活动,以便我可以在生产中排除故障 方法1,使用ELK根据某些json字段(如customerId requestId等)进行集中日志记录以进行查询 方法2,为每个客户创建一个日志文件管理器,并根据需要查询每个文件 在这两种方法中,日志文件都将被旋转 我觉得为每个客户创建一个日志文件并不合适,特别是考虑到拥有数百万客户的情况,但从性能方面来说 根据客户ID查询100万个文件,然

我有一个nodejs express服务器,在自动扩展组中为客户端提供服务

理想情况下,目标是能够非常容易地看到每个用户的活动,以便我可以在生产中排除故障

方法1,使用ELK根据某些json字段(如customerId requestId等)进行集中日志记录以进行查询

方法2,为每个客户创建一个日志文件管理器,并根据需要查询每个文件

在这两种方法中,日志文件都将被旋转

我觉得为每个客户创建一个日志文件并不合适,特别是考虑到拥有数百万客户的情况,但从性能方面来说

  • 根据客户ID查询100万个文件,然后查询一个小得多的文件以获取所需信息
  • 基于customerID等查询集中式日志文件过滤结果
  • 一种方法的性能是否明显优于另一种方法?目前这个行业的最佳实践是什么?是否有更好的方法来考虑?


    最后,AWS服务似乎根据您查询的文件大小收费。因此,一种方法是否比另一种更具成本效益?

    根据我的经验,第一种方法是可行的。使用这种方法,您可以根据需要进行搜索。目前,您可能只需要搜索customerId,但稍后您可能需要一些其他数据字段来了解系统的整体运行状况。性能与分配给ELK stack的资源有关。这个解决方案可能会影响它,但我想说,它并没有那么重要。你说的AWS服务到底是什么意思?如果它是ELK,那么它的价格是由服务器实例+您需要的总磁盘(包括备份和快照等)+bandwith计算的。我认为两者之间没有任何区别。感谢您的回复!就aws服务而言,我的意思更具体地说是与cloudwatch insights之类的东西集成。不过,我可能误解了他们的定价模式。我还在想麋鹿和洞察的能力在哪里重叠。