docker - 如何在容器内获取 BLOCK I/O 和 NET I/O
问题描述
我想在容器中获取 docker stats。我们不能在容器内使用 docker stats 命令。所以,我想使用 cat /sys/fs/cgroup。如何获取 BLOCK I/O 和 NET I/O 值。
解决方案
测量块 I/O
docker文档描述了如何执行此操作。本质上,在容器内部,我们可以访问我们的 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}'
我已经验证这可以在容器内部工作。
推荐阅读
- swiftui - SwiftUI - 将数组传递给函数
- python - CUDA 初始化:CUDA 未知错误 - 这可能是由于环境设置不正确
- javascript - 带有 Math.pow 的 Js NaN 或未定义元素
- excel - 如何从 .txt 文件中获取文本并将其写入同一个 excel 文件的新工作表中
- reactjs - 如何成功部署带有firebase的react app?
- python - 根据 2 个不同的列删除熊猫中 Numpy 数组中的重复项
- python - 标量符号多重 sp.eye 的正确方法是什么
- c# - 无法使用 PKCS#11 接口对 USB 令牌执行解密
- flutter - 如何将 StatefulWidget 绑定到模型而不在 StatefulWidget 之外完成?
- minecraft - 我在 google vps 上创建的 mc 服务器出现问题