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

Простой мониторинг работоспособности интернет-соединения

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

Но это филиал с простым подключением типа SOHO, без маршрутизатора SNMP, только Windows, должен работать на настольном компьютере, который не предназначен для этой задачи.

Не нужно знать емкость, задержку пинга или что-то еще - просто отчет о том, сколько раз он был отключен более чем на несколько секунд, чтобы помахать кабельной компании.

Я делаю это наоборот с Pingdom. Бесплатный аккаунт, один чек. Пингуйте IP-адрес WAN роутера, и все в порядке. Вы получаете ежемесячный отчет о работоспособности и можете обратиться в кабельную компанию.

В настоящее время я исследую аналогичную проблему (отказ DSL в филиале). Я запускаю PingPlotter удаленно; это программа для Windows, которая генерирует простой для чтения график. Я использовал график, чтобы сообщить интернет-провайдеру, в какое время ссылка сбрасывается.

(Теперь жду, когда провайдер действительно исправит это - дайте мне знать, если у вас есть какие-нибудь советы, как заставить телекоммуникационные компании работать быстрее!)

Я не знаю никаких утилит, но я написал для этого простой код на perl:

#!/usr/bin/perl

use Net::Ping;
use POSIX qw/strftime/;

if (-e '/var/run/net_test.pid') {
        print "net_test already running.\n";
        exit;
} else {
        system "touch /var/run/net_test.pid";
}

my $host   = "www.google.com";
my $ping   = Net::Ping->new('icmp');
my $result = $ping->ping($host,2);

if ($result != 1) {
        $format = strftime('[%d/%m/%Y %H:%M:%S]',localtime)." Internet is not available...";
        $run = `echo $format >> /var/log/virtua_net`;
        while ($result != 1) {
                $result = $ping->ping($host,2);
                sleep 60;
        }
        $format = strftime('[%d/%m/%Y %H:%M:%S]',localtime)." Internet is back...";
        $run = `echo $format >> /var/log/virtua_net`;
} else {
        $format = strftime('[%d/%m/%Y %H:%M:%S]',localtime)." Internet is ok...";
        $run = `echo $format >> /var/log/virtua_net`;
}
$ping->close();

system "rm -rf /var/run/net_test.pid" if (-e "/var/run/net_test.pid");
exit;

Что он делает, так это то, что он будет пытаться пинговать Google каждый раз, когда он запускается, и затем он будет печатать в файл, получил ли он ответ или нет, вместе со временем, чтобы вы могли позже проверить, с какого времени до какого времени Интернет был недоступен.

Если вам это нравится, я могу внести небольшие изменения, которые будут использоваться в Windows, и вам нужно было установить ActivePerl, и все.

Единственные необходимые изменения - это пути и команды, которые могут отличаться ни от чего в Windows.

Еще один хороший выбор - http://www.alertfox.com/ .Бесплатный мониторинг веб-сайтов, тестирование транзакций и отчеты.

Попробуйте Бесплатная версия PA Server Monitor. Его объем ограничен, но бесплатная версия будет выполнять пинг и создавать диаграммы за вас. Работает в Windows и в качестве фоновой службы, поэтому не мешает.

Powershell быстро и грязно

while ($true) {

  #if (test-connection -count 1 microsoft.com -Quiet) {    



  if (test-connection -count 1 google.com ) {    
   $result=(get-date).ToString("yyyy-MM-dd hh:mm:ss")
   $result = "$result ok"
   "$result" | Tee-Object -FilePath c:\~~temp\router_log.txt -append     #"$result" | Out-File -FilePath c:\~~temp\router_log.txt -append

   sleep 5

 } else {
    while (-not (test-connection -count 1 google.com -Quiet)) {    
        $result=(get-date).ToString("yyyy-MM-dd hh:mm:ss")
        $result = "$result down"
        "$result" | Tee-Object -FilePath c:\~~temp\router_log.txt -append
        sleep -millisecond 100
    }
}

}