SAR 服务已停止收集数据

str*_*xel 6 sar

我们sar在 Ubuntu 服务器上工作,但在服务器上做了一些工作,现在它停止记录到当天的日志文件。

sar -b 5 5
Run Code Online (Sandbox Code Playgroud)

这说明还sar活着,并且有监控数据,但是

ubuntu@testing:/var/log/sysstat$ sar
Run Code Online (Sandbox Code Playgroud)

输出:

Linux 5.4.0-1063-azure (server)     02/22/22    _x86_64_    (4 CPU)

10:22:05     LINUX RESTART  (4 CPU)

10:22:46     LINUX RESTART  (4 CPU)

10:24:25     LINUX RESTART  (4 CPU)

16:34:04     LINUX RESTART  (4 CPU)
Run Code Online (Sandbox Code Playgroud)

cron 和sysstat配置没有改变。

*/1 * * * * root command -v debian-sa1 > /dev/null && debian-sa1 1 1
Run Code Online (Sandbox Code Playgroud)

为什么统计数据没有添加到日志中?

Yva*_*van 6

比较 2 个安装,一个是从 Debian 10 升级的 Debian 11,另一个是全新的 Debian 11,两者都使用 systemd

\n
    \n
  • 在 Debian 10 和 11 上,我已经安装sysstat-collectsysstat-summary启用了
  • \n
  • 在新的 Debian 11 上,我不
  • \n
\n

因此,如果您使用systemd,您应该重新配置sysstat它将通过 systemd 而不是通过 crontab 运行:

\n
dpkg-reconfigure sysstat\n
Run Code Online (Sandbox Code Playgroud)\n

选择“是”。

\n

直接编辑/etc/default/sysstat(就像我到目前为止所做的那样)是一个错误:它不会更新 systemd 文件。

\n

请注意,您将看到/etc/default/sysstat更新为ENABLED="true",但 cron 将不再运行(systemd 将按预期触发它)。

\n

您可以使用以下命令检查一切是否正常:

\n
systemctl status sysstat-collect.timer\nsystemctl status sysstat-summary.timer\n
Run Code Online (Sandbox Code Playgroud)\n

应该回复 \xc2\xabActive: active ( waiting)\xc2\xbb

\n


小智 0

我遇到了同样的问题,在我的情况下(Debian 11),一种解决方案是在文件中更改debian-sa1为,因为当系统出厂时启用时将退出。sa1crondebian-sa1systemd

应用此 hack 后,cron配置文件sysstat将如下所示 ( /etc/cron.d/sysstat):

...
*/1 * * * * root command -v sa1 > /dev/null && sa1 1 1
...
Run Code Online (Sandbox Code Playgroud)

编辑

正如Yvan解释的那样,要sysstat通过systemd而不是运行cron,我们可以手动启动sysstat-collect.timer计时器sysstat-summary.timer,以防它们处于非活动状态:

systemctl start sysstat sysstat-collect.timer sysstat-summary.timer
Run Code Online (Sandbox Code Playgroud)

并且还可以让它们在系统启动时自动启动:

systemctl enable sysstat sysstat-collect.timer sysstat-summary.timer
Run Code Online (Sandbox Code Playgroud)

最后,在解释了这些技巧之后,在这种情况下,也许最好的解决方案是重新配置sysstat为运行systemd而不是cron,这在Yvan 的回答中进行了详细描述。