Скрипт пинга

12
LY
На сайте с 29.07.2012
Offline
131
3986

Привет, понял что уже нужно знать что когда и где упало :)

Подскажите нет скрипта который пингует и в случае недоступности шлет емайл?

danforth
На сайте с 18.12.2015
Offline
153
#1

Конечно есть. Zabbix, Nagios, Munin, Cacti, Spiceworks. Был ещё где-то софт который мониторит и шлет мыло, как раз пингуя, но не могу найти. Ещё есть всякие пингдомы и хост-треккеры.

Junior Web Developer
dotern
На сайте с 21.09.2016
Offline
123
#2

Вот такими сервисами пользуюсь:

uptimerobot.com

statuscake.com

synthetics.newrelic.com

smsc.ru/ping - здесь смс отправляют

LY
На сайте с 29.07.2012
Offline
131
#3

Не хочу чужие сервисы, хотелось бы поставить себе на сервер скрипт и все тут.

D
На сайте с 05.06.2007
Offline
155
#4

Смотря на чём должен быть скрипт, например bash скрипт checker можно такой сделать:


#!/bin/bash

while true; do
OK=`ping -c1 domain.ru|grep "time="`;
if [ "$OK" = "" ]; then
echo "SERVER is offline" | mail -s "NO PING" "your@mail.ru"
fi
sleep 600;
done

запустить

./checker &

Будет проверять каждые 10 мин доступность сервера и отправлять мыло если не доступен.

Конечно если сервак будет лежать долго, надо понимать что каждые 10 мин будет приходить письмо, но при желании можно увеличивать время ожидания динамически :)

Написал не мало шедевров ;)
dotern
На сайте с 21.09.2016
Offline
123
#5
LargoYou:
Не хочу чужие сервисы, хотелось бы поставить себе на сервер скрипт и все тут.

Получается, нужно одним сервером пинговать другой сервер? Ну, а если вместе упадут?

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

Вот еще классный ресурс nixstats.com - система мониторинга и статистика нагрузки серверов, очень функционально и гибко, радует, что это всё пока бесплатно, но они еще на стадии разработки и настройки.

cloud-shield
На сайте с 25.01.2017
Offline
54
#6

ко всему вышеперечисленному можно еще добавить SmokePing

Защита сайтов от DDoS атак - Cloud-Shield.ru ( https://cloud-shield.ru )
tmatm
На сайте с 22.04.2006
Offline
205
#7

Если вы хотите проверять работу одного сервера, то необходимы ещё 2 других сервера у двух других хостеров в разных ДЦ. С одного сервера проверять работу другого можно, но будут ложные срабатывания. Нужна для точности ещё перепроверка со второго сервера. В итоге получится дешевле использовать внешний сервис мониторинга. А если учесть, что ещё желательны не только уведомления по электронной почте, но и SMS, звонки, Telegram, Skype и т.п., чтобы оперативно узнавать о возникших проблемах и исправлять их, то внешний мониторинг оказывается вне конкуренции.

В отличие от многих других мониторингов у ping-admin.ru все уведомления бесплатны (т.е. вам не придётся платить по 5 руб. за каждое SMS).

Optimizator.Ru ( https://optimizator.ru/ ) — регистрация и продление доменов в RU-CENTER и REG.RU: RU, РФ от 123 р.; MSK.RU, SPB.RU и др. 168 р. + REG.RU ( https://reg.optimizator.ru/ ). Освобождающиеся домены от 150 р. ( https://optimizator.ru/backorder/ )
PA
На сайте с 12.02.2016
Offline
24
#8
Dimanych:
Смотря на чём должен быть скрипт, например bash скрипт checker можно такой сделать:
запустить
./checker &

1. можно не грепать вывод пинга, пинг нормально возвращает код ошибки: 0 - все ок, не 0 значит нет пинга.

2. зачем скрипту все время болтаться в памяти и спать? "случайно" кильнется, что потом? добавлять еще проверку на живость?.. ведь кроны практически везде есть.

скрипт можно сократить до одной строки и добавить прямо в крон.

ping -q -c1 -n mydomain.com >/dev/null || echo "SERVER is offline" | mail -s "NO PING" "your@mail.ru"

если нужна доступность именно сайта, то ping заменить на wget

. . .
danforth
На сайте с 18.12.2015
Offline
153
#9

Написал тут за пол часа прогу:

- добавляете список сайтов (url, частота проверки, тип проверки (пока только HTTP))

- запускаете

- мониторит в соответствии с выбранным типом проверки

- если что-то упало (для HTTP если ответ сервера не 200 ОК), то запишет в лог и отправит Email

- если что-то поднялось, то запишет в Email во сколько поднялось, какой был downtime, и уведомит по Email (100500 уведомлений присылать не будет)

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

$ ./pinger

2017/10/07 00:56:26 Start watching 2 sites
2017/10/07 00:56:52 https://quasar.cc down at 2017-10-07 00:56:52 +0300 MSK
2017/10/07 00:57:47 https://quasar.cc up at 2017-10-07 00:57:48 +0300 MSK, downtime 56s
G-and-Y
На сайте с 29.06.2013
Offline
156
#10

22.php

<? function check_http_status($url)
{
$user_agent = 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSLVERSION, 3);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$page = curl_exec($ch);

$err = curl_error($ch);
if (!empty($err))
return $err;

$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
return $httpcode;
}

$url2 = array("http://site.ru"); //array("http://site.ru", "http://site2.ru"); если надо 2 3 и т.д.
foreach ($url2 as $url) {
$answer = check_http_status($url);

$date = date('H:i - d.m.Y');
$file = 'log.txt';
$content = "$date - $answer - $url\n";
if ($answer == 200) {
echo ""; }
else {
exec ('sh /root/222.sh'); //можно за комментировать если не надо перезагрузка
mail("pochta@mail.ru", "$url - $answer - $date", "$answer - $url - $date");
file_put_contents($file, $content, FILE_APPEND | LOCK_EX);
}
}
?>

222.sh

#!/bin/bash
/etc/init.d/mysql restart ; /etc/init.d/nginx restart ; /etc/init.d/apache2 restart

crontab -e

*/5 * * * * php /root/22.php

Отправит мыло, запишет лог, перезагрузит mysql nginx apache2

Абузо-устойчивые впс в Нидерландах от 5$/мес (https://cp.inferno.name/aff.php?aff=2991)
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий