Как я могу увидеть логи на сервере после зависания паники ядра?
Я работаю на рабочей машине Gentoo Linux, и недавно была ситуация, когда сервер зависал в моем расположенном рядом помещении, и когда я туда попал, я заметил, что сервер завис на том, что казалось зависанием ядра. Я перезагрузил машину с жесткой перезагрузкой и был разочарован, обнаружив, что нигде не смог найти ни малейшего доказательства того, почему машина зависла.
Правда ли, что когда я делаю полную перезагрузку, само сообщение теряется или есть настройка, которую я могу сделать где-нибудь, скажем, в syslog-ng или, возможно, в sysctl, чтобы хотя бы сохранить журнал ошибок, чтобы я мог предотвратить такие неудачи в будущем? Кстати, я использую ядро 2.6.x.
Заранее спасибо.
4 ответа
Чтобы зарегистрировать панику ядра, использовать netconsole намного проще, чем использовать последовательную связь;)
Есть полезная запись об этом в вики Ubuntu, которую можно использовать в других версиях Linux... Помогли мне, например, с archlinux.
Обратите внимание, что netconsole также можно настроить при загрузке.
Обычно в этих ситуациях я настраивал удаленную последовательную консоль, а затем следил за тем, чтобы регистрировать все, что появляется на консоли. Это можно сделать, подключив последовательный порт устройства к другому устройству с помощью кабеля RS-232. Это может быть немного сложнее в наши дни, поскольку последовательные порты постепенно исчезают, но я думаю, что большинство серверов все еще имеют их.
Затем на другом компьютере запустите conserver и настройте ведение журнала консоли. Это обеспечивает хороший способ как регистрировать все на консоли, так и предоставлять альтернативный путь входа в систему.
Если вы не хотите устанавливать и администрировать другой Linux-бокс, альтернативой является установка сервера последовательной консоли. Различные компании, такие как Avocent, Cyclades и Raritan, производят эти устройства, которые обеспечивают сетевой интерфейс для 2-48 последовательных портов. Однако такого рода вещи, конечно, будут стоить дороже, чем просто установить еще одну Linux-коробку.
Вы можете попробовать реплицировать сообщения системного журнала на другой компьютер. Может быть, не все из них, а только предупреждения и критические и отключить кеширование для них.
Я думаю, что здесь есть три возможных решения:
- Настройте kdump, который создает дамп, когда ядро паникует (используйте «magic sysrq c», чтобы вызвать панику). Вероятно, лучшее решение, если у вас действительно паника ядра.
- Настройте последовательную консоль (в настоящее время это может быть netconsole). Приятно видеть знаменитые «последние слова».
- Настройте внешний сервер системного журнала, который будет получать сообщения ядра. Однако позаботьтесь о том, чтобы сообщения отправлялись немедленно (без задержки). Однако в случае сбоя сетевого стека важные сообщения могут быть потеряны.