我使用大量工具来监控不同类型的服务器负载(Linux/Apache/MySQL/PHP)——top、iostat 和 netstat,以及我自己的脚本内测量。我使用脚本和电子表格收集和汇总数据,以全面了解是什么让我的服务器忙碌。
我可以在 Linux 下安装一个简单的工具/守护进程吗?它会静静地运行在后台,以适当的时间间隔收集所有这些信息,然后提供简单的每日/每周/每月摘要供我阅读?
答案1
有人提到特区(系统活动报告器)并且我必须支持这个建议!
听起来你已经用各种工具自己做了很多工作。然而,你可能发现你感兴趣的大部分系统数据都是由南部非洲发展共同体(系统活动数据收集器)cron 作业,只要你拥有系统状态软件包安装在您的系统上。'奇怪的是,这些并不作为守护进程运行。
这南部非洲发展共同体脚本(名为sa1和 sa2) 从各种内核计数器收集信息...其中一些与查询的相同状态监测而其他的则来自相同的来源是否配置用于报告每个接口上传输和接收的数据量等。默认情况下sa1每 10 分钟一班。
这特区然后可以使用命令从收集的数据中提取此信息的各种子集。要熟悉所有可用表,请运行萨里-A并将输出重定向到某个方便的文件。然后在一个窗口中用你喜欢的编辑器打开该文件,然后调出特区在另一个文件中查看手册页。现在只需遍历整个文件,在手册页中搜索各种列标题标识符。
我也喜欢使用特区-A作为排除无法解释的性能和稳定性故障的早期步骤。(通常,当我上报此类问题时,系统已经重新启动或问题间歇出现)。这些数据通常是最好的可用数据,因为用户(包括我合作过的大多数初级和中级系统管理员)不知道在重新启动之前要收集哪些类型的数据。
使用这些数据进行事后故障排除的诀窍是扫描所有这些数字列以寻找峰值。(是的,如果您擅长使用 GNUplot 等工具,您可以从中生成一堆图表;但老实说,您通常只需扫描原始数字就可以发现峰值)。查看一些没有出现问题的类似系统,或者在一切似乎正常的间隔内查看此系统上的数据。一旦您发现“峰值”(网络流量、分页活动、磁盘 I/O),请尝试将它们关联起来(我通常只是复制数据并删除所有“名义”数据,只留下可能具有证明力的东西)。要寻找的第一个关联是不同资源峰值的时间...运行队列是否在分页失控之前突然出现峰值?...在磁盘 I/O 数字暴涨之前,接收的网络流量是否有大幅增加?然后,您将其与最后的命令(当时登录的人)...如果你启用了进程记账,那么你可以查看最后通讯命令。当然,你也可以查看/var/日志/*关注相同的时间间隔(当然,从那里向后扫描)。
你会惊奇地发现你可以通过这项练习了解到多少东西。
“Tom 帐户登录后,几分钟后,通过 eth0 和 sdb3 磁盘的数据流量逐渐增加;也许他正在复制数据集,可能是从 Lan B 上的 Netapps 复制的……然后我们看到内存页面分配出现大幅飙升,但进程创建保持正常,直到此页面分配开始;这时中断和运行队列通过房间,并使系统进入 OOM 抖动。Tom,你这个无知的人!你的 foobar.pl 中有内存泄漏!” :)
但是,为了达到您的目的,您可以使用萨里-A只是作为起点。你找到你需要的位,然后你调用特区使用各种参数来捕获您想要解析、过滤和单独绘制的每个表。还有选项可以以更适合机器的格式呈现输出。
答案2
答案3
sar
是系统活动报告命令。它可以提供实时数据(类似于 vmstat),还可以将数据保存在后台以供以后报告。
Debian 在其存储库中有几个不同的版本,请查看atsar
和sysstat
软件包。
您可能还会发现进程记帐很有趣。当任何进程完成时,它的使用信息都会写入一个文件,可以从中生成报告。查看包acct
。