У меня есть программное обеспечение, которое отслеживает состояние нескольких компьютеров Linux в локальной сети. Одна из проверок, которую он выполняет, — периодически проверять все машины, чтобы убедиться, что они реагируют.
Недавно мне стало известно, что одна или несколько машин могут находиться в состоянии паники ядра, но по-прежнему реагировать на пинг. Я хотел бы знать, есть ли какая-нибудь проверка, которую я могу сделать в C ++, которая возвращает true, когда либо:
а) Удаленный компьютер не отвечает (в настоящее время делает это с помощью операторов ping).
б) Удаленный компьютер реагирует, но находится в состоянии паники ядра.
Дело в том, что я не знаю, что работает, а что нет во время паники ядра.
Это на RHEL 5.7, если это помогает. Заранее спасибо!
Ответ на этот вопрос: это зависит. Иногда паника ядра даже перестает пинговать ответы. Определение «не отвечает» будет зависеть от варианта использования машины. Если есть способ удостовериться, что основная цель машины все еще достижима локально, вы можете использовать SNMP и / или Интернет (или некоторый другой сетевой протокол), чтобы убедиться, что он отвечает.
Один из распространенных методов мониторинга (с множеством готовых плагинов для широкого спектра векторов и сервисов) заключается в использовании nagios, icinga или какого-либо подобного инструмента.
Других решений пока нет …