【问题标题】:Logging across multiple web servers跨多个 Web 服务器进行日志记录
【发布时间】:2010-12-02 17:46:20
【问题描述】:

我想知道人们如何处理跨多个 Web 服务器的日志记录。例如。假设有 2 个网络服务器,用户会话期间的一些事件由一个提供服务,一些来自另一个。您将如何将会话中的事件连贯地记录在一个地方(例如,不产生单点故障)?假设我们使用的是:ASP.Net MVC、log4net。

还是我看错了 - 我应该单独登录然后再合并吗?

谢谢,

S

更新

还请假设负载平衡器不会保证会话被卡在一台服务器上。

【问题讨论】:

  • 您是否正在记录到文本文件、数据库、事件日志或其他内容?
  • 文本会更好。我不想考虑 DB。

标签: asp.net logging log4net


【解决方案1】:

通常,您的负载平衡会在会话启动后将用户锁定到一台服务器。这样您就不必处理分布在多个服务器上的特定用户的日志了。

【讨论】:

  • 谢谢,但在这种情况下,负载平衡硬件不会提供“粘性会话”。
【解决方案2】:

您可以尝试的一件事是将日志文件放在所有 Web 服务器都可以访问的位置,并将 log4net 配置为写入它。然而,这可能是有问题的,因为多个进程试图写入同一个文件。我已经阅读了NLog,它在这种情况下可能会更好。

另外,log4net 常见问题解答有一个question and possible solution 来解决这个确切的问题

【讨论】:

    【解决方案3】:

    您肯定希望您的网络服务器在本地而不是通过网络登录。您不希望潜在的网络中断来阻止日志记录操作,并且您不希望网络操作的开销用于日志记录。您应该设置了日志轮换,并且您的所有网络服务器时钟都已同步。当日志轮换将您的日志文件滚动到新文件时,请将每个 Web 服务器中的完整日志文件发送到可以合并它们的公共目的地。我不是 .net 人,但您应该能够找到用于合并 IIS 日志(或您正在使用的任何 Web 服务器)的软件。然后分析合并的日志。此策略是最佳策略,除非您需要实时日志分析。你?可能不是。它对故障具有相当的弹性(假设您有冗余磁盘),因为如果服务器出现故障,您只需重新启动它并重新处理任何被中断的日志传送、日志合并或日志分析操作。

    【讨论】:

    • 嗨 Asaph,这听起来对我来说是最好的解决方案 - 我觉得合并可能是最实用的路线。我不需要实时,所以这很好。
    【解决方案4】:

    一个有趣的解决方案:

    • 有 2 个日志文件追加器

    • 本地机器中的第一个 如果出现网络故障,您将保留此日志。

    • 第二次远程登录到 unix syslog 服务(当然 非常一致的网络连接)

    我很久以前用过类似的方法,效果很好,有 许多用于分析 Unix 日志的好工具。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-13
      • 2010-11-28
      • 2015-11-27
      • 1970-01-01
      • 2012-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多