0,0
рейтинг
26 октября 2011 в 00:23

Администрирование → Как понять почему упал сервер не подключая к нему монитор и клавиатуру?

Так бывает что сервер зависает, но к нему не подключена ни клавиатура, ни монитор.

У меня нет лишнего монитора, и обнаружив, что сервер не отвечает по сети,
снимать монитор с моего компьютера и подключать к серверу в кладовке нет никакого желания и сил.

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

Для настройки netconsole нужен другой (постоянно включенный) компьютер который примет сообщение по сети.

Проверено на Ubuntu 10.04

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

1. В /etc/modules добавляем netconsole

2. В /etc/modprobe.d/netconsole.conf пишем
options netconsole netconsole=SRCPORT@SRCHOST/eth0,DSTPORT@DSTHOST/DSTMAC

Где SRCPORT и SRCHOST соответственно порт и IP адрес сервера который отлаживаем.

А DSTPORT и DSTHOST порт и IP адрес сервера который будет принимать сообщения.

DSTMAC — это MAC адрес сервера который будет принимать сообщения ЕСЛИ он в той же сети. Если он за роутером или где нибудь в интернете, то нужно указывать MAC адрес ближайшего роутера (Gateway).

Должно получится чтото типа
options netconsole netconsole=6666@192.168.1.2/eth0,6666@192.168.1.3/e0:91:f5:7d:e6:38

На сервере который будет принимать сообщения.

Нам нужно как то запустить программу которая будет слушать UDP порт DSTPORT и куда-либо записывать сообшения.

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

1. Запускаем screen
screen -U -D -RR

2. Запускаем в окне netcat
netcat -l -u DSTHOST DSTPORT

Как понять что все работает?

Можно подождать какого нибудь события, но как убедится что сообщения реально ходят? Можно активировать SysRQ механизм ядра.
echo 1 > /proc/sys/kernel/sysrq
echo h > /proc/sysrq-trigger


После этого на сервере который принимает сообщения в окне с netcat появится текст типа
[ 7849.700372] SysRq : HELP : loglevel(0-9)....

Ссылки

Руслан Гайнутдинов @huksley
карма
35,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Администрирование

Комментарии (33)

  • +1
    Вместо sysrq (кстати, а почему у Вас именно такая комбинация строчных и заглавных букв?) можно сделать просто echo test > /dev/kmsg.

    Статья полезная. Но вот netconsole — не всегда :). Когда падает сеть — не поможет. Тут только старый добрый COM-порт.
    • +2
      SysRQ — старая закалка :-)
      Про /dev/kmsg не знал, спасибо.
      Ну если упадет сеть, будем искать другой способ.
      Разве на современных компьютерах есть COM порты?
      Боюсь у меня нет и кабеля ничего что можно с другой стороны кабеля подсоединить.
      • +10
        Q маленькая же вроде ;).
        Да, на современных материнках есть COM-порты. Просто DB9 не выведены наружу. Выглядят вот так:
        image
        При необходимости вытаскиваются наружу вот таким дятлом:
        image

        Но в случаях вроде вашего проще напрямую, без DB9.

        Я вот у себя на серверах хотел подобное сделать (GRUB умеет в консоль писать, ядро тоже — что еще надо? BIOS? некоторые тоже умеют), но не нашел вменяемого по цене мультиплексора.
        • +2
          Когда на сервере выгорел выведенный наружу ком-порт, я все ноги сбил в поисках такого-вот дятла в ближайших магазинах. Трудная задача на сегодняшний день.
          • 0
            Ага, я иногда покупаю такую планку «на всякий случай», когда бываю на радиорынке. Как правило, она не залеживается надолго, в магазинах не найдешь, когда она нужна.
          • +1
            +1, так и не нашёл, когда понадобился. Пришлось паяльник купить.
  • +3
    Насколько я помню netconsole дееспособна только в случае когда компы находятся в пределах одной сети.
    Отправить на сервер в другом ДЦ/дома уже не выйдет. Проще пользовать syslog/syslog-ng
    • +1
      Кроме того для netconsole надо включать printk() в ядре.
      И логировать оно будет всё с момента старта, что вызывает буйный рост логфайла.
      Такая штука удобна когда система падает и банально не успевает плюнуть что-то в syslog. Мне так приходилось ловить загадочные залипания Х-ов.
      • 0
        printk — необязательно. Но информации будет выдавать меньше.

        У меня судя по логам системка ведет себя образцово :-)
    • 0
      Отправить домой, вполне можно, если удалено поддерживаете не одну машину, а сеть. Правильно народ говорит, что главная фишка в получении последних сообщений до самой паники.
  • +8
    Все вменяемые сервера имеют на борту IPMI. Скорее актуально для ловли фризов на десктопе.
    • 0
      Мой случай недавно: Один из новоприбывших HP серверов имел на борту IPMI с нерабочей прошивкой. Rfr результат, удалённый монитор не работал. Перепрошивка решила проблему, но netconsole мне наверно помогла бы.
    • 0
      IPMI (и монитор + клавиатура интегрированные в стойку 1U) — это на работе.

      Я же говорил про кладовку :-) значит дома. Пока до более серьезного сервера не дорос.

      Все хочу купить HP Microserver (там вроде бы IPMI есть?) но пока не решился.
    • 0
      Не все используют сервера с IPMI.
    • 0
      А есть вменяемый IPMI-клиент под линукс с доступом к клавиатуре и видеокарте?

      Когда последний раз ставил сервер через IPMI, чуть не рехнулся. Сервер от меня в 200-300мс и пакеты то ли пропадали, то ли повторялись, но набрать что-то на клавиатуре было вообще нереально — кнопки то не нажимались, то повторялись по 20 раз (саппорт сказал, что это нормальное поведение IPMI на больших пингах и давал кучу неработающих советов). Клиент был под винду, на жаве и еще какое-то гадство в комплекте.
      • +1
        И внешних клиентов полно и даже веб. Вот у меня, например, плата supermicro ipmi (купленная дополнительно к серверу за сумму примерно в $100). В ней есть веб-клиент и он может загрузить прошитое в нем JAVA-приложение для подключения консольной клавиатуры и консольного монитора. Более того, эта плата умеет подключать ваше любое локальное устройство к серверу, используя какой-то свой протокол. Таким образом я легко монтирую флешку своего ноута в качестве дополнительного накопителя на сервере. Правда, минус в том, что скорость передачи целиком зависит от связности между сервером и ноутом :) меееедленно все, но работает. Можно даже загрузить на сервере другую ОС со своего дисковода (вставил в ноут CD, перегрузил сервер и он начинает грузиться с моего CD на ноуте) — очень полезно, если рухнет система.
        Словом, IPMI очень полезное изобретение, даже состояние сервера через SNMP позволяет мониторить (скорость вентиляторов, температуру ядер процессоров и пр. железные датчики).
        • –1
          > В ней есть веб-клиент и он может загрузить прошитое в нем JAVA-приложение для подключения консольной клавиатуры и консольного монитора. Более того, эта плата умеет подключать ваше любое локальное устройство к серверу, используя какой-то свой протокол.

          Да-да, знаем-знаем. Работает только в винде, только в эксплорере, только на определенной версии жавы (сто лет как не существующей больше нигде).

          > вставил в ноут CD, перегрузил сервер и он начинает грузиться с моего CD на ноуте

          … и залил 700 мегов через полглобуса…

  • 0
    а как что-то подобное реализовать на сервере под управлением Windows?
    • +7
      Я думаю что если что то упадет на Windows то вы получите номер ошибки и непонятный набор символов понятный только Microsoft. думаю такие приспособлений для Windows нет.
    • 0
      Ответ в предыдущем комментарии. IPMI решения дают удаленный доступ к видеоадаптеру.
  • +6
    Прошу прощения, но заголовок статьи «Как понять почему упал сервер не подключая к нему монитор и клавиатуру?» замахивается на более широкий спектр возможных состояний, потенциально вводя в заблуждение возможных читателей.

    Например, рецепт не работает в случаях:
    — если его не применили заранее;
    — если, как уже заметили выше, стала недоступной сеть;
    — если сервер «завис» не доходя в процессе загрузки до момента поднятия IP интерфейсов.

    ЗЫ: Вариант как понять почему сервер упал когда он лежит разбитый под окнами многоэтажки тоже не рассмотрен, хотя заголовок может подойти и для этого случая.
    • +1
      Вы правы, но разве много еще способов не подключая ничего
      дополнительно к серверу разобраться в его работе/не работе?

      Соответственно если сети нет, достаем сервер из кладовки и начинаем ковыряться.

      Про многоэтажку я не подумал :-)
      Если топик был бы на эту тему, разместил бы его в блоге «Многоэтажки для всех»
    • 0
      > если сервер «завис» не доходя в процессе загрузки до момента поднятия IP интерфейсов.

      Вкомпилируйте netconsole в ядро и передавайте параметры в командной строке ядра. Будете видеть все сообщения.
      • –1
        Не думаю, что в этом случае произойдет чудо и мы увидем в удаленной консоли результаты POST теста BIOS и RAID контроллера и загрузчика ядра.
        Чуда также не случится если ядро не найдено, или загрузка происходит в ядро где этот модуль не включен.
  • +5
    Хмм, странная статья. Ожидаешь что тут будет описание технологии доступа к предположительно рухнувшему серверу, а видишь:
    Для настройки netconsole нужен другой (постоянно включенный) компьютер который примет сообщение по сети.

    и дальше ничего, сразу идут какие-то инструкции. Что будет после того, как другой компьютер примет сообщение по сети? Как связан рухнувший сервер и этот компьютер? Это какая-то магия? Я конечно сейчас пойду, погуглю про netconsole, но всё же…
    • 0
      Я тоже думал что netconsole это именно console. Т.е. удаленно можно кнопки нажимать и сервер будет отвечать.

      Но это не так т.к. работает только получение сообщений от упавшего сервера, до момента kernel panic (и включая его).

      Может быть есть какие то другие решения для Linux, но я их не знаю.
    • +1
      Ну мне эта статья очень полезна. Порой бывают сервера, которые падают просто так. Обычно прошу ребутнуть удалённо, но в консоли бывает много чего интересного, например кернелпаник.
      • 0
        Полезна ли вам статья или технология? Я до этой статьи не знал об этой технологии и из этой статьи так же не узнал. Пришлось лезть в интернет и гуглить.
        • 0
          А в чем тут технология? Это скорее функционал. Правильней будет сказать-я лично не знал о такой функции. Статья помогла мне о ней узнать. У меня правда так и не получилось реализовать описанное, но я правда не особо усердно пробовал.
          Кстати не понял, почему говорится, что сервера должны быть в одной сети. Поставить мак шлюза -и все ок.
  • 0
    Также, если у сервера есть встроенный блок мониторинга, который поддерживает IPMI, можно исполосовать возможности Serial Over Lan:
    Раз
    Два
    И вот ещё
  • 0
    Для домашнего сервачка KVM на второй монитор подрублен.
    • 0
      Здесь идея не во-втором мониторе. А в просмотре сообщений консоли удалено, если какой-то из серверов ни с того не с сего заткнулся. Причем, ты здесь, твой монитор здесь, а вся локалка в афирке :)
  • 0
    Полезная статья.

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