Linux watchdog: Что за устройство /dev/watchdog, что оно делает? — Хабр Q&A

Содержание

Как использовать Linux software watchdog?



Может ли кто-нибудь сказать мне, как обращаться с программным сторожевым псом в Linux?

У меня есть программа SampleApplication , которая работает непрерывно, и мне нужно перезапустить ее, если она зависает или неожиданно закрывается.

Я погуглил об этом и обнаружил, что у Linux есть сторожевой пес в /dev/watchdog , но не знаю, как его использовать. Может ли кто — нибудь помочь мне с примером?

Мой вопрос заключается в том, где я должен указать свое имя приложения и интервал задержки для перезапуска?

linux linux-kernel busybox watchdog
Поделиться Источник Verve Innovation     31 января 2012 в 00:34

9 ответов


  • Как изменить сторожевой таймер в linux embedded

    Я должен использовать linux watchdog driver (/dev/watchdog).

    он отлично работает, я пишу такой символ: echo 1 > /dev/watchdog И сторожевой пес запускается, и примерно через 1 минуту система перезагружается. Вопрос в том, как я могу изменить тайм-аут? Я должен изменить временной интервал в…

  • Ненормальное использование CPU — Okio Watchdog

    Я использую OkHttp (сначала оригинальную версию, а затем обновил ее до OkHttp3), некоторые пользователи моего приложения сообщают о значительной потере времени автономной работы, когда приложение не работает. Я запустил профилировщик и вот результат: Как вы можете видеть, Okio Watchdog работает…



17

Поскольку модераторы игнорируют пост-улучшения, теперь мне придется публиковать их отдельно

Сторожевой пес программного обеспечения linux перезагрузит машину, а не просто перезапустит ваш процесс.

Ну, это просто неправда, очень возможно перезапустить один или несколько процессов после того, как сторожевой пес сигнализирует, что система висит — вы даже можете ABORT перезагрузить или сделать SOFT-перезагрузку, можно настроить «test» и «repair»-скрипты / двоичные файлы, которые делают все, что вы хотите, чтобы они делали.

Busybox-версия watchdog урезана до почти непригодного уровня … я думаю, что мир никогда не узнает, почему разработчики busybox решили отказаться от основных функций-на данный момент было бы лучше вообще избегать busybox — > улучшения скорости почти отсутствуют, уменьшение размера не компенсирует огромную потерю функциональности. /bin/bash довольно мал — перекомпилируйте все с флагом «-Os», если размер имеет значение, и вы готовы идти — сторожевой пес out-of-the-box, который позволяет почти все, что можно было бы пожелать.

О, и PLEASE не создавайте своего собственного сторожевого пса — это, скорее всего, оставит вас с необработанными ошибками и однажды сделает вашу жизнь плохой.

Поделиться nope     23 февраля 2012 в 09:12



15

Большинство программ Unix/Linux init будут управлять демонами за вас и перезапускать их. Подумайте о размещении вашего сервиса в /etc/inittab . Или вы можете использовать Upstart или systemd .

Все эти программы работают как PID 1 , и их работа заключается в мониторинге и перезапуске системных процессов.

Судя по вашему тегу Busybox, я бы предположил, что вы используете встроенную систему. На них сценарии инициализации стиля System V со всеми их сценариями shell действительно излишни. Вероятно, вам следует вырвать все это и заменить записями в заданиях /etc/inittab , upstart или systemd.

Поделиться Zan Lynx     31 января 2012 в 02:01



9

Как насчет использования cron? Установите небольшое задание cron, которое выполняется каждую минуту. Проверьте, работает ли ваше приложение (с помощью ps), А если нет, перезапустите его.

Сделайте такой крошечный сценарий:

#!/bin/bash
if [ ! "$(pidof myapp)" ] 
then
  /path/to/myapp &
fi

Вы проверяете, есть ли «myapp» в списке процессов. «!» отменяет тест. Если его там нет, он работает «myapp». «&» — это просто так, он начинается в фоновом режиме.

Добавьте это к cron. В зависимости от вашей системы и предпочтений есть несколько способов сделать это. Классический вариант — использовать crontab. Существует много документации о том, как указать вашу строку crontab, но вы, вероятно, хотите что-то вроде этого:

* * * * * /path/to/the/script.sh > /dev/null

Это будет запускать ваш тест каждую минуту каждого часа каждого… Вы поняли, о чем я.

Поделиться Janne     31 января 2012 в 00:40


  • Как обнаружить проблему, возникающую в watchdog daemon в Linux (Debian) перед перезагрузкой watchdog OS

    Я работаю над прикладным проектом на Debian Linux, который включает в себя программное обеспечение watchdog для мониторинга других сервисов с помощью файла PID, созданного сервисами.

    Я следую шагам из http:/ / linux.die.net/man/5 / watchdog.conf и устанавливаю его с помощью apt-get установить…

  • Как использовать Watchdog

    Используя watchdog, я хочу, чтобы он искал обновленный файл в каком-то каталоге, в случае этого обновленного файла он захватывает имя файла и запускает определенный скрипт с именем файла и отправляет вывод в другой каталог в виде txt-файла. Когда текстовый файл появится в новом каталоге, каким-то…



4

Используйте /etc/inittab

вы можете использовать его для запуска на определенных уровнях запуска, и если он будет убит, то будет автоматически перезапущен

n:2345:respawn:/path/to/app

Это заставит его возродиться в run levels 2345, вам, вероятно, нужно только 3 и 5, но это будет работать нормально и встроено в Linux.

Поделиться darren102     31 января 2012 в 01:59



2

Документация сторожевой-это здесь: http://linux. die.net/человек/8/Барбос

Но, похоже, это не то, чего ты хочешь. Сторожевой пес программного обеспечения linux перезагрузит машину, а не просто перезапустит ваш процесс.

Вы можете легко сделать свой собственный сторожевой пес. Например, ваша программа может периодически записывать некоторый временный файл и запускать скрипт, который время от времени проверяет файл и перезапускает процесс, если он не обновлялся в течение некоторого времени.

Поделиться TJD     31 января 2012 в 01:46



2

Если вы используете systemd, то есть 2 сторожевых пса: один для аппаратного обеспечения (используя systemd.conf или используя сторожевой демон) и один для демонов, инициализированных как службы. Если systemd это ваш вариант взгляните на следующее: http://0pointer.de/blog/projects/watchdog.html

Поделиться fabatera     24 февраля 2016 в 16:28



1

Вы можете использовать утилиту «Monit» для перезапуска и мониторинга ваших служб. Просто установить путем выдачи команды `»apt-get установить монит».

Поделиться Akki     08 мая 2018 в 12:19



0

Если кто-то пришел на эту страницу в поисках сторожевого пса операционной системы (который прямо не является тем, что хотел OP), то это то, что вам нужно:

sudo apt-get install watchdog
service watchdog status
service watchdog start 

Чтобы проверить, что он работает, выполните:

tail -f /var/log/syslog | grep watchdog

Вы должны увидеть что-то вроде:

Jul 25 22:03:35 nuc watchdog[14229]: still alive after 733 interval(s)
Jul 25 22:03:36 nuc watchdog[14229]: still alive after 734 interval(s)
Jul 25 22:03:36 nuc watchdog[14229]: still alive after 735 interval(s)
Jul 25 22:03:37 nuc watchdog[14229]: still alive after 736 interval(s)
Jul 25 22:03:37 nuc watchdog[14229]: still alive after 737 interval(s)

Надеюсь, я правильно отвечаю на этот вопрос. Все остальные ответы кажутся очень разными.

Поделиться Sridhar Sarnobat     26 июля 2017 в 05:02



-2

Вы можете попробовать wdog, который представляет собой утилиту, написанную на c++ и связывающуюся с фреймворком Kahless_9. Исходный код для этого можно загрузить с сайта: https://github.com/zepher999/wdog и, следовательно, обновить в соответствии с вашими собственными потребностями. Есть еще некоторые изменения в списке TODO, необходимые для будущего, но как это должно удовлетворить ваши текущие требования.

Утилита требует в качестве входных данных файл csv, в котором содержатся все процессы, подлежащие наблюдению, с их аргументами. При запуске утилита запускает все эти процессы, обозначенные в файле csv, и отслеживает их на предмет выхода/завершения, после чего перезапускает процесс.

В настоящее время wdog позволяет останавливать/убивать контролируемые процессы, а также запускать утилиту в горячем или холодном режиме. Горячий режим позволяет утилите использовать кэшированные записи для мониторинга уже запущенных процессов, в то время как запуск в холодном режиме отбрасывает такие кэшированные значения, тем самым пытаясь запустить все процессы.

Утилита также имеет возможность запускать экземпляр самой себя для мониторинга самой себя, тем самым имея сторожевой пес для сторожевого пса.

Поделиться zepher     18 октября 2017 в 13:19


Похожие вопросы:


Как написать простой таймер WatchDog в C на linux?

TCP таймер KEEPALIVE имеет продолжительность по умолчанию 2 часа. Каковы наилучшие методы для того, чтобы знать, что соединение/сокет TCP не работает как можно скорее — Является ли реализация…


Как работает Linux NMI watchdog?

Теперь я сталкиваюсь с проблемой Linux NMI Watchdog. Я хочу использовать Linux NMI сторожевой собакой для обнаружения и восстановления OS повесить. Поэтому я добавляю nmi_watchdog=1 к grub.cfg. А…


Как установить Software Manager (от Linux Mint) в Xubuntu?

Я удалил Ubuntu Software Center и хотел бы установить менеджер программного обеспечения вместо Linux Mint.


Как изменить сторожевой таймер в linux embedded

Я должен использовать linux watchdog driver (/dev/watchdog). он отлично работает, я пишу такой символ: echo 1 > /dev/watchdog И сторожевой пес запускается, и примерно через 1 минуту система…


Ненормальное использование CPU — Okio Watchdog

Я использую OkHttp (сначала оригинальную версию, а затем обновил ее до OkHttp3), некоторые пользователи моего приложения сообщают о значительной потере времени автономной работы, когда приложение не…


Как обнаружить проблему, возникающую в watchdog daemon в Linux (Debian) перед перезагрузкой watchdog OS

Я работаю над прикладным проектом на Debian Linux, который включает в себя программное обеспечение watchdog для мониторинга других сервисов с помощью файла PID, созданного сервисами. Я следую шагам…


Как использовать Watchdog

Используя watchdog, я хочу, чтобы он искал обновленный файл в каком-то каталоге, в случае этого обновленного файла он захватывает имя файла и запускает определенный скрипт с именем файла и…


Как пинговать /dev/watchdog из 2-х процессов?

В Linux (работает на ARM) есть один процесс, который имеет открытый fd для /dev/watchdog/ и отправляет ioctl() каждые несколько секунд в качестве keep alive: while (1) { ioctl(fd, WDIOC_KEEPALIVE,…


Как активировать модуль bcm2835_wdt watchdog kernel для raspberry pi 3?

Я пытался активировать сторожевой модуль bcm2835_wdt raspberry pi 3 в течение 6 часов, но не смог. modprobe bcm2835_wdt не возвращает ошибки, но команда lsmod не возвращает модуль bcm2835_wdt в…


Как добавить еще FLAG причины вызвать перезагрузку с watchdog в Linux?

Я использую iMX8MM с Yocto. Я пытаюсь выяснить причину перезагрузки с помощью Watchdog. Я узнаю watchdog.h и есть много FLAGs: #define WDIOF_OVERHEAT 0x0001 /* Reset due to CPU overheat */ #define…

Watchdog — Wiren Board

Сторожевой таймер (англ. watchdog) — аппаратно реализованная схема контроля за зависанием системы.

Представляет собой отдельную микросхему-компаратор, ведущую отсчёт времени. Если таймер досчитывает до заданного времени (около 15 секунд), происходит перезагрузка по питанию (выключение одной из линий питания на 3-4 секунды). В нормальном режиме таймер периодически сбрасывается подачей переменного сигнала, подаваемого на вход таймера с одного из выводов GPIO процессора. Этот GPIO контролируется специальным сервисом Linux watchdog. Интерфейс сторожевого таймера /dev/watchdog1, конфигурация сервиса хранится в файле /etc/watchdog.conf.

Отключение сторожевого таймера

Сторожевой таймер иногда требуется отключить:

  1. Если вам нужно полностью выключить контроллер, не снимая с него питание (например, по событию от источника бесперебойного питания) — если сторожевой таймер будет работать, то контроллер даже после команды halt через некоторое время перезагрузится по питанию, и начнёт работать. При отключенном сторожевом таймере возобновление работы контроллера будет возможно только при ручном сбросе питания контроллера.
  2. Если вы неправильно настроили одну из важных служб контроллера, и он ушёл в циклическую перезагрузку: из-за неправильной конфигурации службы не будут запускаться, а сторожевой таймер будет замечать их отсутствие и перезапускать контроллер.

Отключение сторожевого таймера аппаратным способом

Для отключения требуется разобрать корпус контроллера и соединить один из выводов разъема ON/OFF с GND.

На иллюстрациях показано, какие выводы необходимо соединить для этого в контроллерах Wiren Board 5 и WirenBoard 6. Нужный вывод разъема ON/OFF отмечен красной стрелкой, выводы GND (можно использовать любой) отмечены красными кружками. Фиолетовой линией показан пример соединения.

Отключение сторожевого таймера программным способом

Этим способом вы сможете только остановить циклическую перезагрузку из-за неправильной работы ПО. Добиться им полного выключения контроллера при наличии питания не получится.

Чтобы отключить сторожевой таймер, остановите его службу:

Но после перезагрузки контроллера служба сторожевого таймера запустится снова.

Если вы исправили ошибки в работе ПО и хотите запустить обратно сторожевой таймер без перезагрузки контроллера, выполните

Если вы хотите навсегда отключить слежение сторожевого таймера за одним из сервисов, отредактируйте конфигурационный файл /etc/watchdog.conf, закомментировав строки соответствующих сервисов (в этом примере отключено слежение за nginх):

# Test if vital daemons are running
pidfile		= /var/run/syslogd.pid 
pidfile		= /var/run/sshd.pid
pidfile		= /var/run/mosquitto.pid
#pidfile		= /var/run/nginx.pid

а затем выполните

Ботнет WatchDog на протяжении двух лет атакует Windows- и Linux-серверы

Ботнет WatchDog на протяжении двух лет атакует Windows- и Linux-серверы

Alexander Antipov

Операторы ботнета перехватывают контроль над серверами для добычи криптовалюты Monero.


Исследователи безопасности из подразделения Unit 42 компании Palo Alto Networks рассказали подробности об одной из крупнейших и продолжительных вредоносных кампаний по криптоджекингу с целью добычи криптовалюты Monero. Операторы ботнета WatchDog действуют с января 2019 года и уже успели добыть не менее 209 Monero на общую сумму около $32 тыс. По словам экспертов, WatchDog написан на языке программирования Go и заражает системы под управлением Windows и Linux.

Точкой входа для атак операторов ботнета были устаревшие корпоративные приложения — злоумышленники использовали 33 различных эксплойта для 32 уязвимостей в программном обеспечении, таком как Drupal, Elasticsearch, Apache Hadoop, Redis, Spring Data Commons, SQL Server, ThinkPHP, Oracle WebLogic и CCTV (в настоящее время неизвестно, является ли целью устройства видеонаблюдения или имеется в виду другое ПО с названием «cctv»).

По результатам анализа вредоносного ПО WatchDog, исследователи оценили размер ботнета от 500 до 1 тыс. зараженных систем.

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

WatchDog состоит из двоичного набора из трех частей и файла скрипта bash или PowerShell. Двоичные файлы выполняют определенные функции, одна из которых имитирует функциональность сторожевого демона Linux, гарантируя, что процесс добычи не зависнет, не перегрузится или не завершится неожиданно. Второй двоичный файл, написанный на языке Go, загружает настраиваемый список сетевых диапазонов IP-адресов перед тем, как предоставить функциональные возможности целевых операций эксплуатации идентифицированных систем NIX или Windows, обнаруженных во время операции сканирования. Наконец, третий двоичный скрипт инициирует операцию добычи криптовалюты на операционных системах Windows или NIX с использованием пользовательских конфигураций из инициированного скрипта bash или PowerShell.

Криптоджекинг (cryptojacking) – процесс выполнения операций криптомайнинга на системах, которые не принадлежат и не обслуживаются операторами майнинга.


Поделиться новостью:

Использование watchdog I6300ESB в виртуальных машинах в Cloud2

Сегодня мы расскажем о полезной возможности Cloud2, которая позволяет повысить доступность виртуальных машин за счет использования виртуального устройства watchdog, которое доступно внутри VPS.

Сначала несколько слов о том, что такое watchdog. В апаратных серверах промышленного класса всегда есть специальная микросхема, которая работает автономно от всего и представляет собой обычный таймер с действием при достижении нуля. По умолчанию, таймер отключен и действие не установлено, но с помощью специального программного обеспечения, например, ipmitool, можно это изменить и задать определенное поведение — например, перезапуск сервера через reset при достижении нулевого значения, а начальное значение, например, установить в 360 секунд. Далее, в системе запускается специальная программа, которая просто обновляет таймер, не давая ему достигнуть нулевой отметки. Таким образом, пока система работает и процессы выполняются, таймер обновляется и watchdog не срабатывает, однако, как только операционная система зависла, программа, обновляющая таймер перестает работать тоже. В течение максимум 360 секунд счетчик достигнет нулевой отметки, и система перезагрузится с помощью виртуального нажатия на кнопку «reset».  Механизм абсолютно надежный, поскольку работает на уровне аппаратного обеспечения, позволяя администраторам в большинстве случаев значительно уменьшить время недоступности систем при возникновении ошибочных ситуаций.

Реализация для виртуальных машин. Для виртуальных машин тоже существуют реализации watchdog, которые внутри виртуальной машины воспринимаются как аппаратные, при этом виртуализация этой микросхемы производится самим гипервизором и работает отдельно от виртуальной машины. Таким образом, если виртуальная машина зависнет, гипервизор сможет выполнить заданное действие для нее, если watchdog настроен и запущен.

Реализация в Cloud2. В Cloud2 используется гипервизор KVM, который поддерживает watchdog на базе микросхемы Intel i6300esb, эмуляция которой и осуществляется гипервизором. Мы задали действие для watchdog как reset, таким образом при зависании машина будет перезапускаться.

Использование watchdog в Cloud2. Использование i6300ESB в ОС Linux не представляет труда. Для начала использования необходимо выполнить следующие действия (Ubuntu Linux 16.04):

Установить ПО watchdog:

# apt-get update && apt install watchdog

Узнать как собрана поддержка устройства I6300ESB для вашей ОС:

# grep I6300ESB /boot/config-$(uname -r)
CONFIG_I6300ESB_WDT=m

Если «m», значит, модуль необходимо загрузить. Если «y», значит, что поддержка встроена в ядро, если «n», требуется пересборка ядра. Скорее всего, у вас будет «m», если это так, необходимо установить дополнительные компоненты ядра:

# apt install linux-image-extra-$(uname -r)

Теперь можно загрузить модуль:

# modprobe i6300esb
# lsmod | grep i6300esb
i6300esb 16384 1

Видим, что все отлично — модуль загружен. Теперь необходимо добавить его для автоматической загрузки. Пакет watchdog в Ubuntu позволяет сделать это через добавление параметра в настройки запуска сервиса watchdog:

# cat /etc/default/watchdog 
run_watchdog=1
run_wd_keepalive=1
watchdog_module="i6300esb"

Последняя строка как раз указывает, что надо сделать такую загрузку. Теперь выполним настройку сервиса watchdog. В самом простом варианте необходимо раскомментировать строку:

# cat /etc/watchdog.conf
watchdog-device = /dev/watchdog

Выполним запуск сервиса watchdog:

# service watchdog start

Если запуск прошел успешно, то в журнале /var/log/syslog, Вы увидите следующие записи:

Oct 2 03:55:08 sop watchdog[22526]: test=none(0) repair=none(0) alive=/dev/watchdog heartbeat=none to=root no_act=no force=no
Oct 2 03:55:08 sop watchdog[22526]: watchdog now set to 60 seconds
Oct 2 03:55:08 sop watchdog[22526]: hardware watchdog identity: i6300ESB timer

Если система зависнет, то в течение 60 секунд для нее будет выполнено действие «reset». Убедитесь, что сервис watchdog корректно стартует после перезапуска системы.

Проверить работоспособность можно посредством генерации состояния Kernel Panic:

echo c > /proc/sysrq-trigger

Не более чем через 60 секунд система должна перезагрузиться.

В статье приведена настройка только для Ubuntu Linux. Для Debian, CentOS и других ОС семейства Linux настройка будет похожа. Настройка для других операционных систем (MS Windows, *BSD и других) осуществляется посредством интерфейсов и приложений, которые в них предоставляются для взаимодействия с таймером i6300esb и в этой статье не рассматриваются.

Using Systemd for Automated System Recovery

Симптомы
With the inclusion of support for watchdog hardware, systemd can now perform the function of a watchdog daemon Linux. On Dell PowerEdge systems, this hardware could either be the chipset watchdog timer built into the platform’s chipset (like Intel ICH9) or Dell iDRAC’s IPMI compliant BMC watchdog timer.

Dell iDRAC provides Automated System Recovery which, in addition to recovering from OS lock-ups, can capture a screen shot for analysis at a later time. It was necessary to install additional software on the OS to enable this. With newer distributions supporting systemd, this feature will work with software available natively in a distribution, eliminating the need for add-on software.

It was however possible to use the watchdogd daemon on Linux, but there was a probability where the daemon itself could lock-up while the rest of the system was operational. systemd acts as the software watchdog for all system services and the BMC watchdog timer acts as the hardware watchdog for systemd itself. So if systemd is non-operational, there is good chance that the system is unusable in general. So we now have a more reliable method for all system services, the manager of the services (systemd) to be ‘watched’ by the BMC’s watchdog timer.

The glue between systemd and Dell iDRAC’s BMC watchdog is the ipmi_watchdog kernel module, which provides Linux watchdog API access to the BMC watchdog via /dev/watchdog. Systemd uses this interface to kick the watchdog periodically.


Setting up systemd with ipmi_watchdog Systemd can be configured to use iDRAC BMC watchdog with these steps (on Fedora 19):
  1. Since the system has two watchdog timers (chipset and BMC), we can use either of them. For this example, we will disable the chipset watchdog. The chipset watchdog can be disabled by setting the «OS Watchdog Timer» option in the System BIOS to «Disabled» (default).
  2. Arrive at a timeout value for the watchdog, say 180 seconds.
  3. Enable the ipmi_watchdog kernel module to load at system startup with the timeout from above:
  • Method1: Create /etc/modules-load.d/ipmi_watchdog with the following content
    • options ipmi_watchdog timeout=180
    • blacklist iTCO_wdt  # Optional. If chipset watchdog is not disabled in BIOS setup.
  • Method2:
    • Install OpenIPMI rpm
      • $ sudo yum install OpenIPMI
    • Set IPMI_WATCHDOG=yes and IPMI_WATCHDOG_OPTIONS with the timeout in /etc/sysconfig/ipmi.
    • Enable the ipmi service to startup automatically
      • $ sudo systemctl enable ipmi
  • Enable systemd’s watchdog:
    • Uncomment and set RuntimeWatchdogSec=180 in /etc/systemd/system.conf
  • Restart systemd
    • # systemctl daemon-reexec


Test if this works:
  1. Check if watchdog is active
    • $ sudo journalctl |grep -i ‘hardware watchdog’   # should show that systemd is setup to use IPMI watchdog.
    • $ sudo ipmitool mc watchdog get        # check if the «Watchdog Timer Is: Started/Running».
  2. Test by simulating a Kernel Panic (do not do this on a production system). Ensure kdump is disabled.
    • $ sudo echo c > /proc/sysrq-trigger
  3. After system reset, verify that a picture of the failure screen is available in the iDRAC
    • Login to iDRAC web GUI
    • Overview -> Server -> Troubleshooting -> Last Crash Screen.
  Note: that this feature is unsupported by Dell at this time and is shared here with the intent of soliciting feedback from the community at https://lists.us.dell.com/mailman/listinfo/linux-poweredge.

 

21 февр. 2021

Оцените эту статью

Благодарим вас за отзыв.

К сожалению, наша система обратной связи в настоящее время не работает. Повторите попытку позже.

Комментарии не должны содержать следующие специальные символы: ()\

Что такое Watchdog и как он работает в Keenetic – Keenetic

Для начала обратимся к Википедии:

«Сторожевой таймер, реже контрольный таймер (англ. watchdog timer букв. «сторожевой пёс») — аппаратно реализованная схема контроля над зависанием системы. Представляет собой таймер, который периодически сбрасывается контролируемой системой. Если сброса не произошло в течение некоторого интервала времени, происходит принудительная перезагрузка системы.
[…]
Физически сторожевой таймер может быть:
[…]
— Компонентом устройства, например, микросхемой на материнской плате.
— Частью кристалла SoC, микроконтроллера.«

Подобные таймеры есть в электронных схемах подавляющего большинства встраиваемой электроники, в том числе и в интернет-центрах Keenetic. Их цель — предотвратить такое повисание, вывод из которого возможен был бы только при наличии физического доступа к устройству. В предположении, что роутер может быть установлен где-то, куда вы не можете в случайный момент времени подойти и выключить ему электропитание. А потом включить.

По сути, сторожевой таймер можно представить себе в виде соседа, который сидит рядом с вами на лекции и периодически задает вопросы, чтобы проверить, что вы не уснули. Если сосед не получает ответа в течение некоторого времени, он начинает пихать вас в бок, чтобы разбудить.

Вы могли бы сами задавать себе вопросы в уме, пытаясь таким образом поддерживать себя бодрствующим. Тогда это был бы «программный» сторожевой таймер. Но есть серьезные основания полагать, что если после очередного вопроса самому себе вы бы сладко уснули, не дав ответа, то и разбудить самого себя в последний момент тоже не успели бы. Потому сторожевой таймер — это, как правило, все-таки отдельный компонент, внешний по отношению к контролируемой системе. Как в случае с соседом. И если сосед на лекции — это ненадежный сторожевой таймер, потому что он сам может уснуть, то аппаратные реализации таких таймеров делаются значительно более надежными (за счет простоты), чем контролируемая система.

Если вернуться к Кинетикам, то сторожевой таймер в них является частью микросхемы SoC (процессора). Он присутствует во всех используемых нами микросхемах производства компании MediaTek, причем кропотливо патчится нашими разработчиками для работы именно на уровне ядра (референсные вотчдоги чипмейкера могут быть юзерспейсными и при высокой нагрузке давать ложные срабатывания из-за низкого приоритета). Он занимается тем, что постоянно считает от некоторого числа до нуля. И как только он добирается до нуля, то тут же выполняет аппаратную перезагрузку процессора. Микропрограмма (прошивка) Кинетика стремится не дать таймеру досчитать до нуля, время от времени подсовывая ему новую точку отсчета. Таким образом, можно с некоторыми допущениями утверждать, что если прошивка повисает, то она перестает выдавать таймеру новую точку отсчета, он-таки добирается до нуля, и вся система перезагружается.

С допущениями потому, что программная часть кинетика, как и ваш внутренний мир во время сидения на лекции, это весьма сложная система из многих компонентов. И если вы, к примеру, перестаете записывать за лектором, но продолжаете отвечать соседу, то сосед не считает вас уснувшим. Так же сторожевой таймер не считает Кинетик повисшим, если, например, у него повис клиент DHCP. Что чрезвычайно маловероятно, но все же. Взаимодействует с таймером только ядро микропрограммы, которое ответственно за базовые функции системы. Такие как маршрутизация трафика и Wi-Fi.

Так что с уверенностью можно сказать, что если если вам каким-то чудом удалось ввести Кинетик в такое состояние, что ядро перестало успевать сбрасывать счетчик сторожевого таймера (а это также означает, что Кинетик перестал успевать выполнять свои первоочередные задачи), то он сам выйдет из этого состояния перезагрузкой (временной интервал составляет не более 15 секунд от зависания до перезагрузки). А если вы обнаружили Кинетик полностью повисшим, и не реагирующим ни на что, кроме отключения питания, то увы, но мы скорее склонны подозревать, что он сломан аппаратно.

Во всех остальных случаях мы считаем ненужным перезагружать Кинетик целиком, подобно тому как это делают некоторые роутеры других производителей. Потому что уверены в своем коде (и его тестовом покрытии) настолько, чтобы утверждать: если у вас пропал доступ в Интернет, то это не значит, что все компоненты микропрограммы рассыпались, как карточный домик. Это просто значит, что надо переустановить подключение к провайдеру. В крайнем случае, перезагрузить USB-модем, через который осуществляется доступ в Интернет. За все это у нас отвечает компонент Ping Checker.

 

Объяснение сторожевого таймера ядра

Linux — подсказка Linux

Сторожевой таймер ядра Linux

Сторожевой таймер ядра Linux используется для отслеживания работы системы. Предполагается, что система автоматически перезагружает зависшие системы из-за неисправимых программных ошибок. Модуль сторожевого таймера зависит от используемого оборудования или микросхемы. Пользователям персональных компьютеров не нужен сторожевой таймер, так как они могут сбросить систему вручную. Однако это полезно для критически важных систем, которым необходима возможность перезагрузки без вмешательства человека.Например, серверы в удаленном месте или встроенное оборудование на космическом корабле, которым требуются возможности автоматического сброса оборудования.

Предупреждение: соблюдайте осторожность

Неправильная конфигурация сторожевого таймера в вашей системе может вызвать такие проблемы, как:

  • Бесконечный цикл перезагрузки
  • Повреждение файла из-за аппаратного сброса
  • Непредсказуемые случайные перезагрузки

Поэтому избегайте использования живых серверов для тестирования сторожевого таймера ядра Linux.

Сторожевой модуль

Сторожевой таймер на стороне оборудования устанавливает таймер, который истекает по истечении заданного периода.Затем программное обеспечение сторожевого таймера периодически обновляет аппаратный таймер. Если программное обеспечение перестает обновляться, то по истечении заданного периода таймер выполняет аппаратный сброс устройства. Чтобы сторожевой таймер работал, производитель материнской платы должен использовать сторожевой таймер микросхемы. Часто в документации производителя не ясно, была ли реализована функциональность. В этом случае вы должны проверить это.

Кроме того, вам понадобится правильный модуль ядра сторожевого таймера, который будет загружен в вашу систему Linux.В разных чипах используются разные модули. Например:

  • Наборы микросхем Intel могут использовать модуль «iTCO_wdt»
  • Оборудование HP может использовать «hpwdt»
  • Мэйнфреймы IBM могут использовать «vmwatchdog»
  • Xen VM может использовать «xen_wdt»

После загрузки модуля вы можете проверить / dev / watchdog в системе Linux. Если этот файл присутствует, это означает, что был загружен драйвер устройства или модуль ядра сторожевого таймера. Система периодически продолжает писать в / dev / watchdog.Это также называется «пинать или кормить сторожевого пса». Если системе не удается запустить или накормить сторожевого пса, то через некоторое время система будет полностью перезагружена.

Демон сторожевого пса

Демон сторожевого таймера открывает устройство и выполняет необходимое обновление, чтобы система не перезагружалась. Он может тестировать табличное пространство процессов, использование памяти, доступность файлов, рабочую перегрузку, переполнение таблицы файлов, пинг IP-адреса, трафик сетевого интерфейса, температуру, запущенные процессы и многое другое.Если тесты терпят неудачу, сторожевой таймер вызывает отключение.

Сторожевой таймер запуска и остановки

Демон Watchdog должен запускаться во время загрузки и работать в фоновом режиме. Вы можете проверить, работает ли он:

Если ядро ​​НЕ скомпилировано с CONFIG_WATCHDOG_NOWAYOUT, то, если вы правильно закроете / dev / watchdog, это не вызовет перезагрузки. Вы можете записать символ V в / dev / watchdog, а затем закрыть файл. Это должно остановить сторожевого пса.

Тестирование сторожевого таймера

Если вы хотите проверить, работает ли аппаратный сторожевой таймер, вы можете сделать следующее из командной строки администратора:

И дважды нажмите «ввод» и ждите.Запрос больше не вернется. Через некоторое время, в зависимости от настроек вашего ядра, система должна выполнить полную перезагрузку.

Артикул:

watchdog (8): программный сторожевой таймер — Linux man-страница

Имя

watchdog — демон программного сторожевого таймера

Сводка

сторожевой пес [ -f | —force ] [ -c имя_файла | —config-file имя_файла ] [ -v | — вербальный ] [ | —sync ] [ -b | —softboot ] [ -q | — бездействие ]

Описание

Ядро Linux может перезагрузить систему при обнаружении серьезных проблем. Это может быть реализовано с помощью специального сторожевого устройства или чуть менее надежный программный сторожевой таймер внутри ядра. В любом случае должен быть демон, который сообщает ядру, что система работает нормально. Если демон останавливается при этом система сбрасывается.

watchdog — такой демон. Он открывает / dev / watchdog и продолжает писать в него достаточно часто, чтобы ядро ​​не перезагружалось, хотя бы один раз за минута. Каждая запись задерживает время перезагрузки еще на минуту.После минуты бездействия аппаратное обеспечение сторожевого таймера вызовет сброс. В случае программного обеспечения Возможность перезагрузки сторожевого таймера будет зависеть от состояния машин и прерываний.

Демон сторожевого таймера может быть остановлен без перезагрузки, если устройство / dev / watchdog закрыто правильно, если только ваше ядро ​​не скомпилировано с Параметр CONFIG_WATCHDOG_NOWAYOUT включен.

Тесты

Демон сторожевого таймера выполняет несколько тестов для проверки состояния системы:

• Таблица процессов заполнена?

• Достаточно ли свободной памяти?

• Доступны ли некоторые файлы?

• Изменялись ли некоторые файлы в течение заданного интервала?

• Не слишком ли высока средняя рабочая нагрузка?

• Произошло ли переполнение файловой таблицы?

• Выполняется ли процесс? Процесс определяется файлом pid.

• Отвечают ли некоторые IP-адреса на эхо-запрос?

• Получают ли сетевые интерфейсы трафик?

• Не слишком ли высокая температура? (Температурные данные доступны не всегда.)

• Выполнение пользовательской команды для выполнения произвольных тестов.

• Выполните одну или несколько команд тестирования / восстановления из /etc/watchdog.d. Эти команды вызываются с аргументом test или repair .

Если какая-либо из этих проверок не удалась, сторожевой таймер отключит систему.Если какой-либо из этих тестов, кроме определяемого пользователем двоичного файла, длился дольше одной минуты, машина тоже будет перезагружен.

Опции

Доступные параметры командной строки:

-v , — вербальный
Установить подробный режим. Реализуется, только если скомпилирован с SYSLOG . В этом режиме каждая информация будет регистрироваться в LOG_DAEMON с приоритетом. LOG_INFO. Это полезно, если вы хотите точно увидеть, что происходило до тех пор, пока сторожевой таймер не перезагрузил систему.В настоящее время он регистрирует температуру (если доступно), средняя загрузка, дата изменения проверяемых файлов и частота перехода в спящий режим.
-s , -sync
Пытаться синхронизировать файловую систему каждый раз, когда процесс находится в активном состоянии. Обратите внимание, что система перезагружается, если по какой-либо причине синхронизация длится дольше минута.
-b , — softboot
Мягкая загрузка системы при возникновении ошибки во время основного цикла, например.грамм. если данный файл недоступен через вызов stat (2). Обратите внимание, что это не применяются к открытию / dev / watchdog и / proc / loadavg , которые открываются до запуска основного цикла.
-f , — усилие
Принудительное использование заданного интервала или максимальной средней нагрузки, указанной в файле конфигурации.
-c файл конфигурации , —config-файл файл конфигурации
Используйте файл конфигурации в качестве файла конфигурации вместо файла по умолчанию / etc / watchdog.conf .
-q , — бездействующий
Не перезагружайте и не останавливайте машину. Это сделано для тестирования. Все проверки выполняются, и результаты регистрируются как обычно, но никаких действий не предпринимается. Также ваша аппаратная карта или драйвер сторожевого таймера программного обеспечения ядра не активированы. Проверка температуры также отключена, поскольку при этом включается аппаратный сторожевой таймер. несколько карточек.

Функция

После запуска сторожевого таймера переходит в фоновый режим и затем по очереди пробует все проверки, указанные в его файле конфигурации.Между каждыми двумя тесты, которые он записывает в устройство ядра, чтобы предотвратить сброс. После завершения всех тестов сторожевой таймер на некоторое время засыпает. Драйверы ядра ожидают записи к сторожевому устройству каждую минуту. В противном случае система будет перезагружена. По умолчанию сторожевой таймер спит всего на 10 секунд, поэтому он запускает устройство. достаточно рано.

При высокой загрузке системы сторожевой таймер может быть выгружен из памяти и не сможет вернуться вовремя. В этих условиях ядро ​​Linux перезагрузит машину.Чтобы избежать ненужных перезагрузок, убедитесь, что для переменной realtime установлено значение да в конфигурации. файл watchdog.conf . Это добавляет поддержку в реальном времени для сторожевого таймера : он блокируется в памяти, и проблем не должно быть даже под самая высокая из нагрузок.

Также вы можете указать максимально допустимую среднюю нагрузку. После достижения этой средней нагрузки система перезагружается. Вы можете указать максимальную среднюю нагрузку для 1 минута, 5 минут или 15 минут.По умолчанию этот тест отключен. Будьте осторожны, не устанавливайте этот параметр слишком низким. Чтобы установить значение меньше, чем предопределенное минимальное значение 2, вы должны использовать опцию -f .

Вы также можете указать минимальный объем виртуальной памяти, который должен быть доступен как бесплатная. Как только используется больше виртуальной памяти, действие выполняется Сторожевой пес . Обратите внимание, однако, что сторожевой таймер не делает различий между разными типами использования памяти. Он просто проверяет наличие свободной виртуальной памяти.

Если у вас есть сторожевой таймер с датчиком температуры, вы можете указать максимально допустимую температуру. По достижении этой температуры система останавливается. Значение по умолчанию — 120. Преобразование единиц измерения не производится, поэтому убедитесь, что вы используете те же единицы, что и ваше оборудование. сторожевой таймер выдаст предупреждения, как только температура увеличивается на 90%, 95% и 98% от этой температуры.

При использовании файлового режима сторожевой таймер будет пытаться stat (2) для заданных файлов. Ошибки, возвращаемые stat, будут вызывать перезагрузку , а не .Для перезагрузки Статический вызов должен длиться не менее одной минуты. Это может произойти, если файл находится в смонтированной файловой системе NFS. Если ваша система использует смонтированный NFS файловая система, вы можете попробовать эту опцию. Однако в таком случае опция sync может не работать, если сервер NFS не отвечает.

Watchdog может читать pid из файла pid и видеть, существует ли еще процесс. В противном случае действия предпринимает сторожевой таймер . Так что вы можете для экземпляр перезапустите сервер из вашего бинарного восстановления .

сторожевой таймер будет периодически пытаться выполнить ответвление, чтобы увидеть, заполнена ли таблица процессов. Этот процесс оставит процесс зомби, пока не проснется сторожевой пес снова поднимается и ловит его; это безвредно, не беспокойтесь об этом.

В режиме проверки связи сторожевой таймер пытается выполнить проверку связи с заданными IP-адресами. Эти адреса не обязательно должны быть одной машиной. На трансляцию можно пинговать адрес вместо этого, чтобы увидеть, работает ли еще хотя бы одна машина в подсети.

Не используйте этот широковещательный эхо-запрос, если ваш сотрудник MIS а) не знает об этом и б) не дал вам явного разрешения на его использование!

сторожевой таймер отправит три пакета ping и будет ждать ответа до секунд, где — время, которое он отправит. засыпать между двумя запусками сторожевого устройства.Таким образом, недоступная сеть вызовет не полный сброс, а мягкую перезагрузку.

Вы также можете пассивно протестировать недоступную сеть, просто отслеживая трафик на данном интерфейсе. Если трафик не поступает, считается, что сеть unreachable вызывает мягкую перезагрузку или действие из бинарного файла восстановления.

Watchdog может запускать внешнюю команду для пользовательских тестов. Код возврата , отличный от 0, означает, что произошла ошибка, и сторожевой таймер должен отреагировать. Если внешняя команда прерывается неперехваченным сигналом, это тоже считается ошибкой сторожевым таймером.Команда может занять больше времени, чем временной интервал, определенный для устройство ядра без проблем. Однако сообщения об ошибках генерируются средствами системного журнала. Если вы включили программную загрузку при ошибке, машина будет перезагружается, если двоичный файл не завершается в половине случаев, когда сторожевой таймер спит между двумя попытками запуска устройства ядра.

Если вы укажете двоичный файл восстановления, он будет запущен вместо выключения системы. Если этот двоичный файл не может решить проблему сторожевой таймер будет все равно вызвать перезагрузку после этого.

Если машина останавливается, отправляется электронное письмо, чтобы уведомить человека о том, что машина выходит из строя. Начиная с версии 4.4 сторожевой таймер также будет уведомлять человек, ответственный за перезагрузку машины.

Мягкая перезагрузка

Мягкая перезагрузка (т. Е. Контролируемое выключение и перезагрузка) инициируется для каждой обнаруженной ошибки. Поскольку доступных процессов больше нет, сторожевой таймер все делает сам. Это означает:

1.

Убейте все процессы с помощью SIGTERM.

2.

После короткой паузы завершите все оставшиеся процессы с помощью SIGKILL.

3.

Записать запись о выключении в wtmp.

4.

Сохранить случайное семя из / dev / urandom . Если устройства не существует или нет файла для сохранения, этот шаг пропускается.

5.

Отключить учет.

6.

Отключить квоту и свопинг.

7.

Размонтируйте все разделы, кроме корневого.

8.

Перемонтировать корневой раздел только для чтения.

9.

Выключите все сетевые интерфейсы.

10.

Наконец-то перезагрузитесь.

Проверить двоичный

Если код возврата контрольного двоичного файла не равен нулю сторожевой таймер примет ошибку и перезагрузит систему. Будьте осторожны с этим, если вы используете свойства сторожевого таймера в реальном времени, так как сторожевой таймер будет ждать возврата этого двоичного файла, прежде чем продолжить.Положительный код выхода интерпретируется как код системной ошибки (подробнее см. errno.h ). Отрицательные значения относятся к сторожевому таймеру :

-1

Перезагрузите систему. Это не совсем сообщение об ошибке, а команда watchdog . Если код возврата -1 , сторожевой таймер не будет пытаться запустить сценарий выключения вместо этого.

-2

Перезагрузите систему. Это не совсем сообщение об ошибке, а команда watchdog .Если код возврата -2 , сторожевой таймер просто откажется писать снова устройство ядра .

-3

Превышена максимальная средняя нагрузка.

-4

Температура внутри слишком высокая.

-5

/ proc / loadavg не содержит (или недостаточно) данных.

-6

Данный файл не изменялся за указанный интервал.

-7

/ proc / meminfo содержит недопустимые данные.

-8

Дочерний процесс был остановлен сигналом.

-9

Дочерний процесс не вернулся вовремя.

-10

Бесплатно для личного пользования.

Двоичный ремонт

Двоичный файл восстановления запускается с одним параметром: номером ошибки, из-за которой сторожевой таймер инициировал процесс загрузки. После попытки отремонтировать system двоичный файл должен выйти с 0, если система была успешно отремонтирована и, следовательно, больше нет необходимости загружаться. Возвращаемое значение, не равное 0, говорит watchdog для перезагрузки.Код возврата двоичного файла восстановления должен быть номером ошибки, вызывающей перезагрузку сторожевого таймера . Будьте осторожны с этим если вы используете свойства реального времени, так как сторожевой таймер будет ждать возврата этого двоичного файла, прежде чем продолжить.

Справочник тестов

Исполняемые файлы, помещенные в каталог test, обнаруживаются сторожевым таймером при запуске и запускаются автоматически. Они ограничены по времени директива test-timeout в файле watchdog.conf.

Эти исполняемые файлы вызываются либо с первым аргументом «test» (если выполняется тест), либо с первым аргументом «repair» (если исправление для выполняется ранее неудачная «тестовая» операция).

Как и в случае с тестовыми двоичными файлами и исправлениями, ожидаемые коды выхода для успешной операции тестирования или исправления всегда равны нулю.

Если тестовая операция исполняемого файла завершается неудачно, тот же исполняемый файл автоматически вызывается с аргументом «ремонт», а также с кодом возврата ранее неудачная тестовая операция.

Например, если следующее выполнение возвращает 42:

/etc/watchdog.d/my-test тест

Демон сторожевого пса попытается устранить проблему, позвонив:

/ etc / watchdog. d / my-test ремонт 42

Это позволяет администраторам и разработчикам приложений создавать интеллектуальные команды тестирования / восстановления. Если операция «ремонта» не требуется (или маловероятна для успеха) важно, чтобы автор команды возвращал ненулевое значение, чтобы компьютер все равно перезагружался, как ожидалось.

Обратите внимание, что демон сторожевого таймера может интерпретировать любой из зарезервированных кодов возврата, указанных в разделе «Проверка двоичного кода», и действовать в соответствии с ним до вызова данной команды. в режиме «ремонт».

Ошибки

Пока ничего не известно.

Авторы

Исходный код — это пример, написанный Аланом Коксом , автором драйвера ядра. Все дополнения написаны Михаилом Мескес . Джони Ингрэм задумал проверить среднюю нагрузку. Он также взял на себя конкретную работу Debian. Дэйв Синедж поднял некоторые проблемы с аппаратным сторожевым таймером и помог протестировать этот материал.

Файлы

/ dev / сторожевой таймер

Сторожевое устройство.
/var/run/watchdog.pid
PID-файл работающего сторожевого таймера .

См. Также

watchdog.conf (5)

Ссылка на

чеккворум (8), wd_keepalive (8), вдмд (8)

Обзор демона сторожевого таймера Linux

Обзор демона сторожевого таймера Linux
  1. Linux Watchdog Daemon — Обзор
    1. Введение
    2. Модуль сторожевого пса
    3. Демон сторожевого пса
    4. Нужен ли мне сторожевой таймер?
Вернуться на главную страницу PSC
Вернуться в Watchdog

Введение

С компьютерной точки зрения сторожевой пес — это что-то, обычно аппаратное, который контролирует сложную систему на предмет «нормального» поведения, и если она сбой, выполняет сброс системы, чтобы, надеюсь, восстановить нормальный операция.

Подробнее об этом можно прочитать в статье Википедии. на WDT.

Это последнее средство для поддержания доступности системы и, по крайней мере, для убедитесь, что администратор может удаленно войти в систему для диагностики и исправлять неисправности непостоянным образом. Очевидно, это не остановит аппаратный сбой из-за поломки системы, и это бесполезно против постоянная проблема с программным обеспечением, но для системы, которая в целом исправна ведет себя (особенно, если он расположен на удаленном сайте и / или в остальном важен для работы) он служит для улучшения общая доступность системы.

Если ваше приложение не может выдерживать кратковременный сбой, тогда сторожевой таймер в одиночку не решит, нужно смотреть на других решения высокой доступности для оборудования (например, RAID для ошибки диска защита) и программное обеспечение (кластеризация и зеркалирование приложений) что обеспечит приемлемую степень целостности системы доступность.

В операционной системе Linux сторожевой таймер состоит из двух частей:

  • Фактический аппаратный таймер и модуль драйвера ядра, который может принудительно выполнить аппаратный сброс и;
  • Фон пользовательского пространства демон, который обновляет таймер и предоставляет более широкий диапазон мониторинга здоровья и вариантов восстановления.
Оба могут функционировать независимо, но очевидно, что они предназначены для работают вместе для максимальной защиты.
[начало страницы]

Сторожевой модуль

Обычно аппаратная поддержка сторожевого пса — это просто таймер, который установлен на некоторый разумный тайм-аут, а затем периодически обновляется запущенным программным обеспечением. Если по какой-либо причине программа останавливается обновление оборудования (и не отключило его явным образом), затем он истекает по тайм-ауту и ​​выполняет аппаратный сброс компьютера. В этом Кстати, даже ошибки типа паники ядра обычно могут быть восстановлены. Часто чипсеты, обеспечивающие мониторинг системы (температура, напряжения, скорости вентилятора и т. д.) есть сторожевой таймер, хотя его можно никогда не будьте уверены, что производитель материнской платы использовал ее!

В контексте операционной системы Linux существует стандарт интерфейс к аппаратному обеспечению сторожевого таймера, предоставляемый соответствующими драйвер устройства ядра (модуль), представленный как / dev / watchdog (проверка на это — простой тест загружаемого модуля).Однако такой драйвер обычно не загружается по умолчанию, поэтому вы можете вам придется вручную настроить вашу систему, чтобы загрузить ее. Обычно это делается путем добавления имени модуля в / etc / modules или (еще лучше загружается по запросу) до / etc / default / watchdog путем редактирования watchdog_module = «none», чтобы указать имя модуля.

Linux также предоставляет сторожевой таймер программного обеспечения с помощью softdog. модуль. Хотя это лучше, чем ничего, но гораздо менее эффективно. чем оборудование! В основном, если ядро ​​выходит из строя, ваши средства восстановление в этом случае.

Модуль сторожевого устройства + драйвер обеспечивает самые основные защита. Он запускается всем, что может периодически писать в / dev / watchdog , и если это не удается по какой-либо причине, сторожевой таймер аппаратный тайм-аут и машина перезагружается с помощью аппаратного сброса.

Однако полный сброс обычно нежелателен, так как он рискует повредить файловую систему, поэтому будет намного лучше, если вы сможете вместо этого выполните чистую перезагрузку.
[начало страницы]

Демон сторожевого пса

Для управления сторожевым устройством обычно есть фон демон, который может открывать устройство и периодически обновлять Мероприятия.Однако машина также может попасть в очень непригодный для использования состояние без фактического завершения работы фонового демона операции, поэтому демон сторожевого таймера для Linux может быть настроен периодически запускать ряд базовых тестов, чтобы убедиться, что машина выглядит нормально.

При провале таких тестов (возможно, с определенным количеством повторных попыток). поведение, чтобы не быть слишком «довольным триггером») демон может перезагрузиться машину в умеренном порядке, чтобы вести журнал почему это произошло, и, надеюсь, избежать проблем с файловой системой и т. д.При этом он также имеет «страховку» аппаратного таймера, поэтому если перезагрузка не удалась, следует выполнить аппаратный сброс. это вверх.

Это «умеренно упорядоченное» завершение работы не является нормальным, основанным на инициализации. подход к выключению, при котором правильная последовательность сценариев выключения выполняются, так как это очень вероятно потерпит неудачу в ряде условия, для которых необходимо действие сторожевого таймера (например, выход системы памяти, табличного пространства процесса и т. д.).

Таким образом, вместо этого он выполняет «мушкетон», чтобы остановить все процессы, сигнализируя обо всем с помощью SIGTERM, а затем через 5 секунд с неотразимым SIGKILL, затем пытается обновить wtmp (чтобы выключение было записано), обновите случайное начальное число (чтобы сохранить энтропии), синхронизируйте часы CMOS с системным временем (чтобы гарантировать системное время разумно при перезагрузке), и, наконец, синхронизировать и размонтировать файловые системы перед попыткой сброса с помощью оборудования таймер (если это возможно).

Аппаратный сброс предпочтительнее перезагрузки ядра API, поскольку ядро ​​останавливает сторожевое оборудование при нормальном завершении работы или перезагрузиться, и, следовательно, может зависнуть сразу после этого момента без каких-либо средства автоматического восстановления (например, зависшая карта RAID или подобное).

На самом деле для сторожевого устройства используются два демона. поддержка:

  • wd_keepalive предоставляет только драйвер оборудования открыть / обновить / закрыть действия.
  • «сторожевой таймер» обеспечивает действия драйвера при открытии / обновлении / закрытии наряду с различными другими системными проверками.

Когда система загружается, она запускает wd_keepalive как можно раньше для защиты от серьезных сбоев во время загрузки, затем еще раз сервисы обновляются для запуска полного сторожевого таймера. Нормальный сторожевой таймер не может быть запущен раньше, потому что некоторые тесты могут выполнение может зависеть от ресурсов, которые запускаются позже в цепочке (например, сетевая файловая система, другие демоны для мониторинга и т. д.). по аналогии при выключении главный сторожевой таймер останавливается раньше и wd_keepalive начал на своем месте, чтобы изящно справиться с остановкой сервисы, которые можно отслеживать.
[начало страницы]

Нужен ли мне сторожевой таймер?

Из введения это может быть видно, что большинство систем, которые используются «интерактивно», например, дома ПК, на самом деле он не нужен. В основном, если он вылетает, пока вы используя его, вы обычно пытаетесь Ctrl + Alt + Del (возможно, также Ctrl + Alt + F1 чтобы попробовать войти в текстовый режим) и, если это не удается, просто нажмите кнопку сброса (или удерживайте кнопку питания в течение 5 секунд), чтобы восстановить машина.

В тех случаях, когда сторожевой таймер наиболее полезен, являются ситуации, подобные нашей, когда вы иметь компьютеры, управляющие оборудованием, работающие непрерывно, или обычно серверы, работающие на удаленных сайтах.Обе ситуации где вы можете спать или в отпуске, когда что-то пойдет не так и / или восстановление подразумевает утомительную поездку на объект. В таких случаях последнее средство автоматической перезагрузки весьма ценно.
[начало страницы]


Последнее обновление 26 августа 2019 г., автор: Paul Crawford
Авторские права (c) 2014-19 Пола С. Кроуфорда. Все права защищены.
Электронная почта psc (at) sat (dot) dundee (dot) ac (dot) uk
Абсолютно никаких гарантий, используйте эту информацию на свой страх и риск.

Использование сторожевого таймера в Linux — Блог Кристиана

Сторожевой таймер программного обеспечения

Во-первых: соберите ядро ​​Linux с поддержкой сторожевого таймера, полное руководство находится здесь :

Драйверы устройств
 --->
  [*] Поддержка сторожевого таймера --->
    - * - Ядро драйвера таймера WatchDog
    <*> Программный сторожевой таймер
 

После перезагрузки с новым ядром должен быть / dev / watchdog файл:

 [root @ alarm ~] # ls -l / dev / watchdog
crw ------- 1 root root 10, 130 1 января 01:00 / dev / watchdog
[root @ alarm ~] #
 

Далее: вам нужно будет установить демон сторожевого пса:

 [root @ alarm ~] # pacman -Sy watchdog
:: Синхронизация баз данных пакетов. ..
ядро обновлено
дополнительно 450,8 КиБ 7,72 КБ / с 00:58 [######################] 100%
сообщество 483,5 КиБ 6,38 КБ / с 01:16 [######################] 100%
будильник актуален
aur обновлен
разрешение зависимостей ...
ищу межконфликтные ситуации ...

Цели (1): watchdog-5.12-2

Общий размер загрузки: 0,04 Мбайт
Общий установленный размер: 0,18 Мбайт

Продолжить установку? [Д / Н] г
:: Получение пакетов из дополнительных ...
watchdog-5.12-2-arm 41,9 KiB 76,1K / s 00:01 [######################] 100%
(1/1) проверка целостности упаковки [#####################] 100%
(1/1) загрузка файлов пакетов [#####################] 100%
(1/1) проверка на конфликты файлов [#####################] 100%
(1/1) проверка доступного дискового пространства [#####################] 100%
(1/1) установка сторожевого таймера [#####################] 100%
[root @ alarm ~] #
 

Список файлов, которые устанавливает сторожевой таймер:

 [root @ alarm ~] # pacman -Ql сторожевой таймер
сторожевой / etc /
сторожевой таймер / etc / conf. d /
сторожевой таймер /etc/conf.d/watchdog
сторожевой таймер /etc/conf.d/wd_keepalive
сторожевой таймер /etc/rc.d/
сторожевой таймер /etc/rc.d/watchdog
сторожевой таймер /etc/rc.d/wd_keepalive
сторожевой таймер /etc/watchdog.conf
сторожевой таймер / usr /
сторожевой таймер / usr / lib /
сторожевой таймер / usr / lib / systemd /
сторожевой таймер / usr / lib / systemd / system /
сторожевой таймер /usr/lib/systemd/system/watchdog.service
сторожевой таймер / usr / sbin /
сторожевой таймер / usr / sbin / сторожевой таймер
сторожевой таймер / usr / sbin / wd_identify
сторожевой таймер / usr / sbin / wd_keepalive
сторожевой таймер / usr / share /
сторожевой таймер / usr / share / man /
сторожевой таймер / usr / share / man / man5 /
сторожевой таймер / usr / share / man / man5 / сторожевой таймер.conf.5.gz
сторожевой таймер / usr / share / man / man8 /
сторожевой пес /usr/share/man/man8/watchdog.8.gz
сторожевой таймер /usr/share/man/man8/wd_identify.8.gz
сторожевой таймер /usr/share/man/man8/wd_keepalive. 8.gz
[root @ alarm ~] #
 

Это выглядит интересно, /usr/lib/systemd/system/watchdog.service — это служебный файл Systemd.

Запуск и остановка сторожевого таймера:

Сторожевой таймер запускается автоматически после открытия / dev / watchdog. Для остановки сторожевого пса вам потребуется:

  • Запишите символ V в / dev / watchdog, чтобы предотвратить остановку сторожевой пес случайно
  • Закройте файл / dev / watchdog, если ваше ядро ​​не скомпилировано с Параметр CONFIG_WATCHDOG_NOWAYOUT включен.Когда эта опция включена, сторожевой пес вообще не может быть остановлен.

После включения сторожевого таймера вам необходимо сбрасывать сторожевой таймер каждые 60 секунд, иначе ваша система перезагрузится. Сброс таймера будет производиться сторожевой таймер, если ни один из его тестов не прошел.

Поддерживаемые демоном сторожевого таймера тесты для проверки состояния системы:

  • Таблица процессов заполнена?
  • Достаточно ли свободной памяти?
  • Доступны ли некоторые файлы?
  • Были ли какие-то файлы изменены в течение заданного интервала?
  • Не слишком ли высока средняя рабочая нагрузка?
  • Произошло ли переполнение файловой таблицы?
  • Процесс все еще запущен? Процесс определяется файлом pid.
  • Некоторые IP-адреса отвечают на пинг?
  • Получают ли сетевые интерфейсы трафик?
  • Температура слишком высока? (Температурные данные доступны не всегда.)
  • Выполнить определенную пользователем команду для выполнения произвольных тестов.
  • Выполнить одну или несколько команд тестирования / восстановления из /etc/watchdog.d. Эти команды вызываются с аргументом test или repair.

Файл конфигурации не требует пояснений:

 [root @ alarm ~] # cat / etc / watchdog.конф
#ping = 172.31.14.1
#ping = 172.26.1.255
#interface = eth0
# файл = / var / log / messages
#change = 1407

# Раскомментируйте, чтобы включить test. Установка одного из этих значений на «0» отключает его.
# Надеемся, что эти значения никогда не перезагрузят вашу машину при нормальном использовании.
# (если ваша машина действительно зависла, loadavg будет намного выше 25)
# max-load-1 = 24
# max-load-5 = 18
# max-load-15 = 12

# Обратите внимание, что это количество страниц!
# Чтобы получить реальный размер, проверьте, насколько велик размер страницы на вашем компьютере. # мин-память = 1

# бинарный ремонт = / usr / sbin / repair
# ремонт-тайм-аут =
# test-binary =
# test-timeout =

# сторожевое устройство = / dev / сторожевой таймер

# Значения по умолчанию скомпилированы в двоичный файл
# температура-устройство =
# max-temperature = 120

# Значения по умолчанию скомпилированы в двоичный файл
#admin = root
#interval = 1
#logtick = 1
# журнал-каталог = / var / log / watchdog

# Это значительно снижает вероятность того, что сторожевой таймер не будет запланирован раньше
# ваша машина действительно загружена
realtime = да
приоритет = 1

# Проверьте, работает ли syslogd, включив следующую строку
#pidfile = / var / run / syslogd.пид

[root @ alarm ~] # 

Теперь мы включим сторожевой таймер, в настоящее время он должен быть отключен:

 [root @ alarm ~] # systemctl status watchdog.service
watchdog.service - Демон сторожевого пса
          Загружено: загружено (/usr/lib/systemd/system/watchdog.service; отключено)
          Активный: неактивный (мертвый)

[root @ alarm ~] #
 

Для тестирования я добавил в свой /etc/watchdog. conf следующее:

Итак, когда мое WiFi-соединение теряется, моя система должна перезагрузиться.

Запуск демона сторожевого пса:

 [root @ alarm ~] # systemctl start watchdog.служба
Не удалось выполнить задание службы watchdog.service. Подробности смотрите в 'systemctl status watchdog.service' и 'journalctl -xn'.
[root @ alarm ~] # systemctl status watchdog.service
watchdog.service - Демон сторожевого пса
          Загружено: загружено (/usr/lib/systemd/system/watchdog.service; отключено)
          Активно: не удалось (результат: код выхода) с чт 1970-01-01 01:13:01 CET; 53с назад
        Процесс: 208 ExecStart = / usr / sbin / watchdog (код = завершен, статус = 1 / ОТКАЗ)

[root @ alarm ~] # сторожевой таймер -v
сторожевой таймер: неизвестный хост google.де
[root @ alarm ~] # пинг google.de
PING google.de (173.194.65.94) 56 (84) байт данных.
64 байта из ee-in-f94.1e100.net (173.194.65.94): icmp_seq = 1 ttl = 47 time = 66,7 мс
64 байта из ee-in-f94.1e100.net (173. 194.65.94): icmp_seq = 2 ttl = 47 time = 64,6 мс

--- статистика пинга google.de ---
2 пакета передано, 2 получено, потеря пакетов 0%, время 1002 мс
rtt min / avg / max / mdev = 64,604 / 65,667 / 66,730 / 1,063 мс
[root @ alarm ~] #
 

Хорошо, тогда мне придется использовать IP-адрес, потому что демон сторожевого таймера не запускается.Параметр ping сторожевого таймера поддерживает только числовые IPv4-адреса:

 пинг = 173,194,65,94
interface = wlan0
interval = 20
 

В общем, вы безопаснее пингуете свой маршрутизатор, пакеты на удаленный хост могут получить утерян или задержан, IP-адрес Google может измениться или ваш IP-адрес заблокируется, если вы отправите Пин-запросы к Google 24/7.

И работает:

 [root @ alarm ~] # сторожевой таймер -v
[корень @ тревога ~] # хвост -n 10 /var/log/messages.log
2 фев, 18:35:15 устройство контроля аварийной сигнализации [203]: получил ответ от цели 173.194,65,94
2 фев, 18:35:25 сторожевой таймер [203]: все еще жив после 6 интервалов (с)
2 февраля 18:35:25 сторожевой таймер [203]: устройство wlan0 получило 7176 байт. 
2 фев, 18:35:25 сторожевой таймер [203]: получен ответ от цели 173.194.65.94
2 фев, 18:35:35 сторожевой таймер [203]: все еще жив после 7 интервалов (с)
2 февраля 18:35:35 сторожевой таймер [203]: устройство wlan0 получило 7316 байт
2 фев. 18:35:36 сторожевой таймер [203]: получен ответ от цели 173.194.65.94
2 фев, 18:35:46 сторожевой таймер [203]: все еще жив после 8 интервалов (с)
2 февраля 18:35:46 сторожевой таймер [203]: устройство wlan0 получило 7726 байт.
2 фев 18:35:46 Сторожевой таймер [203]: получил ответ от цели 173.194,65,94
 
 [root @ alarm ~] # сторожевой таймер killall
[root @ alarm ~] # killall сторожевой таймер
[root @ alarm ~] # killall сторожевой таймер
сторожевой таймер: процесс не найден
[root @ alarm ~] # systemctl запустить watchdog.service
[root @ alarm ~] # systemctl status watchdog.service
watchdog.service - Демон сторожевого пса
          Загружено: загружено (/usr/lib/systemd/system/watchdog.service; отключено)
          Активен: активен (работает) с сб 2013-02-02 18:37:09 CET; 2мин 13с назад
        Процесс: 259 ExecStart = / usr / sbin / watchdog (код = завершен, статус = 0 / УСПЕШНО)
        Основной PID: 261 (сторожевой таймер)
          CGroup: имя = systemd: / system / watchdog. служба
                   └───261 / usr / sbin / watchdog

[корень @ тревога ~] # хвост -n 10 /var/log/messages.log
2 февраля 18:37:02 сторожевой таймер [203]: остановка демона (5.12)
2 февраля 18:37:08 alarm systemd [1]: Запуск Watchdog Daemon ...
2 фев, 18:37:09 сторожевой таймер [261]: запускающий демон (5.12):
2 фев, 18:37:09 аварийный таймер [261]: int = 20s realtime = yes sync = no soft = no mla = 0 mem = 0
2 фев, 18:37:09 сторожевой таймер [261]: ping: 173.194.65.94
2 фев, 18:37:09 сторожевой таймер [261]: файл: нет файла для проверки
2 февраля 18:37:09 сторожевой таймер [261]: pidfile: нет серверного процесса для проверки
2 фев, 18:37:09 сторожевой таймер [261]: интерфейс: wlan0
2 февраля 18:37:09 сторожевой таймер [261]: test = none (0) repair = none (0) alive = none heartbeat = none temp = none to = root no_act = no
2 фев 18:37:09 alarm systemd [1]: Запущен Watchdog Daemon.[root @ alarm ~] #
 

Теперь отключите WiFi и вуаля, через макс. Через 60 секунд он перезагрузится:

 [root @ alarm ~] #
[990. 540000] usb 1-1: отключение USB, номер устройства 2
[990.880000] usb 1-1: ath9k_htc: уровень USB деинициализирован
[1036.300000] Перезапуск системы.
HTLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLPLL
PowerPrep start инициализация питания ...
Напряжение аккумулятора = 3,32 В
Обнаружен заряжаемый аккумулятор, но
...
 

Позже мы можем включить сторожевой таймер при загрузке, когда все работает правильно:

 [root @ alarm ~] # systemctl включить сторожевой таймер.служба
 

Сторожевой таймер аппаратного обеспечения

Программный сторожевой таймер, конечно же, не защищает от сбоя ядра. но для iMX233-OLinuXino появится поддержка аппаратного сторожевого таймера.

Взгляните на главу 23 Справочного руководства iMX233 (17,5 МБ):

23.7 Функция сброса сторожевого таймера

Сброс сторожевого таймера — это устройство, конфигурируемое ЦП. Он запрограммирован программным обеспечением для генерации всего чипа. сбросить через HW_RTC_WATCHDOG миллисекунд.Сторожевой таймер генерирует этот сброс, если программное обеспечение не перезапишите этот регистр до истечения этого времени.

Сторожевой таймер уменьшает значение регистра один раз для каждого такта тактовой частоты 1 кГц, поступающей из аналоговую секцию RTC (см. Рисунок 23-1). Сброс, произведенный сторожевым таймером, не влияет на значения, хранящиеся в главных регистрах секундомера часов реального времени, сигнальных или постоянных регистрах (аналоговое постоянное хранилище).

Сторожевой таймер изначально отключен и установлен на отсчет 4 294 967 295 миллисекунд перед генерацией сброс сторожевого таймера.

Сторожевой таймер не работает, когда микросхема находится в выключенном состоянии. Следовательно, для сторожевого таймера не существует пары главный / теневой регистр, и его необходимо перепрограммировать после выключения и включения питания или сброс блока.

Я видел вариант ядра (<*> Freescale STMP3XXX & i.MX23 / 28 watchdog) на новых ядрах, а также некоторые сообщения журнала:

 [1.300000] stmp3xxx-rtc 8005c000.rtc: ядро ​​rtc: зарегистрировано 8005c000.rtc как rtc0
 Сторожевой таймер: stmp3xxx-rtc 8005c000.rtc: установка системных часов на 1970-01-01 00:00:05 UTC (5)
 

Теперь у меня 3 сторожевых устройства:

 [root @ olinuxino ~] # ls / dev / watchdog *
/ дев / сторожевой таймер / дев / сторожевой таймер0 / дев / сторожевой таймер1
[root @ olinuxino ~] # cat /var/log/messages.log | сторожевой таймер grep
31 декабря 18:00:19 ядро ​​olinuxino: [1.470000] stmp3xxx_rtc_wdt stmp3xxx_rtc_wdt: инициализированный сторожевой таймер с контрольным интервалом 19 секунд
31 декабря, 18:28:00 ядро ​​olinuxino: [1.470000] stmp3xxx_rtc_wdt stmp3xxx_rtc_wdt: инициализированный сторожевой таймер с контрольным интервалом 19 секунд
31 декабря 18:00:21 ядро ​​olinuxino: [1. 470000] stmp3xxx_rtc_wdt stmp3xxx_rtc_wdt: инициализированный сторожевой таймер с тактом 19 секунд
31 декабря 18:00:22 ядро ​​olinuxino: [1.470000] stmp3xxx_rtc_wdt stmp3xxx_rtc_wdt: инициализированный сторожевой таймер с контрольным интервалом 19 секунд
31 декабря 18:00:21 ядро ​​olinuxino: [1.470000] stmp3xxx_rtc_wdt stmp3xxx_rtc_wdt: инициализированный сторожевой таймер с контрольным интервалом 19 секунд
31 декабря 18:00:22 ядро ​​olinuxino: [1.470000] stmp3xxx_rtc_wdt stmp3xxx_rtc_wdt: инициализированный сторожевой таймер с контрольным интервалом 19 секунд
31 декабря 18:00:21 ядро ​​olinuxino: [1.470000] stmp3xxx_rtc_wdt stmp3xxx_rtc_wdt: инициализированный сторожевой таймер с контрольным интервалом 19 секунд
31 декабря 18:00:22 ядро ​​olinuxino: [1.470000] stmp3xxx_rtc_wdt stmp3xxx_rtc_wdt: инициализированный сторожевой таймер с тактом 19 секунд
31 декабря 18:00:20 ядро ​​olinuxino: [1.470000] stmp3xxx_rtc_wdt stmp3xxx_rtc_wdt: инициализированный сторожевой таймер с контрольным интервалом 19 секунд
[root @ olinuxino ~] # dmesg | сторожевой таймер grep
[1. 470000] stmp3xxx_rtc_wdt stmp3xxx_rtc_wdt: инициализированный сторожевой таймер с тактом 19 секунд
[корень @ olinuxino ~] # сторожевой таймер grep /var/log/syslog.log
[root @ olinuxino ~] # cat / proc / version
Linux версии 3.9.0-dirty (chris @ thinkpad) (gcc версия 4.7.3 20130312 (выпуск) [ARM / embedded-4_7-branch revision 196615] (Инструменты GNU для встроенных процессоров ARM)) # 1 Пн, 6 мая, 12:29 : 05 CEST 2013
[root @ olinuxino ~] #
 

Но какой аппаратный сторожевой таймер?

 [root @ olinuxino ~] # echo "watchdog-device = / dev / watchdog"> test.конф
[root @ olinuxino ~] # wd_identify --config-file ./test.conf
STMP3XXX Сторожевой таймер RTC
[root @ olinuxino ~] # echo "watchdog-device = / dev / watchdog0"> test.conf
[root @ olinuxino ~] # wd_identify --config-file ./test.conf
STMP3XXX Сторожевой таймер RTC
[root @ olinuxino ~] # echo "watchdog-device = / dev / watchdog1"> test.conf
[root @ olinuxino ~] # wd_identify --config-file ./test.conf
Программный сторожевой таймер
[root @ olinuxino ~] #
 

Итак, по умолчанию аппаратный сторожевой таймер назначается / dev / watchdog. что имеет смысл.Я еще не проверял, работает ли аппаратный сторожевой таймер работает над OLinuXino, но я так думаю.

NMI Watchdog в Linux. Немаскируемое прерывание (NMI) — это… | by Abdurrahim Yıldırım

Немаскируемое прерывание (NMI) — это прерывание с наивысшим приоритетом, которое не может быть замаскировано никаким программным обеспечением. По сути, это сценарий, когда вы нажимаете CTRL + ALT + DELETE на компьютере с Windows.

Сторожевой таймер NMI доступен для архитектур i386 и amd64. Для использования сторожевого таймера NMI ядро ​​операционной системы должно поддерживать протокол APIC (Advanced Programmable Interrupt Controller).

Сторожевой таймер NMI может быть включен параметрами ядра;

kernel.nmi_watchdog = 1 → (I / O APIC)

kernel.nmi_watchdog = 2 → (Locall APIC)

Когда NMI включен, система будет периодически генерировать вызов NMI. Каждый NMI вызывает обработчик в ядре Linux и проверяет количество прерываний. Если обработчик NMI обнаруживает, что количество прерываний не изменилось в течение определенного периода времени, он предполагает, что ядро ​​зависло. Затем он вызывает панику ядра.

Сторожевой таймер
 Команда показывает прерывания по процессорам. $ Cat / proc / interrupts 
CPU0 CPU1 CPU2 CPU3
NMI: 24 18 21 18 Немаскированные прерывания
Сторожевой таймер

NMI может быть полезен для обнаружения зависания сервера и сокращения времени простоя. Но настоятельно рекомендуется проанализировать производительность системы перед включением сторожевого таймера NMI. NMI иногда генерирует большое количество прерываний и снижает производительность сервера.

Чтобы включить или отключить сторожевой таймер NMI, выполните следующие действия.Я всегда рекомендую включать сторожевой таймер NMI после анализа производительности. Потому что иногда бывает сложнее обнаружить зависание ядра, чтобы проанализировать производительность сервера.

Включить NMI:

kernel. nmi_watchdog = 1 → (I / O APIC)

kernel.nmi_watchdog = 2 → (Locall APIC)

sysctl -w kernel.nmi_watch = 1

9000 :

kernel.nmi_watchdog = 0

sysctl -w kernel.nmi_watchdog = 0

  • Вы можете запускать эту команду только с версией ядра 2.6.18–238 и позже. В противном случае вам придется отредактировать grub.conf, а затем перезагрузить сервер, чтобы отключить сторожевой таймер NMI.

#vim /boot/grub/grub.conf
kernel /vmlinuz-2.6.18–194.el5 ro root = / dev / VolGroup00 / LogVol00 nmi_watchdog = 0

 Вывод показывает, что сторожевой таймер NMI отключен . Поскольку на ЦП нет прерываний. $ Cat / proc / interrupts 
CPU0 CPU1 CPU2 CPU3
NMI: 0 0 0 0 Немаскированные прерывания

Также можно отправить запрос NMI с помощью инструмента IPMITOOL.Вы можете проверить эту ссылку для получения более подробной информации.

серверов Windows и Linux стали жертвами нового ботнета WatchDog почти два года

Из-за недавнего роста цен на торговлю криптовалютой большинство онлайн-систем в наши дни часто подвергаются атаке бот-сетей криптовалюты, стремящихся закрепиться на незащищенных системах и получить прибыль для своих криминальных властителей.

Последней из этих угроз является ботнет WatchDog .Обнаруженный Unit 42, отделом анализа угроз компании Palo Alto Networks, этот ботнет для крипто-майнинга активен с января 2019 года.

Написанный на языке программирования Go, исследователи говорят, что они видели, как WatchDog заразил системы Windows и Linux.

Точкой входа для их атак были устаревшие корпоративные приложения. Согласно анализу операций ботнета WatchDog, опубликованному в среду, Unit 42 заявил, что операторы ботнета использовали 33 различных эксплойта для нацеливания на 32 уязвимости в программном обеспечении, таких как:

  • Drupal
  • Elasticsearch
  • Apache Hadoop
  • Redis
  • Spring Data Commons
  • SQL Server
  • ThinkPHP
  • Oracle WebLogic
  • CCTV (в настоящее время неизвестно, является ли целью устройство CCTV или существует другое прозвище «cctv»).

Основываясь на деталях, которые команда Unit 42 смогла узнать, проанализировав двоичные файлы вредоносного ПО WatchDog, исследователи оценили размер ботнета от 500 до 1000 зараженных систем.

Прибыль оценивалась в 209 монет Monero, которые в настоящее время оцениваются примерно в 32000 долларов, но реальная цифра, как полагают, намного выше, поскольку исследователям удалось проанализировать только несколько двоичных файлов, а банда WatchDog, как полагают, использовала гораздо больше адресов Monero для собирать свои незаконные средства крипто-майнинга.

Кражи учетных данных не наблюдалось

Хорошая новость для владельцев серверов заключается в том, что WatchDog еще не соответствует последним ботнетам для крипто-майнинга, таким как TeamTNT и Rocke, которые в последние месяцы добавили возможности, позволяющие извлекать учетные данные для AWS и Docker. системы с зараженных серверов.

Тем не менее, команда Unit 42 предупреждает, что до такого обновления для злоумышленников всего несколько нажатий клавиш.

На зараженных серверах WatchDog обычно работает с правами администратора и может без каких-либо затруднений выполнять сканирование и дамп учетных данных, если его создатели когда-либо захотят.

Чтобы защитить свои системы от этой новой угрозы, защитники сети советуют те же советы, которые давали эксперты по безопасности в течение последнего десятилетия — обновляйте системы и их приложения, чтобы предотвратить атаки с использованием эксплойтов для старых уязвимостей.

watchdog.conf (5) — watchdog — Тестирование Debian — Управляющие страницы Debian

watchdog.conf (5) — Watchdog — Тестирование Debian — Руководства Debian

Выделить для навигации

ЧАСОВ.CONF (5) Руководство по форматам файлов WATCHDOG.CONF (5)
watchdog.conf — файл конфигурации для демона сторожевого таймера Этот файл содержит все параметры конфигурации для демона сторожевого таймера Linux. Каждый вариант должен быть написан в строке для себя. Комментарии начинаются с символа «#». Заготовки игнорируются, за исключением знака «=». Пустой текст после знака ‘=’ отключает эту функцию, если это имеет смысл.
интервал = <интервал>
Установить максимально возможный интервал между двумя записями в сторожевой таймер устройство.Устройство срабатывает после каждой проверки независимо от того, в какое время взял. После завершения всех проверок сторожевой таймер переходит в спящий режим на полный цикл. <интервал> секунд. Значение по умолчанию — 1 секунда. Драйверы ядра обычно ожидает команду записи каждую минуту, в противном случае система перезагрузиться. Следовательно, можно использовать только интервал более минуты. с параметром командной строки force [—force | -f].
logtick =
Если вы включаете подробное ведение журнала, сообщение записывается в системный журнал или лог-файл. Это хорошо, но не обязательно получать сообщение каждый раз. интервал, который действительно заполняет диск и требует ЦП. logtick позволяет регулировка количества пропущенных интервалов перед тем, как сообщение журнала будет написано. Если вы используете logtick = 60 и interval = 10, только каждые 10 минут (600 секунд) сообщение написано. Это может сделать точное время сбой труднее найти, но значительно снижает использование диска и администратора нервы, если вы ищете конкретную запись системного журнала между сообщения сторожевого пса.
макс-нагрузка-1 = <нагрузка1>
Установите максимально допустимую среднюю нагрузку для диапазона в 1 минуту. Как только эта загрузка достигается среднее значение, система перезагружается. Значение по умолчанию — 0. Это означает проверка средней нагрузки отключена. Будьте осторожны, чтобы не установить этот параметр. слишком низко. Чтобы установить значение меньше предварительно определенного минимального значения 2, вы необходимо использовать параметр командной строки -f.
max-load-5 =
Установите максимально допустимую среднюю нагрузку для 5-минутного интервала.Как только эта загрузка достигается среднее значение, система перезагружается. Значение по умолчанию 3/4 * макс-нагрузка-1. Будьте осторожны, чтобы этот параметр не был слишком низким. Чтобы установить значение меньше предопределенного минимального значения 2, вы должны использовать -f параметр командной строки.
max-load-15 =
Установите максимально допустимую среднюю нагрузку для 15-минутного интервала. Как только эта загрузка достигается среднее значение, система перезагружается. Значение по умолчанию 1/2 * макс-нагрузка-1. Будьте осторожны, чтобы этот параметр не был слишком низким.Чтобы установить значение меньше предопределенного минимального значения 2, вы должны использовать -f параметр командной строки.
мин-память = <мин. Страница>
Установите минимальный объем памяти, который должен оставаться свободным. Обратите внимание, что это в страницах памяти (4 КБ на x86). Значение по умолчанию — 0 страниц, что означает тест отключен. Размер страницы берется из включаемых файлов системы. Полезная память вычисляется из MemFree + Buffers + Cached, поскольку buffer и использование кеша обычно расширяется, чтобы использовать большую часть свободной памяти, но ядро ​​будет восстановите это по мере необходимости.ПРИМЕЧАНИЕ. Если этот показатель становится ниже нескольких десятков МБ тогда система будет агрессивно менять страницы с более плохой файловой системой производительность из-за отсутствия кеширования. Это «пассивный» тест, и он работает. прочитав / proc / meminfo
выделяемая-память = <мин. Страница>
Установите минимальный объем выделяемой памяти, доступной в системе. Примечание что это на страницах. Значение по умолчанию — 0 страниц, что означает, что тест отключен. Как и в случае с минимальной памятью, размер страницы берется из системы. включать файлы.Это «активный» тест, и он работает, пытаясь memory-map блок настроенного размера.
max-swap =
Установите максимальный объем использования свопа. Обратите внимание, что это на страницах памяти (4 КБ на x86). Значение по умолчанию — 0 страниц, что означает, что этот тест отключен. Часто это должна быть большая часть доступного свопа, но помните, что подкачка 1 ГБ подкачки может занять несколько или десятков секунд. Это «пассивный» тест и работает при чтении / proc / meminfo
сторожевое устройство = <устройство>
Задайте имя сторожевого устройства, обычно / dev / watchdog.По умолчанию отключить поддержку keep alive. Это следует проверить, запустив демон из командной строки, прежде чем настраивать его на автоматический запуск загрузка.
watchdog-refresh-use-settimeout = <авто | да | нет>
Обновите сторожевой таймер, установив время ожидания вместо обычного операция обновления сторожевого таймера. Может помочь, если ваш сторожевой пес споткнется сам по истечении первого интервала тайм-аута. По умолчанию для исправления IT87 установлено значение «авто». но это можно отключить с помощью ‘нет’ или принудительно для других модулей с помощью ‘да’.
watchdog-refresh-ignore-errors = <да | нет>
Игнорировать ошибки, о которых сообщает сторожевое устройство. Обычно это используется для систем, в которых нарушена реализация драйвера IPMI для избежать цикла перезагрузки.
watchdog-timeout = <время ожидания>
Установить тайм-аут устройства сторожевого таймера при запуске. Если не установлен, по умолчанию используется используемый, который должен быть установлен на поле таймера ядра во время компиляции.
датчик температуры = <виртуальный-файл-темп>
Задайте название датчика температуры.Обычно это «виртуальный файл» в / sys и содержит температуру в милли-Цельсиях. Обычно это генерируется датчиками , но будьте осторожны, как устройство перечисление не может быть фиксированным. По умолчанию проверка температуры отключена. Можно использовать несколько датчиков с помощью повторного датчика температуры записи. Из-за проблемы с подсчетом любой недостающий датчик температуры просто игнорируется и не рассматривается как триггер перезагрузки.
макс-температура = <температура>
Установите максимально допустимую температуру в градусах Цельсия.Как только эта температура станет дошел, система остановлена. Значение по умолчанию — 90 C. Watchdog выдаст предупреждения при повышении температуры на 90%, 95% и 98% от этого температура.
temp-power-off = <да | нет>
Установить срабатывание сторожевого таймера при перегреве. Вариант Да (по умолчанию) — питание машина выключена, нет возможности остановить машину и разрешить Ctrl-Alt-Del перезагрузка.
file = <имя файла>
Установить имя файла для файлового режима.Этот вариант можно давать сколько угодно раз. проверить несколько файлов.
изменение =
Установите интервал изменения времени для файлового режима. Этот вариант всегда принадлежит активное имя файла, то есть при нахождении сторожевого таймера строки ‘change =’ предполагает, что он принадлежит последней прочитанной строке ‘file =’. Они не обязательно должны следовать друг за другом напрямую. Но вы не можете указать ‘change =’ перед ‘file =’. По умолчанию используется только статистика файла и не ищите изменений.Использование этой функции для отслеживания изменений в / var / log / messages может потребоваться специальная конфигурация демона системного журнала, например rsyslog необходимо, чтобы для параметра $ ActionWriteAllMarkMessages было установлено значение убедитесь, что отметки написаны несмотря ни на что.
pidfile =
Установить имя pidfile для тестового режима демона. Этот вариант можно давать как можно чаще как вы хотите проверить несколько демонов, предполагая, что они пишут свои пост-форк PID в указанные файлы.
пинг =
Установите IPv4-адрес для режима проверки связи.Этот параметр можно использовать более одного раза, чтобы проверьте разные соединения.
ping-count =
Установите количество попыток проверки связи в каждом «интервале» времени. По умолчанию 3 и он завершается при первом успешном пинге.
interface =
Установить имя интерфейса для сетевого режима. Эту опцию можно использовать более чем один раз проверить разные интерфейсы. Обратите внимание, что можно только проверить физические интерфейсы, а не IP-интерфейсы с псевдонимами.
двоичный тест =
Выполнить указанный двоичный файл, чтобы выполнить определенные пользователем тесты.
test-timeout = <время ожидания в секундах>
Пользовательские тесты могут выполняться только в течение секунд. Установите 0 для безлимитный.
бинарный ремонт =
Выполнить указанный двоичный файл в случае проблемы вместо выключения система.
repair-timeout = <тайм-аут в секундах>
Команда восстановления
может выполняться только в течение секунд.Установите 0 для ‘без ограничений’, но обратите внимание, что аппаратный таймер не обновляется в этом случае, поэтому в какой-то момент система будет полностью перезагружена.
retry-timeout = <тайм-аут в секундах>
Разрешить большинству условий ошибки сохраняться в течение секунд. Установлен в 0 для немедленных действий (например, при мягкой загрузке).
ремонт-максимум = <количество>
Это позволяет не более попыток ремонта для данного ошибка, сообщающая об успехе (т.е. вернуть 0), но не устранить ошибку, до того, как все равно будет инициирована перезагрузка. Если установлено на ноль, значит ремонтопригодный неисправность всегда можно заблокировать, сообщив об успешном выполнении программы ремонта (предыдущее поведение демона).
softboot-option = <да | нет>
Действует аналогично командной строке -b / —softboot и просто устанавливает повторную попытку. таймаут до нуля.
admin = <адрес-почты>
Адрес электронной почты, на который нужно отправлять почту администратора. То есть, кто должен быть уведомлен, что машина останавливается или перезагружается.По умолчанию — root. Если ты хочешь отключить уведомление по электронной почте, просто установите для администратора пустую строку.
в реальном времени = <да | нет>
Если установлено Да, сторожевой таймер блокирует себя в памяти, поэтому она никогда не будет заменена из.
приоритет = <приоритет расписания>
Установить приоритет расписания для режима реального времени, передаваемого в sched_setscheduler ().
test-directory = <тестовый каталог>
Задайте каталог для запуска пользовательских сценариев тестирования / восстановления.По умолчанию ‘/etc/watchdog.d’ Дополнительные сведения см. в разделе «Каталог тестов» в watchdog (8). Информация.
log-dir = <каталог журналов>
Установите каталог журнала для записи стандартного вывода и стандартной ошибки от ремонтно-двоичного и тестового-двоичного выполнения. По умолчанию ‘/ вар / журнал / сторожевой таймер’.
sigterm-delay = <время в секундах>
Установите время выключения между первой отправкой SIGTERM всем процессам, а затем отправив SIGKILL.По умолчанию 5 секунд, что обычно достаточно, но системам с большими базами данных или виртуальными машинами может потребоваться дольше.
verbose = <уровень>
Это отменяет параметр командной строки —verbose. Обычно многословный режим включен только для отладки, так как он создает много болтовни системного журнала, поэтому используйте этот вариант с осторожностью. Ноль «нормально» работа (тихая), а 1 обычно используется для отладки. Значения 2 или more обычно генерируют слишком много сообщений.
heartbeat-file = <имя файла>
Для отладки это позволяет сохранять непрерывный набор значений состояния. диск
heartbeat-stamps = <интервал>
Для отладки устанавливает количество записей в
журнал убитых-pids = <да | нет>
Это действует как включение «подробного» ведения журнала, но только для перезагрузки системы, где он позволяет регистрировать значения PID для всех процессов, которые быть убитым. Результаты записываются в файл killall5.log в журнале. каталог (если это вообще возможно) в этом случае. Предназначен для отладки кейсов где вы хотели бы знать, что было запущено на машине запускает сторожевой таймер, но не хочет, чтобы системный журнал заполнялся обычным болтовня активности.
/etc/watchdog.conf
Файл конфигурации сторожевого таймера
/etc/watchdog.d
Каталог, содержащий команды тестирования или восстановления.См. Каталог тестов раздел в watchdog (8) для получения дополнительной информации.
сторожевой пес (8) .
Обновлено: 03.03.2021 — 10:18

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *