[LinuxFocus-icon]
Домой  |  Карта  |  Индекс  |  Поиск

Новости | Архивы | Ссылки | Про LF
эта страница доступна на следующих языках: English  ChineseGB  Deutsch  Francais  Italiano  Nederlands  Russian  Turkce  

[Photo of the Author]
автор Guido Socher (homepage)

Об авторе:

Guido нравится Linux за возможность изучать работу компьютеров. Linux из-за своей открытости позволяет проводить такие исследования.



Перевод на Русский:
Gleba <syschenko(at)ukr.net>

Содержание:

 

Устройство мониторинга сервера "watchdog"

[Illustration]

Резюме:

В этой статье( ЖК-панель управления для Вашего сервера на Linux ) описано как самому создать программируемый ЖК дисплей, с огромным количеством функций. Многие из этих функций вам никогда и не понадобятся. А в этой статье мы рассмотрим возможность создания другого, более простого и дешевого устройства, в котором будут задействованы всего лишь 2 составляющие, использованные при создании программируемого ЖК дисплея:

Комплектующие можно найти на любом радиорынке и обойдутся они максимум в 5 Евро.
_________________ _________________ _________________

 

Что же это за устройство мониторинга (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м :
[120 Ohm relay]
Схема для реле на 500 Oм:
[500 Ohm relay]

Кнопка выключения замыкает при нажатии 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".
[ne555]
Теперь рассмотрим нашу схему. Выход 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 PIN D-SUB MALE

Нумерация 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-процентную гарантию защиты вашей системы. Возможны нюансы, связанные с проверкой файловой системы после аварийного сбоя. Новые журналируемые файловые системы возможно и не будут иметь с этим проблем, но я с ними не экспериментировал. А устройство, которое предстаавлено здесь, это несложная и недорогая альтернатива аналогичным коммерческим продуктам.  

Ссылки


 

Страница отзывов

У каждой заметки есть страница отзывов. На этой странице вы можете оставить свой комментарий или просмотреть комментарии других читателей :
 talkback page 

Webpages maintained by the LinuxFocus Editor team
© Guido Socher, FDL
LinuxFocus.org
Translation information:
en --> -- : Guido Socher (homepage)
en --> ru: Gleba <syschenko(at)ukr.net>

2002-12-03, generated by lfparser version 2.31