如何设置服务器来监控一段时间内的资源使用情况并生成报告

如何设置服务器来监控一段时间内的资源使用情况并生成报告

我正在做一个研究项目,我们通常在服务器上启动一个作业,大约需要一两天的时间才能运行,然后我们再回顾结果。问题是,在某些情况下,我们耗尽了服务器的资源,这影响了我们的结果,因为有些作业会失败。

我想生成一份报告,我们可以回顾该报告以确定服务器资源是如何使用的,并将其与工作进行交叉引用。

我曾尝试使用 atop 来执行此操作(使用其原始文件格式),但在不同的机器上读取这种格式存在很多问题(即不同版本的 linux 或 atop 等)。

所以我想知道是否有更优雅的解决方案?最终,我需要能够深入了解每个进程级别的资源消耗,并查看用于实例化进程的命令(如 htop 中的命令列)。

答案1

你可以从

sar -f /var/log/sysstat/sa6 

查看昨天的系统 daya

以及 vmstat

这使您能够开始将问题缩小到小时。从那里您可以开始查看服务器日志以查看是否存在错误。在日志上使用 grep 并查找您的进程名称和关键字,例如问题、错误。

答案2

你应该尝试一下nmon,你可以从 EPEL 存储库获取它。

您可以安排一个 cron 作业来创建每日报告,例如这将在每天早上 7 点生成一份报告:

- name: nmon cron
  cron:
    name: "Generate nmon daily at 7:00"
    minute: "0"
    hour: "7"
    job: "/bin/nmon -fT -s300 -c290 -m /root/nmon"
    user: root
    cron_file: nmon

报告的大小各不相同,例如第一个报告来自测试服务器,第二个报告来自 Oracle 生产服务器:

[root@xxxxxx379 ~]# du -sh nmon/xxxxxx379_201108_0700.nmon
316K    nmon/xxxxxx379_201108_0700.nmon

[root@xxxx203 ~]# du -sh nmon/xxxx203_201108_0700.nmon
1.8M    nmon/xxxx203_201108_0700.nmon

然后,您可以用多种方式绘制统计图表(输出为 csv)。

相关内容