今天我在看我在一个VM机器上搭建的公共服务status的时候看到这个服务down了。我一开始还以为只是进程的问题。但是没想到甚至连VM都连不上。

这种时候我只能去VM提供商的控制面板来看能不能进VNC。但是我发现VNC也连不上,只能在面板reload。

Reload重新连上后我就想知道为什么VM会无缘无故这样。

由于我有装 unattended-upgrades 所以我当时猜测是这个问题造成的。所以我先dry-run了一下看看有没有报错。

unattended-upgrades --dry-run

cat /var/log/unattended-upgrades/unattended-upgrades.log

可以看到有 All upgrades installed 的字样。

但是可以看到2024-04-19的任务似乎没有结束。在到 2024-04-19 10:25:24,311 INFO Initial whitelist (not strict):就停止了。

当时我以为是因为这个的问题报错了然后我就去看boot记录。

journalctl --list-boots

0 是我用VM控制面板重启的。可以看到 -1 到 0 有差不多一天的downtime。

使用 journalctl -b -1就可以看到那一次boot的log。

最后三行是这样,hetrixtools是一个监控agent所以和VM无法连接无关。在这三行以上也没有发现其他的什么问题。

这时候我确实不知道到底是什么导致机器无法连接了。

但是在看 last -x reboot 的时候我发现上一次的reboot显示still running。

按道理说上一个reboot cycle已经结束了,所有的用户都在reboot的时候断开连接了,怎么可能还会显示 still running?这说明系统没有在 /var/log/wtmp 写入shutdown time。wtmp需要有权限的进程写入,又或者说明这不是一个clean reboot/shutdown。

我们这时候回到上面的 journalctl --list-boots 去看 -2,一个正常的reboot的log是怎么样的。

可以看到在最后他是一个很优雅地退出。由此我们可以得出结论他跟我们一样是在控制台直接关闭的。能这样做的只有商家和我,那么在已知我没干这种事的情况下,就可以知道是商家做的。那么商家为什么做这种事?

可以看到在UTC+00:00 (也就是上面 -1 的20:29:10 MSK 关机时间) 的时候我们CPU占用率16.17%。类似的占用率维持了5天。虽然这个占用率在正常VM上商家都不会去管,但是由于这是我的特价机,8欧1年,我掐指一算就知道商家不满意我的CPU使用率。

本篇使用的命令:
last
last -x
last -x reboot
last -x shutdown
last -f /var/log/wtmp
last -x|grep shutdown | head -1
journalctl --list-boots
journalctl -b -1
journalctl -b -2
unattended-upgrades --dry-run
cat /var/log/unattended-upgrades/unattended-upgrades.log
timedatectl