Назад | Перейти на главную страницу

Существуют ли какие-либо простые приложения для мониторинга сети с открытым исходным кодом?

Я отлаживаю проблему с одной из наших систем. Каждое воскресенье он перестает общаться с другим сервером. Если мы перезагрузим оба сервера, связь снова заработает.

Мне было интересно, есть ли какие-нибудь небольшие приложения, которые отслеживают доступность TCP-порта и сетевое подключение, возможно, регистрируют любое время простоя. Я также хотел бы, чтобы это было с открытым исходным кодом, если это возможно, но если есть другое решение, которое является проприетарным, я бы тоже хотел услышать об этом.

Я изменю тенденцию и дам вам сценарий решения.

Возьмите копию netcat для Windows и измените сценарий, указав путь к netcat (или просто выгрузите nc.exe в каталог% SystemRoot% \ system32 и измените эту строку на просто 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

Вот и все. Вы можете запустить это как «запланированное задание».

Это совсем не фантастика, но это сработает. Если вы хотите сделать его более привлекательным, вы можете использовать дату или время, чтобы изменить имя файла журнала, чтобы вы получали новый журнал каждый день, неделю и т. Д. Вы можете удалять старые журналы и т. Д. Вы можете многое сделать с такой простой скрипт ... хе-хе ...

Дополнение:

Вот более изящная версия «аргументов командной строки». Он входит в любой каталог, который вы укажете в имени файла «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

Мне слишком весело писать сценарии ...

Могу порекомендовать Зеносса. Это довольно обширная, но простая в настройке бесплатная программа, которая может делать все, что вам нужно.

Конечно, вы также можете просто создать несколько скриптов Perl / Shell, но зачем изобретать велосипед?

Мой текущий фаворит - Zabbix. А также есть Nagios и, может быть, еще несколько. Но если бы это была всего лишь одна служба, я бы, вероятно, написал perl-скрипт, чтобы отслеживать ее и регистрировать в sqlite.

Всегда Nagios.

Мне повезло с Что до золота в прошлом. Его легко настроить, и он сохраняет историческую информацию. К сожалению, это не открытый исходный код. Я бы хотел увидеть продукт с открытым исходным кодом с такими же функциями.

У вас есть несколько вариантов с разными вариантами:

  • OpenNMS: больше внимания к snmp.
  • Кактусы: красивые графики, но не масштабируются.
  • Pandora FMS: красивые графики и отчеты, большинство основано на программных агентах.

Есть и другие, такие как Ганлия и Ксимон, но они даже старше нагиос.

Я бы тоже пошел на zabbix (я использую его, и он отлично работает в распределенной среде), а также splunk это замечательный инструмент.