gpt4 book ai didi

docker - 如何在容器内获取BLOCK I/O和NET I/O

转载 作者:行者123 更新时间:2023-12-02 19:16:39 33 4
gpt4 key购买 nike

我想在容器内获取docker stats。我们不能在container中使用docker stats命令。所以,我想使用cat / sys / fs / cgroup。如何获取块I / O和NET I / O值。

最佳答案

测量块I / O
docker documentation描述了如何执行此操作。本质上,在容器内部,我们可以访问cgroup。 cgroups可用于跟踪完成了多少块I / O。
您阅读了文件/sys/fs/cgroup/blkio/blkio.throttle.io_service_bytes。该文件如下所示:

8:0 Read 20201472
8:0 Write 14065664
8:0 Sync 21794816
8:0 Async 12472320
8:0 Discard 0
8:0 Total 34267136
253:0 Read 20201472
253:0 Write 14065664
253:0 Sync 21794816
253:0 Async 12472320
253:0 Discard 0
253:0 Total 34267136
Total 68534272
我发现底部的总数对完成的块I / O进行了双重计数,但是您可以使用顶部的两行来计算总的读/写。
我已验证这可以从容器内部进行。
测量NET I / O
您可以使用 /proc/net/dev来获取容器内的网络统计信息。该文件如下所示:
Inter-|   Receive                                                |  Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
eth0: 9620619 6480 0 0 0 0 0 0 253570 3808 0 0 0 0 0 0
您需要解析“接收字节”和“发送字节”字段。这是有关如何在Awk中执行此操作的示例:
cat /proc/net/dev | awk '/eth0/{print "RX Bytes " $2 "\nTX Bytes " $10}'
我已经验证这可以从容器内部进行。

关于docker - 如何在容器内获取BLOCK I/O和NET I/O,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63216668/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com