TL;博士
- 当日志没有显示任何内容时,如何实际调查系统崩溃?
- 其次,我如何为未来的崩溃做准备?是否有可能进行更积极/更准确的日志记录?以防系统以一种甚至没有时间记录的方式出现恐慌或冻结。
几周前,我从供应商那里得到了 3 台 VPS 机器 (KVM),其中 2 台在一周后崩溃(随机/不同时间)。他们都有 512MB 内存(带有 512MB 交换空间)。
其中一个实际上已关闭,并且在提供商的管理面板中有一个“离线”标签,另一个有点冻结,面板显示“在线”,但我无法通过 Web 控制台 SSH 或访问它。
他们都没有运行任何 CPU/内存密集型任务。一个只是一个 openvpn 服务器(有 2-3 个用户),另一个只是为静态站点提供服务的 nginx+php。他们俩一直都有大约 200-300 的可用内存,并且 cpu 的使用率低于 10%。
我安装了 Netdata 监控。所以我对几乎所有事情都有历史。在崩溃之前,我查看了每一个图表和图表。CPU/内存/磁盘/网络/进程/防火墙使用率没有峰值或突然增加。
我在/var/logs/
. 我逐行阅读它们(在崩溃发生之前)。我也用过journalctl
。没有错误,没有警告,没有内存不足,没有进程终止,只是正常事件。
崩溃的两台服务器都有一个syslog
如下所示:
如您所见,ufw 只是在崩溃前阻止随机垃圾邮件发送者,然后就没有日志了。此外,您看到的引导20:41:02
是我们在崩溃发生后所做的硬/强制重新引导,只是为了让系统重新联机。
当我询问供应商时,他们说一切看起来都不错,我的服务器崩溃的原因是因为 512MB 内存太低,我不得不升级。
另外,我在互联网上随机阅读了两件事,我想我在这里问它们是否是真实的。
- “微型 RAM 峰值,例如将 ram 表旋转到磁盘等”
- 一个参数称为
journal_data_writeback
,如果启用,系统可能会在崩溃期间错过将日志写入磁盘。
在评论中与guiverc交谈后,我意识到我实际上必须有一个名为
linux-crashdump
. 但是因为服务器是使用最小的 Ubuntu 模板安装的,它没有预装这个包,所以当崩溃发生时没有任何记录。这就是为什么我找不到任何东西。对于正在调查其崩溃原因并想知道为什么没有日志文件的任何人
/var/crash
,请确保您安装linux-crashdump
如此希望下次您可以看到一些东西;)