我正在用我们的一个系统debugging一个问题。 每个星期天,它停止与另一台服务器通信。 如果我们重新启动两台服务器,通信再次工作
我想知道是否有任何监控TCP端口可用性和networking连接的小型应用程序,可能会logging任何停机时间。 如果可能的话,我也希望它是开源的,但是如果有另一个专有的解决scheme,我也想听听。
我会逆潮stream,给你一个脚本解决scheme。
抓取Windows的netcat的副本,并使用netcat的path修改脚本(或只是转储%SystemRoot%\ system32目录中的nc.exe ,并将该行更改为nc.exe )。 另外,修改脚本以将其日志文件存储在任何地方。
@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
有你去。 您可以将其作为“计划任务”运行。
这根本不是花哨的,但它会工作。 如果你想使它更有趣,你可以使用date或时间来更改日志文件名,这样你就可以每天,每周等得到一个新的日志。你可以删除旧的日志等等。你可以用很多这样一个简单的脚本…嘿嘿…
附录:
这里是发烧友的“命令行参数”版本。 它会以文件名“MONTIOR_HOST_YYYY-MM-DD.log”login到您指定的任何目录。 调用语法:
(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
编写脚本我玩得很开心
我可以推荐Zenoss。 这是相当全面的,但易于设置,免费软件,可以做你需要的一切。
当然,你也可以掀起一些Perl / Shell脚本,但为什么要重新发明轮子?
我目前最喜欢的是Zabbix 。 还有Nagios和其他一些。 但是,如果只是一个服务,我可能会写一个perl脚本来监视它并login到sqlite。
总有Nagios 。
过去我已经有了好运。 这很容易configuration,并保留历史信息。 不幸的是,它不是开源的。 我很想看到具有相同function的开源产品。
你有几个select,他们之间的differents:
还有像Ganglia和Ximon的其他人,但是比Nagag还要年长。
我也会去zabbix(我使用它,它在分布式环境中工作非常好),也splitting这是一个奇妙的工具。