【发布时间】:2020-02-24 14:40:19
【问题描述】:
2.5 个月前,我在 Linux 服务器上运行一个网站,对一个工具的 3 个变体进行用户研究。所有 3 个变体都在同一个网站上运行。在我进行用户研究时,网站(即托管网站的进程)崩溃了。在我睡眠不足的状态下,不幸的是我没有记录坠机发生的时间。但是,我现在需要知道 a) 崩溃发生的时间,以及 b) 网站关闭了多长时间后才恢复正常。我只有一个粗略的时间框架来说明崩溃发生的时间以及崩溃的时间,但我需要尽可能准确地确定这些信息,以便对我的用户研究数据进行一些任务时间分析。
服务器运行 Linux 16.04.4 LTS (GNU/Linux 4.4.0-165-generic x86_64) 并已进行最低限度的设置以运行我们的网站。因此,除了操作系统附带的实用程序之外,不太可能安装任何实用程序。同样,可能没有进行任何额外的设置。例如,我尝试查看使用过的命令的历史记录,希望之前设置了 HISTTIMEFORMAT 以便我可以看到时间戳。结果并非如此。虽然我现在可以看到命令的时间戳,但设置 HISTTIMEFORMAT 不具有追溯性,这意味着我无法获得 2.5 个月前运行的命令的准确时间戳。综上所述,如果您有一个您认为可行的想法,我愿意尝试(只要它不会破坏我们的服务器)!
另外值得一提的是我目前不知道是否可以看到远程桌面之类的东西;我只是通过 ssh 登录并使用终端与服务器进行交互。
我一直在与朋友和同事交流想法,我们都认为必须有一些东西可以用来确定服务器何时出现故障(例如,网络活动日志显示用户研究开始时的峰值以及网站何时恢复,以前/不再运行的进程的日志等)。不幸的是,我们没有人知道 Linux 日志或命令来真正深入研究这个非常具体的问题。
总结:
- 我需要网站崩溃或恢复时的时间戳。最好同时拥有两者(或以其他方式确定网站关闭的时间),但这并不是完全必要的
- 我猜只有“本机”Linux 命令才有用,因为我们的服务器上没有安装任何新的/特殊的命令。否则,任何其他命令/工具/实用程序都必须具有追溯性。
- 可能会也可能不会让远程桌面与服务器一起工作(例如,使用一些具有与您交互的 GUI 的工具来帮助获取一些信息)
- 我和我的同事在各种日志或系统信息(例如网络活动、进程启动时间等)之间有一种“一定有我们可以使用的东西”的感觉,但我们对 Linux 的了解还不够深入,无法深入在没有任何帮助的情况下挖掘
对于至少在网站崩溃时我可以尝试帮助找出的任何想法(如果不是也关闭了多长时间)?
【问题讨论】:
-
运行您的网站的网络服务器或进程是什么?默认情况下,许多此类程序会写入日志文件,该文件通常带有时间戳,并且可能包含退出原因和启动时间。
-
更一般的情况下,您可以在终端使用
last命令查看您在服务器崩溃时重新登录系统的时间:linoxide.com/linux-how-to/… -
我使用的是 Node.js 服务器,但我认为它不会进行这样的自动日志记录。如果是这样,您知道我应该在哪里查找日志文件吗?虽然我可以查看当天登录服务器的时间戳,但我故意在整个用户研究期间保持登录状态。因此,崩溃发生在我登录后很久。我需要比这更准确的东西
-
Node 默认情况下不会记录任何内容,因此它更具体地取决于您的应用程序。如果应用程序刚刚登录到标准输出(这是可能的),那么当时的任何输出都会丢失到以太。值得检查运行程序的目录,看看是否存在任何
*.log文件。 -
另外,你是在运行 Node 直接暴露在 80 端口上,还是在使用反向代理(例如 nginx)?您可以检查
/var/log/nginx/access.log是否存在,就好像它会记录用户的请求一样。