мониторинг

Разработка своих веб-приложений и страничек

мониторинг

Сообщение On-line » 12 июл 2009, 22:51

как сделать мониторинг сайта?
Ну короче есть два сайта, один работает постоянно, а второй нет. На том который работает постоянно (нужно как на вФОСе.ру) нужно чтобы отображалось работа того не постоянного сайта)) если он работает, то надпись "On-line" - зеленого цвета, а если не работает, то "Off-line" - красного цвета.
Как это сделать?))

PS где-то это может быть и обсуждалось. но я не нашел ((
Аватара пользователя
On-line
Активный участник
 
Сообщения: 1083
Зарегистрирован: 31 окт 2008, 23:54
Домен: http://vbalashove.ru

Re: мониторинг

Сообщение ibe » 12 июл 2009, 23:00

Тебе пак скриптов предоставить?
Смотри на http://skripters.com там их до горла.
Уж потрать трафика, тебе надо.
Изображение
Аватара пользователя
ibe
Активный участник
 
Сообщения: 893
Зарегистрирован: 31 мар 2009, 00:46

Re: мониторинг

Сообщение eckounit » 14 июл 2009, 22:12

80 порт проверяй скриптом на доступность.. и там условие..еси пингуется то Онлайн еси нет-Оффлайн (простите,я нуП :) )
Изображение
eckounit
Активный участник
 
Сообщения: 95
Зарегистрирован: 01 мар 2009, 15:39

Re: мониторинг

Сообщение On-line » 15 июл 2009, 22:59

eckounit писал(а):80 порт проверяй скриптом на доступность.. и там условие..еси пингуется то Онлайн еси нет-Оффлайн (простите,я нуП :) )

и как это сделать? что писать? =)))
Аватара пользователя
On-line
Активный участник
 
Сообщения: 1083
Зарегистрирован: 31 окт 2008, 23:54
Домен: http://vbalashove.ru

Re: мониторинг

Сообщение ds-jan » 15 июл 2009, 23:09

пхп учи или ищи в инете готовый
ИзображениеИзображение
Изображение
Изображение
Аватара пользователя
ds-jan
Активный участник
 
Сообщения: 1206
Зарегистрирован: 27 апр 2009, 06:57
Откуда: Балаково. Пром.зона
Домен: http://empower-servers.ru

Re: мониторинг

Сообщение eckounit » 16 июл 2009, 00:27

On-line писал(а):
eckounit писал(а):80 порт проверяй скриптом на доступность.. и там условие..еси пингуется то Онлайн еси нет-Оффлайн (простите,я нуП :) )

и как это сделать? что писать? =)))

Эмм...соглашусь,лучше найти скрипт в интернете. Сам ни разу не писал , поэтому имею лишь представление...))
Изображение
eckounit
Активный участник
 
Сообщения: 95
Зарегистрирован: 01 мар 2009, 15:39

Re: мониторинг

Сообщение On-line » 16 июл 2009, 20:38

ibe писал(а):Тебе пак скриптов предоставить?
Смотри на http://skripters.com там их до горла.
Уж потрать трафика, тебе надо.

нет там такого скрипта.. и в инете гугл из гуглил весь... :(
Аватара пользователя
On-line
Активный участник
 
Сообщения: 1083
Зарегистрирован: 31 окт 2008, 23:54
Домен: http://vbalashove.ru

Re: мониторинг

Сообщение Dimanok » 16 июл 2009, 21:50

Нашёл что-то похожее , дальше ройте сами:
Код: Выделить всёРазвернуть
<?php

$link = 'http://ВАШ ХОСТ'; // пример: http://google.com
$to = 'пользователь@домен.ru'; // ВАШ ЕМАЙЛ
$subject = 'host die';
$mess = 'не доступный хост';

$result = ping($link);
if ($result == "NO") {
echo 'send';
mail($to,$subject,$mess, "MIME-Version: 1.0 \r\n");
}

function ping($link){
        $packs=5;
        for ($tt=0;$tt<=$packs;$tt++){
            $a=getmstime();
            $churl = @fsockopen(server($link), 80, &$errno, &$errstr, 20);
            $b=getmstime();
            if (!$churl){
               $zeit="NO"; break;
            }
            $zeit=$zeit+round(($b-$a)*1000);
            @fclose($churl);
        }
        if ($zeit!="NO") {
        if(($zeit/$packs)<3){$zeit="<3 ms";}else{$zeit=($zeit/$packs)." ms";}
        }
        return $zeit;
}

function server($link){
        if(strstr($link,"/")){$link = substr($link, 0, strpos($link, "/"));}
        return $link;
}

function getmstime(){
        return (substr(microtime(),11,9)+substr(microtime(),0,10));
}
?>
www.strike64.ru - Крупнейшая конференция о играх корпорации Valve, Поволжья
Dimanok
Автор
 
Сообщения: 3506
Зарегистрирован: 05 июл 2008, 11:02
Откуда: Саратов
Домен: http://www.strike64.ru

Re: мониторинг

Сообщение Dimanok » 16 июл 2009, 21:56

Проверка ссылок на доступность


В этой статье я расскажу о том, как я делал проверку базы данных сайтов каталога на доступность. В коде используется функция fsockopen и запуск скрипта самим собой (для обхода ограничения по времени на выполнение программы).

Итак, у нас есть таблица url (например, каталог сайтов):

Код: Выделить всёРазвернуть
1   http://url.com
2   http://url1.com
3   http://url2.com

...

Создадим скрипт check.php при отправке на который post данных action:check, он инициализирует начало проверки, то бишь запускает сам скрипт проверки (создадим его чуть позже):

Код: Выделить всёРазвернуть
<?php
if ($_POST['action'] != 'check') die('Nou!');
$result openURL($_SERVER['SERVER_NAME'], '/check1.php');
if (
$result[0] == 0) {
    die(
$result[1]);
}
?>


Функция openURL описывается так:

Код: Выделить всёРазвернуть
<?php
function openURL($host$url) {
    
$fp fsockopen($host80$errno$errstr30);
    if (!
$fp) {
        return array(
0$errstr.' ['.$errno.']');
    }else {
        
$out "GET $url HTTP/1.1\r\n";
        
$out .= "Host: $host\r\n";
        
$out .= "Connection: Close\r\n\r\n";
        
fwrite($fp$out);
        
fclose($fp);
        return array(
1"");
    }
}
?>


Теперь будем писать скрипт check1.php (он будет запускать сам себя):

Код: Выделить всёРазвернуть
<?php
$j 
= isset($_GET['j']) ? $_GET['j'] : 0//определяем на каком мы шагу
//Здесь пишем в лог начало итерации №j
//Здесь получаем полное число сайтов в базе(включая уже проверенные) $totalsites;
for ($i 1$i <= 10$i ++) {
    if (
$totalsites <= ($j 10 $i 1)) {
        
//Здесь пишем в лог конец проверки
        
break 1;
    }
    
$cur_site $j 10 $i 1//Порядковый номер текущего сайта в базе (не id)
    
$result checkSite($cur_site);
    
//Здесь обработка результатов проверки (запись в лог и тп)
}
//Здесь пишем в лог результаты проверки сайтов и конец итерации №j
$j ++; //Увеличиваем счетчик и запускаем скрипт заново
openURL($_SERVER['SERVER_NAME'], '/admin/check1.php?j='.$j);
?>

Сердце нашего скрипта - функция checkSite($cur_site):

Код: Выделить всёРазвернуть
<?php
function checkSite($cur) {
    
$id         //Получаем из БД
    
$url     //Получаем из БД
    // Здесь проверяем УРЛ на синтаксическую верность
    // Соединяемся с сайтом
    
$fp = @fsockopen($url_info['host'], 80$errno$errstr10);
    if (!
$fp) {
        return 
"Не удается установить соединение";
    }
    
// Составляем запрос (HEAD - значит узнать существует запрашиваемый файл или нет)
    
$out "HEAD / HTTP/1.1\r\n";
    
$out .= "Host: ".$url_info['host']."\r\n";
    
$out .= "Connection: Close\r\n\r\n";
    
fwrite($fp$out);
    
$server_response = array();
    while (
$line trim(fgets($fp128))) {
        if (
$line) {
            
array_push($server_response$line);
        }
    }
    
fclose($fp);
    
$response implode("\n"$server_response);
    foreach(
$server_response as $v) {
        
// Здесь проводим всякие проверки на 404, 301, 302 и т.п.
    
}
    
// Возвращаем результат
}
?>


Вот схематичное изложение моего скрипта. Надеюсь вам это поможет.

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

Стырил отсюда - http://alt-f4.ru/proverka-ssilok-na-online
www.strike64.ru - Крупнейшая конференция о играх корпорации Valve, Поволжья
Dimanok
Автор
 
Сообщения: 3506
Зарегистрирован: 05 июл 2008, 11:02
Откуда: Саратов
Домен: http://www.strike64.ru


Вернуться в PHP, HTML, CSS...

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 17