用于实时捕获进程级指标的 Linux 工具



我想实时监控特定进程消耗的指标,如 CPU、内存等。

我已经评估了各种工具,但发现没有一种适合我的需求。

  1. pidstat捕获了我想要的一切,它为每个进程提供了良好的内存使用情况,但它报告的 CPU 使用率更高(甚至大于机器消耗的总 CPU(

  2. sar更像是pidstat,但只是将所有数据转储到文件中。

  3. 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以人类可读的格式提供statstatm
  • /proc/<pid>/sched将为您提供该过程的各种基于CPU和负载的统计信息。

你可以用man proc阅读更多内容;你可以很容易地编写一个守护进程,它按时间间隔提取这些信息,然后将其存储在集中的某个地方,比如graphite或 Elastic 堆栈。

最新更新