我想实时监控特定进程消耗的指标,如 CPU、内存等。
我已经评估了各种工具,但发现没有一种适合我的需求。
-
pidstat
捕获了我想要的一切,它为每个进程提供了良好的内存使用情况,但它报告的 CPU 使用率更高(甚至大于机器消耗的总 CPU( -
sar
更像是pidstat
,但只是将所有数据转储到文件中。 -
ps
更像是快照工具,不能给我实时统计数据
正在寻找一种可以实时为我提供进程 CPU 使用情况的工具。
这些是一些适用于 Linux 的顶级命令行进程监控工具。
1. 顶部 – Linux 进程监控
2. 虚拟机统计 – 虚拟内存统计信息
3. Lsof – 列出打开的文件
4. Tcpdump – 网络数据包分析器
5. 网络统计 – 网络统计
6. Htop – Linux 进程监控
7. Iotop – 监控 Linux 磁盘 I/O
8. Iostat – 输入/输出统计
9. IPTraf – 实时 IP 局域网监控
10. Psacct 或 Acct – 监控用户活动
如果您需要GUI界面,我建议您
1. 侏儒系统监视器
2. 格雷尔·
3. 纳吉奥斯
4. 监控
5. 系统负载指示器
了解的有关每个级别可用工具的所有信息:
http://www.brendangregg.com/linuxperf.html
我不知道有哪个工具可以每隔一段时间进行特定的过程监控;但是,这样的东西并不难写;这里有一些事实:
-
/proc/<pid>/stat
将提供有关进程统计信息的大量信息。 -
/proc/<pid>/cmdline
将提供进程命令行。 -
/proc/<pid>/environ
将提供进程知道的环境变量。 -
/proc/<pid>/io
IO 统计信息。 -
/proc/<pid>/statm
内存使用情况。 -
/proc/<pid>/status
以人类可读的格式提供stat
和statm
。 -
/proc/<pid>/sched
将为您提供该过程的各种基于CPU和负载的统计信息。
你可以用man proc
阅读更多内容;你可以很容易地编写一个守护进程,它按时间间隔提取这些信息,然后将其存储在集中的某个地方,比如graphite
或 Elastic 堆栈。