Что такое watchdog linux

Что такое watchdog linux

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

Перевод на Русский:
Gleba

Содержание:

  • Что же это за устройство мониторинга (watchdog)?
  • Использование мониторинга
  • Аппаратная часть
  • Принцип работы
  • Программное обеспечение
  • Тестирование
  • Подключение устройства
  • Заключение
  • Ссылки
  • Страница отзывов

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

В этой статье( ЖК-панель управления для Вашего сервера на 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 минут:

Аппаратная часть

Стандартных реле не бывает. У каждого производителя свои модели. Для нас существенно сопротивление катушки реле. Ниже представлены две схемы, одна с реле на 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 и наберите

После этого скопируйте исполняемый файл linuxwd в /usr/sbin/linuxwd. Подправьте созданный linuxwd_rc скрипт (для redhat/mandrake, или linuxwd_rc_anydist для любого другого), укажите порт, к которому подключено наше устройство (ttyS1=COM2 или ttyS0=COM1). Скопируйте скрипт в
/etc/rc3.d/S21linuxwd
и
/etc/rc5.d/S21linuxwd

Тестирование

linuxwd -t /dev/ttyS0

для запуска linuxwd в режиме теста (если оборудование подключено к COM2, укажите /dev/ttyS1).

Подключение устройства

Нумерация 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 устройства подключается непосредственно к последовательному порту компьютера. Для подключения кнопки сброса к реле, найдите провода от кнопки сброса компьютера и подключите реле параллельно.

Заключение


Ссылки


  • Программное обеспечение linuxwd : software download page
  • Описание NE555 NE555.pdf 140K

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

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

talkback page

Webpages maintained by the LinuxFocus Editor team
© Guido Socher, FDL
LinuxFocus.org
Translation information:

en —> — : Guido Socher ( homepage )
en —> ru: Gleba

2002-12-03, generated by lfparser version 2.31

Источник

Watchdog (Linux)

Contents

Introduction

A watchdog on Linux is usually exported through a character device under /dev/watchdog. A simple API allows opening the device to enable the watchdog. Writing to it triggers the watchdog, and if the device is not cleanly closed, the watchdog will reboot the system.

However, a newer, more feature rich API using ioctrl is available too. We provide a small sample application called watchdog-test. For more information, see: http://git.toradex.com/cgit/linux-toradex.git/tree/Documentation/watchdog/watchdog-api.txt

The kernel configuration option WATCHDOG_NOWAYOUT («Disable watchdog shutdown on close») gives the userspace application no way to disable the watchdog. Once opened, the application has to trigger the watchdog forever. If the application closes (even it was a «clean close» with a magic character sent), the watchdog will not be disabled. The watchdog cannot be disabled using the «WDIOC_SETOPTIONS» ioctl. However, if this option is compiled in the kernel, it can be disabled again using the «nowayout» parameter. In our BSP, this option is not set by default.

Hardware Support

See information about specific Toradex modules in this section.

i.MX 6, i.MX 6ULL, i.MX 8M Mini and Vybrid based Modules

The NXP/Freescale i.MX6 and Vybrid SoC watchdog is the same hardware as in the i.MX2. Because of the i.MX2 having been released earlier, the driver is called imx2-wdt. The watchdog driver creates one device under /dev/watchdog. By default, the watchdog resets the system after 60 seconds.

Parameter Description
nowayout Watchdog cannot be stopped once started
timeout Watchdog timeout in seconds (default=60)

Those parameters can be configured in the U-Boot environment bootargs, which is used to pass commands to the Linux kernel, with the driver name prepended (imx2-wdt):

Note: The respective boot environment needs to be configured on U-Boot since it passes some arguments to the Linux kernel using the bootargs environment variable.

i.MX 7 based Modules

On the NXP i.MX 7 based modules we make use of the PMIC watchdog, the driver is called rn5t618-wdt. The watchdog driver creates one device under /dev/watchdog. By default, the watchdog resets the system after 128 seconds.

Parameter Description
nowayout Watchdog cannot be stopped once started
timeout Watchdog timeout in seconds (default=128, possible values=1, 8, 32, 128)

Those parameters can be configured in the U-Boot environment bootargs, which is used to pass commands to the Linux kernel, with the driver name prepended (rn5t618-wdt):

Note: The respective boot environment needs to be configured on U-Boot since it passes some arguments to the Linux kernel using the bootargs environment variable.

Readout Reset Reason

Usually the reset reason of the module is shown either in U-Boot or Linux Kernel console messages, so user can identify if the SoM was reset by Watchdog or not. However SoM Colibri iMX7 is a special case due to its design and an errata (e10574) in the SOC.

To differentiate if the SoM was reset by usual Power Cycle or Watchdog, user should readout the register 0xAh of PMIC by the following commands in U-Boot:

The different values of this register shows the different states of the module:

The description of the register is also explained in the following image.

NVIDIA Tegra based Modules

NVIDIA Tegra T20/T30/TK1 based modules have a built-in hardware watchdog. When the watchdog isn’t triggered within the defined period of time (by default 60 seconds on T20/T30 and 80 seconds on TK1) the system will reset itself completely (all cores).

Images 20130305 (T20) and 20130820 (T30) and older contain the official NVidia Watchdog driver. This driver has a different behaviour compared to other Linux watchdog drivers (e.g. PXA aka SA1100 one). The driver resets the watchdog by itself, either writing to /dev/watchdog or doing a WDIOC_KEEPALIVE ioctl on it will not change anything. The userspace device (/dev/watchdog) was not really useful.

By default, our updated driver now behaves as described in the official Watchdog API.

The NVIDIA Tegra T20 based modules support one watchdog available under /dev/watchdog. If this watchdog is used by the kernel level heartbeat (TEGRA_WATCHDOG_ENABLE_HEARTBEAT), it can not be used from userspace.

The NVIDIA Tegra T30 based modules support four watchdogs on the hardware side. However, one watchdog is used kernel internally for suspend mode. Three watchdogs are exported to userspace (/dev/watchdog1). If the kernel level heartbeat (TEGRA_WATCHDOG_ENABLE_HEARTBEAT) is enabled, the first watchdog cannot be used from userspace.

The NVIDIA Tegra TK1 based modules support one watchdog available under /dev/watchdog0.

The driver has two parameters:

Parameter Description
nowayout Watchdog cannot be stopped once started
heartbeat Watchdog timeout in seconds (default=60 on T20/T30 default=80 on TK1)

Those parameters can be configured in the U-Boot environment bootargs, which is used to pass commands to the Linux kernel, with the driver name prepended (tegra_wdt):

Note: The respective boot environment needs to be configured on U-Boot since it passes some arguments to the Linux kernel using the bootargs environment variable.

If reboot was due to a watchdog timeout, you will find the following message on next boot:

Note: On T20/T30 the option CONFIG_TEGRA_WATCHDOG_ENABLE_ON_PROBE was renamed to TEGRA_WATCHDOG_ENABLE_HEARTBEAT, which re-enables the watchdog reset by the driver itself (kernel level heartbeat).

Note: When using the kernel level heartbeat, the Kernel will not necessarily reboot when a kernel panic occurs since interrupts might still be handled. In order to reboot on kernel panic, use the command line option panic= or the sysctrl.conf option «kernel.panic = «.

Software support

This section has information about generic watchdog support on Linux.

Systemd

Systemd supports hardware watchdogs through the system configuration options RuntimeWatchdogSec and ShutdownWatchdogSec (in /etc/systemd/system.conf). For more information see this blog article about Watchdog support for systemd.

C example

A simple C example which keeps the watchdog fed. After this program gets closed or killed, the system will reboot after the watchdog timeout has expired.

Источник

Читайте также:  За windows 10 нужно будет платить
Оцените статью