使用pidstat或sar报告每个进程的IO统计信息

我试图跟踪一些“可疑”进程随着时间的推移使用。 理想情况下,要通过munin使这些统计数据可用,或直接推入石墨。 但是,作为一个起点,能够以合理的空间/资源高效的方式跟踪这种使用情况,这将是非常好的。 然后能够在一段时间内检索前10名IO消费者及其数据读/写统计信息。

pidstat -d 2似乎每隔几秒钟就产生一次最高IO消耗过程的输出。 而且我知道sar有一些内置的归档,但我不知道如何将它归档到pidstat (也许在SA1_OPTIONS ?我在debian / ubuntu上)。

除了pipe道pidstat到磁盘,然后在输出上运行一些收集/聚合,有没有办法与sar做同样的事情(但更有效),然后检索统计信息?

想出了这个特殊的bash脚本,通过碳转发pidstat信息(per-process IO读写)到石墨

 #!/bin/bash hostname=`hostname -s` carbon_host=YOUR_CARBON_HOSTNAME_OR_IP carbon_port=2003 pidstat -h -d 1 | grep --line-buffered -v '^$' | grep --line-buffered -v '^#' | grep --line-buffered -v '^Linux' | awk --assign=hostname=${hostname} '{ printf "servers.%s.pidstat.%s.read %s %s\nservers.%s.pidstat.%s.write %s %s\n", hostname, $6, $3, $1, hostname, $6, $4, $1 ; fflush(); }' > /dev/tcp/${carbon_host}/${carbon_port}