跳转到主要内容

网络和磁盘I/O状态监控

项目描述

度量学

Python

以兆字节每秒为单位监控和记录网络和磁盘统计信息。

安装

pip install iometrics

用法

Pytorch-lightning集成

from pytorch_lightning import Trainer
from iometrics.pytorch_lightning.callbacks import NetworkAndDiskStatsMonitor

net_disk_stats = NetworkAndDiskStatsMonitor()

trainer = Trainer(callbacks=[net_disk_stats])

生成的度量

  • network/recv_MB_per_sec – 所有相关网络接口接收MB/s的总和。
  • network/sent_MB_per_sec – 所有相关网络接口发送MB/s的总和。
  • disk/util% – 所有磁盘设备的磁盘利用率百分比的平均值。
  • disk/read_MB_per_sec – 所有磁盘设备的磁盘读取MB/s的总和。
  • disk/writ_MB_per_sec – 所有磁盘设备的写入MB/s之和。
  • disk/io_read_count_per_sec – 所有磁盘设备的每秒读取I/O操作数之和。
  • disk/io_writ_count_per_sec – 所有磁盘设备的每秒写入I/O操作数之和。

屏幕截图

纯Python实现(无依赖)

快速检查

python -c 'from iometrics.example import usage; usage()'

示例输出

|        Network (MBytes/s)       | Disk Util |            Disk MBytes          |           Disk I/O          |
|     Received    |     Sent      |     %     |    MB/s Read    |  MB/s Written |     I/O Read    | I/O Write |
|   val  |   avg  |  val  |  avg  | val | avg |  val   |  avg   |  val  |  avg  |   val  |   avg  | val | avg |
| ------:| ------:| -----:| -----:| ---:| ---:| ------:| ------:| -----:| -----:| ------:| ------:| ---:| ---:|
|    4.6 |    3.5 |   0.1 |   0.1 |  49 |   2 |   52.8 |    1.1 |   0.0 |   0.9 |    211 |      4 |   5 |  18 |
|    4.1 |    3.5 |   0.1 |   0.1 |  61 |   3 |   60.4 |    2.4 |  40.3 |   1.7 |    255 |     10 | 149 |  21 |

完整代码

import time
from iometrics import NetworkMetrics, DiskMetrics
from iometrics.example import DUAL_METRICS_HEADER
net  = NetworkMetrics()
disk = DiskMetrics()
for i in range(100):
    time.sleep(1)
    net.update_stats()
    disk.update_stats()
    if i % 15 == 0:
        print(DUAL_METRICS_HEADER)
    row = (
        f"| {net.mb_recv_ps.val:6.1f} | {net.mb_recv_ps.avg:6.1f} "
        f"| {net.mb_sent_ps.val:5.1f} | {net.mb_sent_ps.avg:5.1f} "
        f"| {int(disk.io_util.val):3d} | {int(disk.io_util.avg):3d} "
        f"| {disk.mb_read.val:6.1f} | {disk.mb_read.avg:6.1f} "
        f"| {disk.mb_writ.val:5.1f} | {disk.mb_writ.avg:5.1f} "
        f"| {int(disk.io_read.val):4d} | {int(disk.io_read.avg):4d} "
        f"| {int(disk.io_writ.val):3d} | {int(disk.io_writ.avg):3d} "
        f"|"
    )
    print(row)

在Docker容器中运行

容器无法访问宿主机的网络统计信息,因此需要此解决方案。

# on the host machine (not inside the container)
iometrics replicate proc &

在主机上运行上述脚本后,应将/host/proc/net/dev挂载到容器中。例如

docker run -it -v "/tmp/proc_net_dev:/host/proc/net/dev:ro" <YOURIMAGE>

贡献

CONTRIBUTING.md

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

iometrics-0.0.8.tar.gz (14.5 kB 查看哈希值)

上传时间

构建分布

iometrics-0.0.8-py3-none-any.whl (16.6 kB 查看哈希值)

上传时间 Python 3

由以下机构支持