Рекомендации по «упрочению» RPI для встроенных приложений (автоматическая работа)?

Это очень общий вопрос, но я уверен, что другие захотят узнать ответ ...

Я использую безгласный RPi для приложения удаленного мониторинга. Эти RPi будут похоронены в служебных шкафах и, как правило, в недоступных местах. Я уже написал код Python, который читает POSTs на нашем сервере, и я задерживаю (почти) все ошибки, которые могут привести к сбою моего приложения.

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

Примечание. У меня есть неопределенное ощущение, что init.d позволяет мне регистрировать приложение как услугу, которая может быть запущена и остановлена , и update-rc.d запустит приложение при запуске. И я могу использовать syslog и syslog-ng, чтобы лог ошибок удаленно. Но как лучше всего создать сторожевой таймер на уровне приложений и сторожевой таймер уровня системы?

Что-нибудь еще, о чем я должен думать?

4 голоса | спросил fearless_fool 6 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSat, 06 Sep 2014 05:56:41 +0400 2014, 05:56:41

2 ответа


3

Инструмент monit хорош для мониторинга и перезапуска служб.

Если вы используете дистрибутив на основе Debian, он должен быть в репозитории пакетов, который использует ваш малиновый Pi. См. Раздел Debian monit packages для ссылок на некоторую полезную информацию о monit, но вам нужно будет скачайте у вас репозиторий R-Pi.

Если вы создали сценарии init.d для запуска /остановки и контроля состояния вашего приложения, тогда легко настроить monit для управления и перезапуска этой службы. Вам просто нужно отбросить соответствующий фрагмент конфигурации для вашего приложения в файл в каталог /etc/monit/monitrc.d/.

Монит поставляется с некоторыми образцами, которые показывают, как настроить службу. Например, демон ssh можно отслеживать с помощью следующих строк.

check process sshd with pidfile /var/run/sshd.pid
   start program  "/etc/init.d/ssh start"
   stop program  "/etc/init.d/ssh stop"
   if failed port 22 protocol ssh then restart
   if 5 restarts within 5 cycles then timeout

Страница Debian wiki LSBInitScripts дает информацию о том, как структурировать /писать init.d для приложения.

Обратите внимание, что monit сайт, как видно, упоминает коммерческую версию monit, но версия с открытым исходным кодом в Debian, безусловно, свободно доступна.

ответил Richm 6 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSat, 06 Sep 2014 17:23:07 +0400 2014, 17:23:07
6

Для вашего сторожевого таймера на системном уровне я собирался предложить создать сторожевой таймер. На плате RPi есть соединения ( заголовок P6 ), которые вы можете сократить, чтобы перезагрузить устройство. Вы можете подключить это к микросхеме таймера обратного отсчета, и ваше приложение регулярно использует контакты GPIO для сброса таймера. Если ваше приложение перестало работать слишком долго, обратный отсчет завершит и сбросит систему.

Хотя это может быть забавный проект электроники, похоже, что есть более простой способ: оказывается, что система на чипе RPi уже имеет встроенный сторожевой таймер, с драйверами Linux, доступными для позвольте вам использовать его. Есть модуль ядра, который заставляет систему перезагружаться через одну минуту, не слушая биения, и демон сторожевого таймера, который посылает сердцебиение каждые 10 секунд. Демон может выполнять различные проверки, чтобы убедиться, что операционная система и ваше приложение все еще живы. Если проверки не пройдут, это приведет к истечению времени обратного отсчета, и перезагрузка Pi.

Инструкции находятся на Workbench Ricardo и Gadgetoid.com . Также есть страница сторожевого пса (8) .

ответил JRI 7 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSun, 07 Sep 2014 01:51:00 +0400 2014, 01:51:00

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132