如何查找重启后 Linux 服务器崩溃的原因

如何查找重启后 Linux 服务器崩溃的原因

事情是这样的,

来上班才发现一台服务器根本没有响应,机器已打开,但屏幕根本没有显示任何内容,不响应键盘输入(我没有启用 sys rq 键)。

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

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

那么我该如何开始调试重启前出了什么问题?我应该特别注意哪些日志,以及是否有一些巧妙的技巧可以让你知道如何调试随机服务器冻结(这种情况并不经常发生 - 这是我第一次看到它)

感谢任何有用的指导和建议。

附言:我正在运行 ubuntu 服务器 12.04。

答案1

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

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

如果你这样做:

smartctl -a /dev/sdX

我总是主要关注:

  • 重新分配的扇区数。当其随时间增加时尤其糟糕。而且,我不完全信任具有任何重新分配扇区的磁盘。
  • 查看 SMART 错误日志。一开始读起来有点棘手,但主要目的是查看是否有事件,以及它们发生的时间(以磁盘年龄(小时)表示)。您可以将当前磁盘年龄视为 SMART 参数之一。如果是最近的,则可能与之相关。

另外,请密切关注 dmesg 和 syslog,看看您是否随着时间的推移而出现错误。例如,磁盘错误通常在成为致命问题之前很久就以 ata 异常的形式出现。我们有一个中央日志服务器(使用 rsyslog),它会通知我有关 ata 异常的信息。以下是有关如何设置的快速示例:

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

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

/etc/rsyslog.d/70-mail-ata-错误:

$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脚本。

您还可以进行内存测试。Ubuntu 安装 DVD/CD 的启动菜单中有这些测试,我相信任何 Ubuntu 服务器的常规启动菜单中也有一个。让我们至少进行一次,如果可能的话,进行更多次。

顺便问一下,你有 ECC RAM 吗?ECC RAM 对于长期稳定性和数据完整性很重要。

答案2

/var/log/syslog是一个很好的起点。找到重启后的第一条日志消息。它们会说明 syslog 启动以及您正在运行的内核版本。

然后向上滚动并找到最后一行,这是系统崩溃前记录的。进一步向上滚动以查看是否可以找到来自内核本身的任何日志消息。

检查其他日志,/var/log查看是否可以找到崩溃前的最后一行日志和崩溃后的第一行日志之间带有时间戳的任何行。

所有这些努力很可能只能缩小崩溃的时间范围,但无法告诉你服务器崩溃的原因。特别是如果是硬件故障,则很难获得正确的日志消息。

可能会有配置更改,可以进行这些更改以帮助获取更多信息,以防问题再次发生。启用密钥Sys Rq是一种选择。此外,关闭屏幕消隐可能也是值得的(我假设您在不使用显示器时不打开显示器可以避免浪费电量)。此外,通过网络登录到另一台服务器可能会有所帮助,特别是如果根本原因与磁盘/文件系统有关。

答案3

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

如果您使用的硬件无法提供硬件健康状况的洞察(例如台式机),那么您很难在 Linux 级日志记录中看到任何反映的内容。

相关内容