我已经在最近有各种内核恐慌的服务器上设置了networking控制台设置,我试图将内核消息logging到另一台服务器上。 我已经通过启动一个netcat会话并input一些随机的数据,在主机服务器上设置了netconsole。 这些到达捕获服务器没有任何问题,我可以查看我已经安装的日志文件中的文本。
但是,没有任何logging在dmesg(即内核消息)正在被转发到捕获服务器。 我的printk设置为6 1 4 7(我也上升到8 1 4 7),没有任何东西。 我已经尝试使用modprobe启用/禁用模块,并没有输出到捕获服务器。
任何意见,将不胜感激,因为我不确定在这一点上要检查什么,因为一切都显然设置正确。
你说你已经在主机服务器上设置了netconsole。 你的意思是你在那里build立了一个监听syslogd,并在客户端使用netcat发送消息给它? 如果是的话,那么它似乎并不像你testingnetconsole。
您是否validation了networking控制台设置,所有的MAC地址都是正确的? 文档很好,详细。 一旦你用适当的属性加载了模块,你可以通过以root身份写入/ dev / kmsg来testing它。
# echo my kernel message > /dev/kmsg
或者, 用sysrq触发一个memdump或崩溃 。 Netconsole应该select它并将其发送到您的目标。 在你testing的时候,Tcpdump对于validation什么样的数据包是非常有用的。 像这样的东西会让你开始(注意,这将包括以太网地址):
# tcpdump -i eth0 -n -e port 514
你提到你想要捕捉恐慌。 这些恐慌的本质可能是在netconsole(或kexec / kdump)完全可以做任何事情(如最近的闰秒问题)之前,它们完全杀死系统,或者确实可以获得成功的日志条目。
在附注中,netconsole的替代scheme是使用kexec + kdump内核工具。 在“可pipe理的”恐慌情况下,内核将closures启用kdump的内核,该内核将加载最小的initrd,然后将内核转储写入磁盘。 之后可以通过崩溃等工具进行分析。