我想跟踪 Ubuntu 20.04 机器上的 CPU 和内存总使用情况。为此,我将安装 sysstat 库。我阅读了相关函数的手册和帖子sar
,但仍然对语法感到困惑。
我想做的事:每五秒记录一次 CPU 和内存总使用情况。每天将数据导出为 CSV 一次并删除二进制数据。
是什么让我困惑: 1. 有多种指定时间间隔的设置。sar -u %system -r %memused 5
每五秒记录一次 CPU 和内存使用情况。最重要的是,该包每十分钟生成一次“活动报告”,如5-55/10 * * * * root command -v debian-sa1 > /dev/null && debian-sa1 1 1
中所定义/etc/cron.d/sysstat
。我对每五秒发生的事情和每十分钟发生的事情感到困惑。程序是否首先每五秒缓存一次数据,然后每十分钟将其写入文件? 2. 多种函数写入磁盘。我需要其中哪一个?sar -u %system -r %memused -o 5
,sadc -u %system -r %memused 5 -
, 或者sa1
? 3. 我是否需要将生成每日 CSV 文件 ( ) 的代码sadf -d /var/log/sysstat/sa$(date +%d -d yesterday) > /home/some_user/sar_data.csv
作为计时作业执行?
附带说明:如果有人知道比 sysstat 方法计算效率更高的解决方案,请随时提出建议。
答案1
5-55/10
在 5、15、25、35、45 和 55 秒运行命令。debian-sa1 1 1
所以debian-sa1 [ interval [ count ] ]
它会收集一次一秒钟。
在你的sar
命令中你没有数数所以它会累积5秒直到停止。
虽然它会显着增加日志大小和 CPU 使用率,因为 计划任务(8)每分钟检查一次 cron 条目,.
The time and date fields are:
field allowed values
----- --------------
minute 0-59
hour 0-23
day of month 1-31
month 1-12 (or names, see below)
day of week 0-7 (0 or 7 is Sunday, or use names)
由于如果作业运行时间比启动间隔时间长,cron 就会遇到严重问题,因此不安全只需将 cron 条目调整为:
*/1 * * * * root command -v debian-sa1 > /dev/null && debian-sa1 10 5
或者:
*/1 * * * * root for i in `seq 1 5` ; do debian-sa1 1 1 ; sleep 10 ; done
但这样做作为测试可能会显示该选项将占用多少 CPU 时间和磁盘空间。但第二个命令的影响会稍微小一些,因为它只收集 10 秒中的 1 秒。
但上述任一日志文件的大小都相似。
由于两者都不systat
是cron
针对该收集频率而设计的,因此不要期望上述粒度具有高稳定性。