Story #3826

Updated by Tom Clegg about 5 years ago

(TC) sysfs provides traffic statistics. I tried this in a docker container, after doing a few pings:

<pre>
# head /sys/devices/virtual/net/*/statistics/*_bytes
==> /sys/devices/virtual/net/eth0/statistics/rx_bytes <==
1116

==> /sys/devices/virtual/net/eth0/statistics/tx_bytes <==
1170

==> /sys/devices/virtual/net/lo/statistics/rx_bytes <==
168

==> /sys/devices/virtual/net/lo/statistics/tx_bytes <==
168
</pre>

This does require that we run crunchstat inside docker, instead of monitoring statistics from outside using cgroups. Fortunately this is easy and greatly simplifies crunchstat (e.g., call runtime.NumCPU() instead of reading and parsing @/sys/fs/cgroup/..../cpuset/cpus@, and read from predictable parts of @/sys@ instead of requiring the caller to specify parts of the cgroup path).

<pre>
docker run --volume=/usr/bin/crunchstat:/usr/bin/crunchstat ... /usr/bin/crunchstat {command...}
</pre>

See http://stackoverflow.com/questions/11356330/getting-cpu-usage-with-golang (summary: parse /proc/stat)

Back