我想制作一个在win32上运行的工具来监控我们的在线游戏服务器。服务器实际上是 .exe 文件。我需要知道它们是否已经崩溃,以便我可以重新启动它们。因此,该工具将具有 2 个主要功能:
- 经常检查服务器程序列表以查看它们是否正在运行
- 重新打开任何已崩溃的服务器的可执行文件
有没有人有任何想法或知道一个 API 开始?
我想制作一个在win32上运行的工具来监控我们的在线游戏服务器。服务器实际上是 .exe 文件。我需要知道它们是否已经崩溃,以便我可以重新启动它们。因此,该工具将具有 2 个主要功能:
有没有人有任何想法或知道一个 API 开始?
如果你在 Win32 中,你可以从 C# 开始使用System.Diagnostics
using System.Diagnostics;
然后得到一个进程列表:
Process[] processlist = Process.GetProcesses();
foreach(Process theprocess in processlist){
Console.WriteLine(“Process: {0} ID: {1}”, theprocess.ProcessName, theprocess.Id);
}
从那里开始,您要如何处理信息取决于您。
我意识到这并不是您所要求的,但是使用诸如Nagios之类的成熟监控工具进行监控呢?您当然必须“教”监控工具了解应监控的流程,但您也将从其更高级的功能中受益。例如,在 Nagios 的情况下,这些将包括自动电子邮件通知、过程状态的在线仪表板、通过 SMS 的通知等。
游戏服务器应该产生日志。你应该做一个服务 / cron 作业来监控日志。根据日志的内容,你的服务应该采取相应的行动,例如重启服务、触发警报等。
您应该使用 Win32 api 中的 CreateProcess 或类似方法启动游戏服务器。您将在 lpProcessInformation 参数中取回一个进程句柄。
您可以使用 WaitForSingleObject 到 WaitForMultipleObjects 来等待通知该句柄,这将在进程因任何原因终止时发生。