如何找出重启后linux服务器崩溃的原因

这是交易,

来工作只是找出一个服务器根本没有响应,机器打开,但屏幕没有显示任何东西,没有响应键盘input(我没有sysqq键启用)。

服务器需要尽快启动并运行,因此我重启了服务器,现在一切正常。

现在,我的老板想要知道发生了什么,为什么。

那么如何在重启之前开始debugging出错? 我应该特别注意哪些日志,现在有没有什么巧妙的方法可以debugging随机的服务器冻结(这种情况经常不会发生 – 这是我第一次见到它)

感谢您提供有用的指导和build议。

Ps:我正在运行Ubuntu的服务器12.04。

由于这可能是一个硬件故障,我会看看一些硬件诊断。

如果你有一个硬件RAID控制器,我会发现你是否可以读取它的日志(如果是3Ware,使用tw_cli)。 而且,无论您使用的是硬件还是软件RAID,您都可以查看磁盘的SMART参数(如果磁盘连接到RAID控制器,则可能需要特殊的命令才能访问它们,请参见smartctl页)。

如果你这样做:

 smartctl -a /dev/sdX 

我总是主要看:

  • 重置扇区计数。 随着时间的推移,特别糟糕。 而且,我不完全信任有任何重新分配扇区的磁盘。
  • 看看SMART错误日志。 开始阅读是非常棘手的问题,但最主要的是要看看是否有事件发生,以及在什么时间(用磁盘时间表示,以小时表示)发生。 您可以将当前的磁盘使用时间视为SMART参数之一。 如果是最近,可能是相关的。

另外,请留意dmesg和syslog,看看是否随时间出现错误。 例如,在出现exception之前,磁盘错误经常出现很长时间才是致命的问题。 我们有一个中央日志logging服务器(使用rsyslog),通知我有关exception情况。 一个简单的例子,如何设置:

/etc/rsyslog.d/60-smtp.conf:

 $ModLoad ommail $ActionMailSMTPServer localhost $ActionMailFrom [email protected] 

/etc/rsyslog.d/70-mail-ata-errors:

 $ActionMailTo [email protected] $template mailSubjectATA,"ATA error on %hostname%" $template mailBodyATA,"You have ATA errors. Mostly it's the disk and you get these errors before a possible mdraid setup kicks the drive.\r\nBEWARE: ata1.00 is first ata, first disk. Ata1.01 is first ata, second disk. Use the ata-to-device-names.sh script to identify devices.\r\n msg='%msg%'" $ActionMailSubject mailSubjectATA $ActionExecOnlyOnceEveryInterval 3600 :msg, regex, "ata.*exception" :ommail:;mailBodyATA 

在这里查看ata-to-devicenames脚本。

你可以做的另一件事是memtest。 Ubuntu安装DVD / CD在启动菜单中有,那么我相信任何Ubuntu服务器在其常规启动菜单中也有一个。 如果可能的话,至less让一个通过。

你有ECC RAM BTW? ECC RAM对于长期稳定性和数据完整性非常重要。

/var/log/syslog是一个很好的开始。 重新启动后查找第一条日志消息。 他们会说一些关于系统日志的启动以及你正在运行的内核版本。

然后向上滚动,find系统崩溃之前logging的最后一行。 进一步向上滚动以查看是否可以从内核本身find任何日志消息。

浏览/var/log其他日志,查看是否可以在崩溃前的最后一个日志行与之后的第一个日志行之间find带有时间戳的行。

所有这些努力很可能只能缩小崩溃的时间,但不会告诉你任何有关服务器崩溃的原因。 特别是如果是硬件故障,可能很难得到正确的日志消息。

可能会有configuration更改,可以帮助获取更多信息,以防再次发生问题。 启用Sys Rq键是一种select。 此外,closures屏幕消隐function可能是值得的(我假设您不使用显示器时不会浪费电源)。 此外,通过networkinglogin到另一台服务器可能会有所帮助,特别是如果根本原因是磁盘/文件系统相关的话。

我的一部分人想说,Linux不应该只是崩溃 …正常使用模式下的现代操作系统应该是相当稳定的。 当我开始看到服务器不稳定时,几乎总是硬件或驱动程序交互。 我会build议仔细查看服务器,条件和相关组件(RAM,存储等)。

如果您使用的硬件不能或不能提供对硬件健康状况(如桌面级机器)的洞察力,那么几乎没有机会在Linux级别的日志logging中看到任何东西。