【问题标题】:Measuring server uptime测量服务器正常运行时间
【发布时间】:2012-03-31 22:30:43
【问题描述】:

我正在创建一个游戏服务器列表,并且我想测量某些服务器的正常运行时间(具体来说,正常运行时间应该以百分比显示)。

我为我的脚本配置了一个 cronjob,它每 5 分钟检查一次服务器是否启动或关闭,因此我可以轻松获取服务器状态。

我需要了解如何根据上述数据衡量每台服务器的正常运行时间。脚本每执行一分钟,我就必须为每台服务器节省停机和开机时间?

【问题讨论】:

    标签: php linux cron uptime


    【解决方案1】:

    如果您不关心很多细节,而只需要上下班时间。然后,您可以在一个文件中保存 2 个数字,一个是当前百分比,另一个是脚本采取的当前度量值。

    例如:'96 800'。

    然后,每当执行脚本时,使用这个公式,假设百分比(96)为 X,保存次数为 Y(800),当前度量为 Z(0 或 1)

    X=X/100;
    X=(X*Y+Z)/(Y+1);  //You get the new value of the percentage, X. Be careful as they need to be long values.
    Y=Y+1;    //And the current number of interactions.
    X=X*100;
    

    这当然只是伪代码,不会立即生效,只是为了让您了解一种实现方式。您还必须包含一种读取文件并将其保存在包含这 2 个数字的页面的任何位置的方法。

    正如 Jamie 所说,这是假设尽管服务器已关闭,但 crontime 仍在工作。

    PS,您也可以从其他服务器添加一个系统来检查该服务器的正常运行时间,但这需要进行统计计算(当添加许多其他服务器时,误差趋于 0,但这太难了)因为您还需要考虑其他服务器的正常运行时间...

    【讨论】:

    • 然后,根据你的公式,服务器正常运行时间在离线时会减少,在在线时会增加,对吧?
    • 没错。如果 Z=0,它会这样做(对于给定的示例)X=0.96*800/801,这实际上减少了正常运行时间,即 800/801
    【解决方案2】:

    您可以解析/proc/uptime 文件。它是 Linux 上的文本文件(您应该按顺序阅读),提供服务器机器的正常运行时间:

       % cat /proc/uptime 
       129657.69 506917.57
    

    proc(5) 手册页中的更多详细信息。

    PS。读取 /proc/ 文件系统(带有伪文件)时不涉及真正的磁盘 IO。所以读起来真的很快。

    【讨论】:

      【解决方案3】:

      您是在谈论 Apache 服务器还是整个​​计算机服务器?如果您只监控 Apache:

      如果您想监控整个系统,cronjobs 可能有点徒劳,因为如果它们的主机操作系统关闭,它们将无法运行。在这种情况下,服务器日志应该包含您需要的所有信息。

      【讨论】:

        【解决方案4】:

        您的问题不清楚。如果您想获取远程服务器正常运行时间统计信息,SSH 是一个选项。在一个服务器中安排 cron 脚本,该脚本将远程检查其他服务器的正常运行时间。

        【讨论】:

          【解决方案5】:

          如果您的“游戏服务器”在实际的 unix 或 linux 虚拟机中运行,更好的办法可能是测量 ACTUAL 服务器正常运行时间。

          在类 Unix 操作系统中,您有一个名为 uptime 的命令:

          [ghoti@pc ~]$ uptime
           6:37PM  up 10 days,  1:26, 52 users, load averages: 0.26, 0.35, 0.34
          [ghoti@pc ~]$ 
          

          如果您能够从 PHP 执行 shell 命令,那么您可以将此输出捕获到 PHP 中的变量并对其进行解析以确定实际的服务器正常运行时间。随时随地记录,但最喜欢的方法之一是使用RRDTool 图表。 RRD 是数据库格式,然后您可以使用MuninCacti 等工具来构建图形。可能比正常运行时间更有趣!

          另一方面,如果您还希望能够在服务器离线时自动通知人们,并且您希望灵活地监控任何类型的服务(HTTP、SMTP、Unreal服务器,随便),看看像 NagiosIcinga 这样的工具。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-04-06
            • 1970-01-01
            • 1970-01-01
            • 2023-03-24
            • 1970-01-01
            • 2013-01-24
            相关资源
            最近更新 更多