我正在调试我们其中一个系统的问题。每周日,它都会停止与另一台服务器的通信。如果我们重新启动两台服务器,通信就会恢复。
我想知道是否有任何占用空间小的应用程序可以监控 TCP 端口可用性和网络连接,并可能记录任何停机时间。如果可能的话,我也希望它是开源的,但如果有另一种专有的解决方案,我也想听听。
答案1
我将逆势而行,为您提供一个脚本解决方案。
获取一份网猫对于 Windows,并使用 netcat 的路径修改脚本(或者只需将 nc.exe 转储到 %SystemRoot%\system32 目录中,然后将该行更改为程序运行)。另外,修改脚本以将其日志文件存储在您想要的任何位置。
@echo off
SET NETCAT=c:\path-to-netcat\nc.exe
SET MONITOR_HOST=server-to-monitor
SET MONITOR_PORT=port-number-to-monitor
SET LOGFILE=C:\whatever.log
rem Use netcat to check for host answering on TCP port xxx
%NETCAT% -z %MONITOR_HOST% %MONITOR_PORT%
if errorlevel 1 goto _host_down
echo %DATE% %TIME% %MONITOR_HOST% answered on TCP port %MONITOR_PORT%>>%LOGFILE%
goto end
:_host_down
echo %DATE% %TIME% %MONITOR_HOST% did not answer on TCP port %MONITOR_PORT%>>%LOGFILE%
rem Do something to remote host here...
rem shutdown -r -t 1 -f -m %MONTIOR_HOST%
:end
就这样。您可以将其作为“计划任务”运行。
这根本就不是什么花哨的东西,但它确实有用。如果你想让它更花哨,你可以使用日期或时间来更改日志文件名,这样你每天、每周等都会得到一个新日志。你可以删除旧日志,等等。用这样的简单脚本你可以做很多事情……呵呵……
附录:
这是更精致的“命令行参数”版本。它会记录到您指定的任何目录中,文件名为“MONTIOR_HOST_YYYY-MM-DD.log”。使用以下语法调用:
(filename) monitor_host monitor_port log-file-path
monitor.cmd test-srv01 80 "c:\monitor_logs\long filenames do work here\"
这适合从多个计划任务、脚本等调用,以监控多个服务器或多个端口。
@echo off
SET NETCAT=c:\path-to-netcat\nc.exe
SET MONITOR_HOST=%1
SET MONITOR_PORT=%2
SET LOGFILE="%~f3\%1_%DATE:~10,4%-%DATE:~4,2%-%DATE:~7,2%.LOG"
if "%1"=="" goto _syntax
if "%2"=="" goto _syntax
if "%3"=="" goto _syntax
rem Use netcat to check for host answering on TCP port xxx
%NETCAT% -z %MONITOR_HOST% %MONITOR_PORT%
if errorlevel 1 goto _host_down
echo %DATE% %TIME% %MONITOR_HOST% answered on TCP port %MONITOR_PORT%>>%LOGFILE%
goto end
:_host_down
echo %DATE% %TIME% %MONITOR_HOST% did not answer on TCP port %MONITOR_PORT%>>%LOGFILE%
rem Do something to remote host here...
rem shutdown -r -t 1 -f -m %MONTIOR_HOST%
goto end
:_syntax
echo Syntax:
echo.
echo %0 monitor_host monitor_port log-file-path
:end
我写剧本太有趣了……
答案2
我推荐 Zenoss。它功能很全面,但设置简单,是免费软件,可以满足您的所有需求。
当然,您也可以编写几个 Perl/Shell 脚本,但为什么要重新发明轮子呢?
答案3
答案4
我很幸运黄金最新资讯过去。它易于配置,并且保留历史信息。不幸的是,它不是开源的。我很想看到一个具有相同功能的开源产品。