Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Простейший скрипт мониторинга сервера  (Прочитано 13025 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Matvey91

  • Автор темы
  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
Доброе время суток.
В связи с незнанием того, что домашний сервер упал ночью, решил написать скрипт проверяющий его доступность. Может кому то будет полезен.

И так поехали:

1. Создадим текстовый файл со следующим содержанием:

#!/bin/bash
#server_ping

DISPLAY=:0.0;
ADDRESS="192.168.1.4"

if ping -c 10 -s 10 -W 10 $ADDRESS
then
notify-send "Статус сервера 192.168.1.4" "Online"
else
#отправим мыло
sendemail -f "кому@yandex.ru" -t "от кого@yandex.ru" -u "Проблема с доступностью сервера" -m "Сообщение от $(hostname) . 192.168.1.4 недоступен с $(date)" -xu "логин" -xp "пароль" -s "smtp.yandex.ru"  -o "message-charset=utf-8"
notify-send "Статус сервера 192.168.1.4" "Offline, сообщение направлено на почту"
fi

Где:
DISPLAY=:0.0; Идентификатор вашего дисплея
Чтобы узнать в терминале выполните команду echo = "$DISPLAY"ADDRESS="192.168.1.4" Желаемый ip для мониторинга
ping -c 10 -s 10 -W 10 Количество пакетов посылаемых на сервер
-f "кому@yandex.ru" Тут все понятно, я указываю свою почту
-t "от кого@yandex.ru" указываем почту от которой будем отправлять.
-u "Проблема с доступностью сервера" Тема сообщения
-m "Сообщение от $(hostname) . 192.168.1.4 недоступен с $(date)" Содержание сообщения
-xu "логин" Логин от вашей почты
-xp "пароль" Пароль от вашей почты
-s "smtp.yandex.ru" Адрес smtp сервера отправки почты, в моем случае это yandex
-o "message-charset=utf-8" Кодировка сообщения, без нее будет крякозябры

2. Сохраняем, я задал имя server_ping
3. Даем права на исполнение chmod +x server_ping4. Для того чтобы сработала отправка почты нужно установить пакет sendemail
sudo apt-get install sendemail4. Настраиваем cron (Что такое cron и чем его едят можно тут)
В терминале выполняем команду: crontab -eВ конце файла дописываем:
Кто не знает как указывать период выполнения скрипта может воспользоваться online-гениратором
# Выполнить скрипт проверки доступности сервера каждую минуту
*/30 * * * * export DISPLAY=:0.0; /sbin/server_ping #указываем полный путь до скрипта
5. Сохраняем и перезапускаем службу sudo services cron restart6. Радуемся, через заданный промежуток времени в событии будет высвечено сообщение о статусе:


PS: если у кого то есть замечания или дополнение к скрипту, пишите в тему.
« Последнее редактирование: 26 Августа 2012, 16:18:25 от Matvey91 »

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: Простейший скрипт мониторинга сервера
« Ответ #1 : 26 Августа 2012, 16:20:11 »
я не понял. пример?
Wars ~.o

Оффлайн Matvey91

  • Автор темы
  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
Re: Простейший скрипт мониторинга сервера
« Ответ #2 : 26 Августа 2012, 16:25:48 »
Пример:
У меня дома сервер, на котором торрент качалка + samba шара с авторизацией по пользователем.
Проблема: упал интернет на серваке или вырубило электричество, данный скрипт через заданный промежуток времени посылает команду ping для проверки.
Суть: не самый лучший способ решения проблемы, но простой и рабочий.

Оффлайн Сперанский

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 4055
  • Dictum ac factum
    • Просмотр профиля
Re: Простейший скрипт мониторинга сервера
« Ответ #3 : 26 Августа 2012, 23:14:55 »
Как же будет отправляться мыло, если упал интернет?

Оффлайн Matvey91

  • Автор темы
  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
Re: Простейший скрипт мониторинга сервера
« Ответ #4 : 26 Августа 2012, 23:40:44 »
Скрипт не на сервере а на удаленном компе который его мониторит.

Оффлайн astrobeglec

  • Активист
  • *
  • Сообщений: 838
  • Самая тяжелая ноша - пророк в извращенном мире...
    • Просмотр профиля
Re: Простейший скрипт мониторинга сервера
« Ответ #5 : 27 Августа 2012, 15:16:12 »
ИМХО можно немного подправить так
#!/bin/bash
#server_ping

DISPLAY=:0.0;
ADDRESS="192.168.1.4"

while true; do
date >> ~/logserver
ping -c 3 $ADDRESS && {notify-send "Статус сервера 192.168.1.4" "Online" ;echo "OK" >> ~/logserver || { echo "Not connect" >> ~/logserver; notify-send "Статус сервера 192.168.1.4" "Offline!!!"}
sleep 60
while

Заодно и лог пишем...
Я вернулся...

Оффлайн Matvey91

  • Автор темы
  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
Re: Простейший скрипт мониторинга сервера
« Ответ #6 : 27 Августа 2012, 19:56:54 »
А как лог писать не изменяя скрипт основательно? logger?

Оффлайн astrobeglec

  • Активист
  • *
  • Сообщений: 838
  • Самая тяжелая ноша - пророк в извращенном мире...
    • Просмотр профиля
Re: Простейший скрипт мониторинга сервера
« Ответ #7 : 28 Августа 2012, 08:08:04 »
А как лог писать не изменяя скрипт основательно? logger?
Добавляй следующие команды:
data >> logfile
echo "текст" >> logfile
Первая забьет дату, вторая - запись.
Я вернулся...

Оффлайн buggykey

  • Любитель
  • *
  • Сообщений: 94
    • Просмотр профиля
При таком способе запуска скрипта он будет отсылать емэйлы и выводить сообщения о лежащем сервере каждую минуту, пока сервер не поднимется!  :2funny:

Оффлайн allazZ

  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
автор, нагиусы же не отменяли. Спасибо за скрипт, но нужно допилить до ума

Оффлайн Дмитрий Бо

  • Погонщик серверов
  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 3549
  • Я не техподдержка, я за порядком слежу
    • Просмотр профиля
Re: Простейший скрипт мониторинга сервера
« Ответ #10 : 05 Мая 2013, 03:21:00 »
Рестартовать крон не нужно.

В целом, есть же monit (nagios тяжеловат для такой задачи).

Для логов, действительно, есть logger, использовать его будет правильно.

 

Страница сгенерирована за 0.029 секунд. Запросов: 24.