Ищем причину зависания сервера
Игрался я тут как-то с Orange Pi Zero и стала она подвисать на ровном месте. Монитор я не подключал к нему, т.к. это такая себе была игровая площадка для всяких датчиков и т.п. В общем, надо было понять в чем дело и почему подвисает железка.
В Linux есть такая возможность ядра как Netconsole. Netconsole позволяет послать сообщения от ядра на удаленный компьютер. Вспомнил о ней и решил вот написать как ей пользоваться. Может кому-то еще пригодится.
Для настройки netconsole нужен другой (постоянно включенный) компьютер который примет сообщение по сети.
Настраиваем проблемный сервер
- В /etc/modules добавляем netconsole
-
В /etc/modprobe.d/netconsole.conf пишем
options netconsole [email protected]/eth0,[email protected]/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.
Запускаем screen
screen -U -D -RR
Запускаем в окне netcat
netcat -l -u DSTHOST DSTPORT
Как понять что все работает?
Можно подождать какого нибудь события, но как убедится что сообщения реально ходят?
kmsg
echo test > /dev/kmsg
После выполнения этой команды в лог прилетит отправленный текст
SysRq
Можно активировать SysRq механизм ядра.
echo 1 > /proc/sys/kernel/sysrq
echo h > /proc/sysrq-trigger
После этого на сервере который принимает сообщения в окне с netcat
появится текст типа
[ 7849.700372] SysRq : HELP : loglevel(0-9)....
Комментарии: