- Назначение: получать сообщения ядра Linux при ошибках, приводящих к перезагрузке или зависанию.
- Принцип действия: на сервере загружается модуль netconsole, который отправляет по UDP копию всех сообщений указанному соседу.
- Полное описание: http://www.mjmwired.net/kernel/Documentation/networking/netconsole.txt
- Дополнительное управление через /proc/sys/kernel/printk: http://www.de-brauwer.be/wiki/wikka.php?wakka=printk
Важные ограничения:
- Не поддерживается отправка через bond- и vlan- интерфейсы, только через eth.
- Не поддерживается маршрутизация, только прямая доставка получателю.
Ссылки по теме:
Настройка и запуск:
- EDIT (здесь и далее — создаем, редактируем, сохраняем файл) /etc/sysconfig/netconsole
SYSLOGADDR=...
- chkconfig netconsole on
- service netconsole start
- systemctl enable netconsole
- systemctl start netconsole
- В отличие от dmesg, на физическую консоль и в netconsole выводится только то, что меньше уровня, заданного через loglevel в параметрах ядра или через «dmesg -n xx».
- «8» является максимальным значением, без него в netconsole почти ничего не выведется.
- Список уровней см. в https://www.kernel.org/doc/Documentation/admin-guide/kernel-parameters.txt (искать в «loglevel=»).
[259588.824312] netpoll: netconsole: local port 6666
[259588.824314] netpoll: netconsole: local IPv4 address 10.20.30.40
[259588.824315] netpoll: netconsole: interface 'enp9s0'
[259588.824315] netpoll: netconsole: remote port 514
[259588.824316] netpoll: netconsole: remote IPv4 address 10.20.30.50
[259588.824316] netpoll: netconsole: remote ethernet address aa:bb:cc:dd:ee:ff
[259588.824607] console [netcon0] enabled
[259588.824607] netconsole: network logging started
Проверка:
- на получателе:
- либо запускаем сниффер: tcpdump -Annpei any port 514 and port 6666
- либо добавляем /etc/rsyslog.d/Remote.conf
- на отправителе: echo Test1 > /dev/kmsg
- на получателе: видим прилетевшие пакеты.
Постоянный loglevel:
- EDIT /etc/default/grub
GRUB_CMDLINE_LINUX="... loglevel=7"
Пример настроек Rsyslog:
- EDIT /etc/rsyslog.d/Remote.conf
# V5
$ModLoad imudp
$UDPServerAddress 10.20.30.50
$UDPServerRun 514
$template FROM_REMOTE,"/var/log/remote/%fromhost-ip%/%$YEAR%-%$MONTH%-%$DAY%.log"
:fromhost-ip, !isequal, "127.0.0.1" ?FROM_REMOTE
& ~