Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Хостинг и доменные имена > Идея: система мониторинга доступности сайта.


Автор: shadeofgray 12.8.2004, 01:31
Идея пришла ко мне, когда я размышлял о моем хостере. У меня уже давно есть подозрения, что мой хостер берет с меня деньги, а сайт при этом регулярно оказывается недоступен из-за проблем на сервере. Но не сидеть же мне всё время у компа и проверять доступность сайта?

Идея такова - пусть у нас есть два компьютера: А и Б. На компьютере А есть скрипт knocker.php, который запускается каждую минуту. Этот скрипт отправляет HTTP-запрос по адресу http//B.ru/door.php Т.е. к скрипту door, расположенному на машине Б. Скрипт на машине Б получает запрос и отправляет на машину А ответ.

А дальше происходит самое оно: скрипт на машине А смотрит - ответила ему машина Б или нет. Если ответ не ушел или НЕ ДОШЕЛ, сайт Б считается недоступным, и на машине А появляется запись об этом. Машина А так же проверяет машину Б. Раз в сутки две машины соединяются, обмениваются статистикой, и их админы узнают, были проблемы или нет.

Разумеется, картина упрощена. На самом деле в сети должно быть много машин (не меньше десятка, а сотни - будет намного лучше). И взаимодействие будет сложнее. И конечно же, надо будет всё расчитать, чтобы вместо мониторинга сайта не получилась DDoS атака на сайт, но я это уже обдумал, это всё решается.

Важно что - таким образом админ сайта получит круглосуточную и ежеминутную оценку доступности его сайта, причем будет оцениваться не наличие электричества в серверной smile.gif а реальная доступность его сайта для десятков/сотен машин со всех концов Сети. А его сайт будет в это время вносить свой вклад в проверку доступности чужих сайтов. Ценой совсем крошечной доли ресурсов машины.

По моим оценкам на разработку рабочей версии скриптов потребуется пара дней или около того, т.к. алгоритмы все простые. Это я могу и хочу сделать.

Вопрос в другом - надо ли это людям? Мне это надо. Но для того, чтобы идея работала, надо собрать не менее десятка админов, которые согласятся установить на своих сайтах мои скрипты, иначе идея не будет работать - просто некому будет отправлять запросы. Без уверенности, что мой труд не пропадет даром, начинать работу неохота.

Что вы думаете об идее? Стоит ли мне искать единомышленников?
Может, у вас есть свой сайт? Вы согласитесь установить на нем эту систему, если я её разработаю?

Автор: Wowa 27.8.2004, 13:22
идея не нова и таких сервисов уже есть куча. например: http://www.uptime.ru

Автор: GoodBoy 27.8.2004, 14:59
Вот тебе самый простой вариант того, что ты хочешь:

Код
$host = 'www.domain.ru';
$page = 'index.html';
$request = "GET /$page HTTP/1.0\nHOST: $host:80\n";
if (&get_confirm) {

   Страница прочиталась!!!!!!!!!!

} else {

   Возникла ошибка при чтении!!!!!!!!!!!

}

sub get_confirm {
  my $text;
  $SIG{ALRM} = sub { die };
  $/=undef;
  alarm 25;
  eval { $text = &http; };
  close SOCK;
  return 1 if ((!$@) and ($text=~/^HTTP\/[^ ]* (\d+)/) and ($1==200));
  return 0;
}

sub http {
  my $addr = '';
  return 'Error 1' if !($addr=gethostbyname($host));
  return 'Error 2' if !(socket(SOCK,PF_INET,SOCK_STREAM,getprotobyname('tcp')));
  return 'Error 3' if !(connect(SOCK,pack('S n a4 x8', PF_INET, 80, $addr)));
  select SOCK;
  $|=1;
  select STDOUT;
  print SOCK $request."\n";
  my @text = <SOCK>;
  return join("", @text);
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)