- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Привет, понял что уже нужно знать что когда и где упало :)
Подскажите нет скрипта который пингует и в случае недоступности шлет емайл?
Конечно есть. Zabbix, Nagios, Munin, Cacti, Spiceworks. Был ещё где-то софт который мониторит и шлет мыло, как раз пингуя, но не могу найти. Ещё есть всякие пингдомы и хост-треккеры.
Вот такими сервисами пользуюсь:
uptimerobot.com
statuscake.com
synthetics.newrelic.com
smsc.ru/ping - здесь смс отправляют
Не хочу чужие сервисы, хотелось бы поставить себе на сервер скрипт и все тут.
Смотря на чём должен быть скрипт, например 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 мин будет приходить письмо, но при желании можно увеличивать время ожидания динамически :)
Не хочу чужие сервисы, хотелось бы поставить себе на сервер скрипт и все тут.
Получается, нужно одним сервером пинговать другой сервер? Ну, а если вместе упадут?
Из-за чего нежелание использовать сервисы? Никаких скриптов, просто вписываете нужный домен. Все серьезные проекты пользуются подобными сервисами.
Вот еще классный ресурс nixstats.com - система мониторинга и статистика нагрузки серверов, очень функционально и гибко, радует, что это всё пока бесплатно, но они еще на стадии разработки и настройки.
ко всему вышеперечисленному можно еще добавить SmokePing
Если вы хотите проверять работу одного сервера, то необходимы ещё 2 других сервера у двух других хостеров в разных ДЦ. С одного сервера проверять работу другого можно, но будут ложные срабатывания. Нужна для точности ещё перепроверка со второго сервера. В итоге получится дешевле использовать внешний сервис мониторинга. А если учесть, что ещё желательны не только уведомления по электронной почте, но и SMS, звонки, Telegram, Skype и т.п., чтобы оперативно узнавать о возникших проблемах и исправлять их, то внешний мониторинг оказывается вне конкуренции.
В отличие от многих других мониторингов у ping-admin.ru все уведомления бесплатны (т.е. вам не придётся платить по 5 руб. за каждое SMS).
Смотря на чём должен быть скрипт, например bash скрипт checker можно такой сделать:
запустить
./checker &
1. можно не грепать вывод пинга, пинг нормально возвращает код ошибки: 0 - все ок, не 0 значит нет пинга.
2. зачем скрипту все время болтаться в памяти и спать? "случайно" кильнется, что потом? добавлять еще проверку на живость?.. ведь кроны практически везде есть.
скрипт можно сократить до одной строки и добавить прямо в крон.
если нужна доступность именно сайта, то ping заменить на wget
Написал тут за пол часа прогу:
- добавляете список сайтов (url, частота проверки, тип проверки (пока только HTTP))
- запускаете
- мониторит в соответствии с выбранным типом проверки
- если что-то упало (для HTTP если ответ сервера не 200 ОК), то запишет в лог и отправит Email
- если что-то поднялось, то запишет в Email во сколько поднялось, какой был downtime, и уведомит по Email (100500 уведомлений присылать не будет)
Если кому-то надо, то могу допилить до вменяемого вида, немного расширить функционал, и выложу у себя на сайте, для скачивания, а также исходники на GitHub.
22.php
{
$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
/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