测量服务器正常运行时

时间:2012-03-31 22:30:43

标签: php linux cron uptime

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

我为我的脚本配置了一个cronjob,如果服务器启动或关闭,每隔5分钟检查一次,这样我就可以轻松获得服务器状态。

我需要了解如何根据上述数据衡量每台服务器的正常运行时间。我必须每隔一分钟为脚本执行每台服务器节省下来的时间吗?

5 个答案:

答案 0 :(得分:2)

如果你不关心很多细节而你只想要上下时间。然后你可以在一个文件中保存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,但这太难了)你还需要考虑其他服务器的正常运行时间......

答案 1 :(得分:1)

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

   % cat /proc/uptime 
   129657.69 506917.57

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

PS。读取/proc/文件系统(使用伪文件)时,不涉及真正的磁盘IO。所以阅读它真的很快。

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

您的问题尚不清楚。如果您想获得远程服务器正常运行时间状态,SSH是一个服务器中的option.schedule cron,用于远程检查其他人的正常运行时间。

答案 4 :(得分:-1)

如果你的“游戏服务器”在实际的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,虚幻服务器,无论如何),请查看NagiosIcinga等工具。