Устройство мониторинга сервера "watchdog"
ArticleCategory: [Choose a category, do not translate this]
Hardware
AuthorImage:[Here we need a little image from you]
TranslationInfo:[Author + translation history. mailto: or
http://homepage]
original in en Guido Socher
en to ru Gleba
AboutTheAuthor:[A small biography about the author]
Guido нравится Linux за возможность изучать работу компьютеров.
Linux из-за своей открытости позволяет проводить такие исследования.
Abstract:[Here you write a little summary]
В этой статье( ЖК-панель
управления для Вашего сервера на Linux ) описано как самому создать программируемый ЖК дисплей, с
огромным количеством функций. Многие из этих функций вам никогда и не
понадобятся. А в этой статье мы рассмотрим возможность создания другого, более
простого и дешевого устройства, в котором будут задействованы всего лишь 2
составляющие, использованные при создании программируемого ЖК дисплея:
- Кнопка выключения сервера
- Устройство мониторинга состояния сервера
Комплектующие можно найти на
любом радиорынке и обойдутся они максимум в 5 Евро.
ArticleIllustration:[This is the title picture for your article]
ArticleBody:[The article body]
Что же это за устройство мониторинга (watchdog)?
Устройство мониторинга,
( оригинальное и более распространенное название watchdog - по-русски
"сторожевой пес"), это такая штука, которая постоянно контролирует состояние
системы и проверяет ее работоспособность. Нечто подобное установлено на зонде
Mars Pathfinder (ведь никто не собирался отправлять на марс вместе с роботом
человека, чтобы периодически перезагружать систему когда она зависнет) и на
некоторых особо дорогостоящих серверах.
Принцип абсолютно простой -
периодически система должна откликаться на посылаемые запросы, тем самым,
подтверждая свою работоспособность. В случае если система перестает
откликаться, она в принудительном порядке перезагружается.
Заметьте,
что обычный сервер с установленным Linux должен работать без перезагрузок
месяцами, а толково настроенный и пару лет. Если же машина
систематически подвисает и ее приходится перезагружать, то мониторинг тут уже
ни к чему, а надо просто проверить железо на наличие дефектов - битая память ( memtest86.com) , перегрев CPU, чересчур
длинные шлейфы IDE и т.д.
Но тогда встает следующий вопрос: зачем тогда
слежение за компьютером, если Linux до такой степени надежный и стабильный?
Ответ так же прост - чтобы сделать его еще более надежным и стабильным.
Всегда остается человеческий фактор, с которым всегда приходится считаться.
Ведь если сервер в течении года работает без сбоев обслуживающий персонал и
не знает о его существовании. И в случае поломки первый вопрос будет: "Где он
находится?". А как насчет того что сервер полетел под новый год, когда все уже
разбежались отмечать? В подобных случаях дополнительный мониторинг придется
как нельзя кстати!
Да, подобное устройство мониторинга не решит всех
проблем и не защитит от поломок железа, а если вы решили укомплектовать ваш
сервер мониторингом, то вам также следует позаботиться и о дополнительном
пространстве (имеется ввиду пространство для достаточной
вентиляции помещения ).
Использование мониторинга
Средство мониторинга системы, которое мы будем
собирать, предназначено для проверки жизнеспособности пользовательских приложений.
Ведь для обеспечения надежного функционирования системы надо быть уверенным
в стабильности таких приложений как веб-сервер или база данных, кроме того
контролировать расход дискового пространства, возможно даже температуру
CPU.Для подобных вещей предназначен crontab. И подобные вопросы уже
были описаны в статье ЖК-панель
управления для Вашего сервера на Linux . Поэтому мы на этом не задержимся.
Нечто
подобное поможет вам контролировать ресурсы сети, использование свопа и
дискового пространства.
#!/bin/sh
PATH=/bin:/usr/bin:/usr/local/bin
export
PATH
#
# Мониторинг дискового пространства
# ----------------
#
проверяет диск на 80% заполненность.
# (crontab автоматически
отправляет e-mail если скрипт
# выполнен)
df | egrep '
(8.%|9.%|100%) '
#
# Мониторинг свопа
# Обычно сервер не имеет свопа.
Иначе
# своп должен быть строго фиксированным
# ----------------
#
Сообщает о заполнении свопа больше чем на 6 Mb
swpfree=`free | awk
'/Swap:/{ print $3 }'`
if expr $swpfree \> 6000 > /dev/null ;
then
echo "$0 warning! использование свопа составляет $swpfree"
echo "
"
free
echo " "
ps auxw
fi
#
# Мониторинг сети
#
-------------------
# Ваш IP или имя
компьютера:
hostn="linuxbox.your.supercomputer"
#
if ping -w 5 -qn -c 1
$hostn > /dev/null ; then
# ok host is up
echo "0" >
/etc/pingfail
else
# подсчет не отвеченных запросов ping
if [ -r
/etc/pingfail ]; then
pingfail=`cat /etc/pingfail`
else
# в случае
отсутствия файла pingfail
# окончание программы
exit
0
fi
pingfail=`expr "$pingfail" "+" 1`
echo "$pingfail ping
failures"
echo "$pingfail" > /etc/pingfail
if [ $pingfail -gt 10 ];
then
echo "не отвечено на более чем 10 запросов.
Перезагрузка..."
/sbin/shutdown -t2 -r now
fi
fi
# --- конец скрипта
---
Можно использовать этот скрипт вместе с crontab так что он будет
запускаться каждые 15 минут:
1,15,30,45 * * * * /where/the/script/is
Аппаратная часть
Стандартных реле не бывает. У каждого производителя
свои модели. Для нас существенно сопротивление катушки реле. Ниже
представлены две схемы, одна с реле на 5V, 500 Oм, а вторая на 5V,
120 Oм. При покупке поинтересуйтесь сопротивлением катушки реле или просто
измерьте его омметром. Кликните на картинку чтобы увеличить.
Схема для
реле на 120 Oм :
Схема для реле на 500 Oм:
Кнопка выключения
замыкает при нажатии RTS и CD. На схеме она выглядит несколько странно, но в
Eagle других символов нет.
Я не привожу список необходимого оборудования.
Все что будет необходимо купить есть на схеме, только не забудьте разъем
DB9 для последовательного порта. Диоды подойдут любые, например 1N4148.
Лично я считаю что лучше установить реле на 500 Oм, тогда вам не понадобятся
R4 и конденсатор на 2000мкФ (или 2200мкФ). А для С1 можно использовать
конденсатор меньшего номинала (1000мкФ).
Внимание: Для схемы с реле на
120 Oм вам понадобится красный светодиод, а для цепи с реле на 500 Oм -
зеленый. Это не шутка, падение напряжения на зеленом светодиоде выше, чем на
красном.
Плата, схема в формате Eagle CAD и постскрипт файлы для травления
платы включены в программный пакет, ссылка на который находится в
конце статьи. Программу Eagle CAD для Linux можно забрать с cadsoftusa.com.
Принцип работы
Схема построена на таймера NE555.
Микросхема представляет из себя два компаратора, RS-триггер и делитель из 3
резисторов 5 кOм, задающий пороги срабатывания компараторов. Всякий раз, когда
на ножке 6 (threshold) напряжение поднимается выше 2/3, выход RS-триггера
переключается в состояние "1".
Теперь рассмотрим нашу схему. Выход RTS последовательного порта
используется как источник питания нашей схемы. Уровни напряжений в канале
RS232 составляют +/-10V, и поэтому нам понадобится диод перед конденсатором С1.
Конденсатор C1 заряжается очень быстро и выступает в качестве аккумулятора
энергии для последующего кратковременного включения реле. Конденсатор C2
медленно заряжается через резистор ( 4.7 MОм ). Транзистор Т1, управляемый
по линии DTR последовательного порта, разряжает конденсатор C2.В случае
пропадания сигнала, из-за того что компьютер подвис, конденсатор медленно
( примерно в течении 40 сек. ) начнет заряжаться до 2/3 питающего
напряжения, после чего RS-триггер перейдет в состояние "1".
Цепь С1, R2, светодиод и реле должна быть рассчитана таким образом,
чтобы реле включалось кратковременно и только за счет энергии запасенной на
конденсаторе С1. Нам необходимо чтобы "кнопка сброса" была "нажата" пару секунд.
Светодиод должен гореть до полной перезагрузки компьютера.
На схеме также изображена кнопка выключения компьютера подключенная к
линии CD последовательного порта. Если удерживать ее около 15 секунд, будет
выполнена команда "shutdown -h now", которая и выключит сервер. Она не имеет
ничего общего с мониторингом и предназначена исключительно для обслуживания
компьютера.
Программное обеспечение
Драйвер представляет собой небольшую
программу на С, которую можно запускать из /etc/init.d/. Она включит сигнал
на линии RTS RS232, после чего начнет периодически ( каждые 12 сек. ) посылать
импульсы по линии DTR (таймаут составляет 40 секунд). При нормальном выключении
компьютера программа отключит RTS и передаст последний импульс на DTR.
В результате конденсатор цепи питания С1 к моменту истечения таймаута полностью
разрядится, исключая возможность принудительной перезагрузки. Для установки
программы, распакуйте файл
linuxwd-0.3.tar.gz и наберите
make
После этого скопируйте исполняемый файл linuxwd в /usr/sbin/linuxwd.
Подправьте созданный linuxwd_rc скрипт (для redhat/mandrake, или linuxwd_rc_anydist
для любого другого), укажите порт, к которому подключено наше устройство
(ttyS1=COM2 или ttyS0=COM1). Скопируйте скрипт в
/etc/rc3.d/S21linuxwd
и
/etc/rc5.d/S21linuxwd
Вот и все.
Тестирование
После того как вы все распаяли, проверьте систему на
работоспособность перед тем как подключить ее к компьютеру. Подключите вывод,
который будет позже подключен к линии RTS последовательного порта,
на 40-50 секунд к блоку питания на 9-10V DC. Вы должны услышать щелчок при
включении реле и должен загореться светодиод. Затем реле должно выключиться,
а светодиод продолжать гореть до тех пор пока вы не подадите +10V на вывод,
который будет позже подключен к линии DTR последовательного порта.
После того как вы все проверили, подсоедините все это к компьютеру.
Программа linuxwd имеет режим тестирования, в этом режиме она может
выводит данные на экран и останавливаться на время после выдачи импульса в
линию DTR для эмулирования подвисания системы. Выполните команду:
linuxwd -t /dev/ttyS0
для запуска linuxwd в режиме теста (если
оборудование подключено к COM2, укажите /dev/ttyS1).
Подключение устройства
Интерфейс RS232 имеет следующую распайку:
Нумерация 9-ти контактного разъема ( вилка ) на корпусе компьютера.
9-конт. |
25-конт. |
Название |
Направление |
Описание |
1 |
8 |
CD |
вход |
Детектор принимаемого сигнала |
2 |
3 |
RXD |
вход |
Принимаемые данные |
3 |
2 |
TXD |
выход |
Передаваемые данные |
4 |
20 |
DTR |
выход |
Приемник готов |
5 |
7 |
GND |
-- |
Сигнальное заземление |
6 |
6 |
DSR |
вход |
Передатчик готов |
7 |
4 |
RTS |
выход |
Запрос передачи |
8 |
5 |
CTS |
вход |
Готов к передаче |
9 |
22 |
RI |
ввод |
Индикатор вызова |
Разъем RS232 устройства подключается непосредственно к последовательному порту
компьютера. Для подключения кнопки сброса к реле, найдите провода от кнопки
сброса компьютера и подключите реле параллельно.
Заключение
Подобная система мониторинга состояния системы не дает
100-процентную гарантию защиты вашей системы. Возможны нюансы, связанные с
проверкой файловой системы после аварийного сбоя. Новые журналируемые файловые
системы возможно и не будут иметь с этим проблем, но я с ними не
экспериментировал. А устройство, которое предстаавлено здесь, это несложная и
недорогая альтернатива аналогичным коммерческим продуктам.
Ссылки