在云计算时代,虚拟机 (VM) 已经变得非常普遍,而物理机的使用率已开始逐渐减少。在这篇文章中,我们将介绍 ‘vnStat’ 和 ‘iftop’ 这两个工具,我们可以使用它们来监控虚拟机中的数据消耗。
首先,我正在创建一台具有以下资源的机器:
20 GHz CPU
16 GB RAM
20 GB SSD
我正在挂载 Ubuntu 18.04 镜像,该镜像可在 CloudSigma’s 库中获取。
Ubuntu 18.04:预装 64 位,带 VirtIO 驱动程序、超级用户、Python 2.7.15、Pip 18.0、OpenSSL 1.1.0i、Cloud-init 以及截至 2018-09-30 的最新更新。
接下来,我将更新机器上所有现有的软件源和软件包。
|
1 2 |
sudo apt update sudo apt upgrade |
现在我们的系统已经是最新的了,我将开始介绍我们的工具:‘vnStat’ 和 ‘iftop’。
VNSTAT
根据 humdi 的说法,vnStat 是一款适用于 Linux 和 BSD 的基于控制台的网络流量监控工具,它会保留所选接口的网络流量日志。它使用内核提供的网络接口统计信息作为信息源。这意味着 vnStat 实际上不会嗅探任何流量,这也确保了极低的系统资源占用。
vnStat 的一些特性包括:
- 即使系统重启,数据依然存在。
- 它可以同时监控多个接口。
- 有多种输出选项,例如按天、按周等。
- 用户可以配置数据保留策略。
- 可以根据账单周期配置月份。
- 该工具本身非常轻量,资源占用极小。
- 无论流量大小,CPU 使用率都将保持不变。
安装
使用以下命令安装 vnStat:
|
1 |
sudo apt install vnstat |
它应该会自动检测网络接口。如果没有自动检测到,我可以使用以下命令检查接口:
|
1 |
ip addr |
在我的情况下,我可以看到两个接口:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 22:af:d1:32:d2:0b brd ff:ff:ff:ff:ff:ff inet XXX.XXX.XX.XXX/24 brd XXX.XXX.XX.XXX scope global dynamic ens3 valid_lft 1853sec preferred_lft 1853sec inet6 fe80::20af:d1ff:fe32:d20b/64 scope link valid_lft forever preferred_lft forever |
我可以忽略回环接口(loopback)。我想监控的接口是 ‘ens3’。我可以使用以下命令在 vnStat 中进行更新:
|
1 |
sudo vnstat -u -i ens3 |
使用指南
可以使用以下命令查看使用指南:vnStat –help
使用方法将如下所示:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
vnStat 1.18 作者 Teemu Toivola <tst at iki dot fi> -q, --query 查询 数据库 -h, --hours 显示 小时 -d, --days 显示 天 -m, --months 显示 月 -w, --weeks 显示 周 -t, --top10 显示 前 10 天 -s, --short 使用 简短 输出 -u, --update 更新 数据库 -i, --iface 选择 接口 (默认: ens3) -?, --help 简短 帮助 -v, --version 显示 版本 -tr, --traffic 计算 流量 -ru, --rateunit 切换 配置的 速率 单位 -l, --live 显示 传输 速率 在 实时时间 另请参阅 也 "--longhelp" 以获取 完整的 选项 列表 和 "man vnstat". |
借助这些命令,我们可以获取数据使用情况的指标。
为了轻松直观地进行监控,我们可以安装 vnStat 仪表板。以下是安装该仪表板的步骤:
安装以下所需的依赖项:
|
1 |
sudo apt install apache2 php wget unzip -y |
安装完所需的依赖项后,我们将从 github 仓库获取仪表板,解压并将其放置在我们的 Web 服务器目录中。
|
1 2 3 |
wget https://github.com/alexandermarston/vnstat-dashboard/archive/master.zip unzip master.zip sudo mv vnstat-dashboard-master/ /var/www/html/vnstat/ |
接下来,我们需要编辑配置。
|
1 |
sudo vi /var/www/html/vnstat/config.php |
以下行需要进行更改。我用粗体标记了所需的更改。
|
1 2 3 4 5 6 7 |
$use_predefined_interfaces = <strong>true</strong>; if ($use_predefined_interfaces == <strong>true</strong>) { $interface_list = <strong>["ens3"]</strong>; $interface_name<strong>['ens3']</strong> = "测试接口"; } |
我可以为接口命名,以便更容易进行监控。用户可以有多个要监控的接口。我们可以在这里添加它们。
做出更改后,打开 <<IP-ADDRESS>>/vnstat
我现在能够以优雅的方式查看数据了。


IFTOP
iftop 监听指定接口上的网络流量,如果未指定,则监听它能找到的第一个看起来像外部接口的接口。它会显示一个按主机对划分的当前带宽使用情况表。我们必须以足够的权限运行 iftop,以监控该接口上的所有网络流量。
安装
我们可以使用以下命令安装 Iftop:
|
1 |
sudo apt install iftop |
使用指南
可以使用以下命令查看使用指南:iftop -h
使用说明如下所示:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
iftop: 显示 带宽 使用情况 在 一个 接口 按 主机 命令格式: iftop -h | [-npblNBP] [-i 接口] [-f 过滤 规则] [-F 网络/掩码] [-G 网络6/掩码6] -h 显示 此 信息 -n 不进行主机名解析 -N 不t 转换 端口 号 为 服务 -p 运行 在 混杂模式 (显示流量之间其他 主机在同一相同网络段) -b 不'要 显示 a 条形图的流量 -B 显示带宽以 字节 -i 接口 监听在指定的接口 -f 过滤代码 使用 过滤代码来 选择数据包进行 计数 (默认: 无, 但仅IP 数据包被计数) -F 网络/掩码 显示流量流进/出的IPv4 网络 -G net6/mask6 显示流量流进/出的IPv6 网络 -l 显示和 计数链路-本地IPv6 流量 (默认: 关闭) -P 显示端口以及 well as 主机 -m 限制 设置the 上限limit 对于 the 带宽刻度 -c 配置文件 指定一个备用配置文件 -t 使用 文本界面 不使用ncurses 排序顺序: -o 2s 按by 第一列 (2秒 平均流量排序) -o 10s 按by 第二列 (10秒 平均流量排序) [默认] -o 40s 按by 第三列 (40秒 平均流量排序) -o 源地址 按源地址排序 -o 目的地址 按目的地址排序 以下选项仅在与available 结合 使用时可用: -t -s 数量 在 one single text output afer num 秒后打印单次文本输出, 然后 退出 -L 数量 要打印的行 数 iftop, 版本 1.0pre4 版权所有 (c) 2002 Paul Warren <pdw@ex-parrot.com> 和 贡献者 |
它需要 root 权限才能工作。我只需使用 sudo,因为我的用户 cloudsigma 是一个 sudoer 用户。我也可以使用命令 ‘sudo su’,然后以 root 用户身份运行所有命令。
以下命令将向我显示接口 ‘ens3’ 上的所有连接以及数据交易:
|
1 2 |
sudo su iftop |
如果需要捕获特定时间段内的数据流量,一种更简单的方法是:
|
1 |
iftop -t -s 30 |
上述命令将汇总未来 30 秒内的数据流量交易,并在时间结束后提供一个列出所有数据使用量和传输速率的表格。
虽然 iftop 提供了实时传输速率,但它不存储数据,也没有仪表板供我们直观地可视化和查看模式。因此,如果我们想查看实时数据传输速率,我们推荐使用 iftop。对于较长时间段的数据流量监控,我们推荐使用 vnStat.
我们希望您能充分利用本指南,并应用如何使用 vnStat 和 iftop 来监控 VM 内数据消耗的基础知识。
评论
暂无评论。发表第一条评论吧。