Linux サーバを EC2 に移行する前に、データ転送量(アウトバウンド)を把握する方法について教えてください

2024.06.25

困っていた内容

Linux サーバを EC2 に移行したいです。
利用中の Linux サーバにはリソース監視ツールを導入していないためデータ転送量を収集していません。
AWS はインターネットに向けたアウトバウンドはデータ転送量に応じて課金されることは知っていますので、 事前に目安となるデータ転送量を把握しておきたいです。

どう対応すればいいの?

ネットワークインターフェイスごとの送受信の統計情報を記録している /proc/net/dev にて転送量を確認できます。

/proc/net/dev は Linux カーネルが提供する仮想ファイルシステム(擬似ファイルシステム)である procfs に存在するファイルの1つです。

cat /proc/net/dev

Inter-|Receive                                                   |Transmit
 face |bytes    packets errs drop fifo frame compressed multicast| bytes    packets errs drop fifo colls carrier compressed
    lo:  908188   5596     0    0    0     0          0         0|  908188     5596    0    0    0     0       0          0
  ppp0:15475140  20721   410    0    0   410          0         0| 1375103    17405    0    0    0     0       0          0
  eth0:  614530   7085     0    0    0     0          0         1| 1703981     5535    0    0    0     3       0          0

eth0 インターフェイスを経由した送信量は Transmitbytes を確認します。

累積値となっていますので、計測したい時間あたりの増分がデータ転送量となります。

値はサーバの再起動ごとに0にリセットされます。

1日あたりの送信量 = 「24 時間後の Transmit の bytes」 - 「現時刻の Transmit の bytes」

また、集計が少し煩雑となりますが sysstat パッケージの sar でも確認できます。

sar はデフォルトで 10 分間隔で性能指標をログ形式で記録する設定となっており、ネットワーク使用状況も取得しています。
/etc/cron.d/sysstat (Amazon Linux 2)

デフォルトで 28 日分のデータが保持されていますので、過去にさかのぼって確認ができます。
/etc/sysconfig/sysstat (Amazon Linux 2)

該当箇所は txkB/s (Total number of kilobytes transmitted per second.)となります。

ただし、出力値が 1 秒あたりの平均転送量となっていますので、個々に 600 秒を乗算した上で、合算する必要があります。

sar -n DEV -s 12:20:00 -e 01:10:00 -f /var/log/sa/sa24 (日ごとにファイルが生成されている)

12:20:01 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
12:30:01 AM      eth0      0.60      0.45      0.04      0.05      0.00      0.00      0.00
12:40:01 AM      eth0      0.19      0.20      0.01      0.02      0.00      0.00      0.00
12:50:01 AM      eth0      4.29      0.62      5.55      0.05      0.00      0.00      0.00
01:00:01 AM      eth0      0.13      0.14      0.01      0.01      0.00      0.00      0.00

確認してみた

東京リージョン(ap-northeast-1)に作成した EC2 から、バージニア北部(us-east-1)に作成した S3 バケットに 10 MB のファイルを 3 回に分けて計 6 回アップロードしてみました。

日時 アップロード回数
Jun 24 04:02 1 (計 10 MB)
Jun 24 04:12 2 (計 20 MB)
Jun 24 04:23 3 (計 30 MB)

結果、下記4点の一致が確認できました。

  • 「1」 /proc/net/devTransmitbytes
  • 「2」 sar コマンドの txkB/s (Total number of kilobytes transmitted per second.)
  • 「3」 EC2 の NetworkOut メトリクス (CloudWatch)
  • 「4」 AWS Cost Explorer

「1」

Mon Jun 24 04:02:00 UTC 2024
Inter-|Transmit
 face |bytes    packets errs drop fifo colls carrier compressed
  eth0:   636382    9502    0    0    0     0       0          0
            ↓
  eth0: 11584930   17051    0    0    0     0       0          0

Mon Jun 24 04:12:12 UTC 2024
Inter-|Transmit
 face |bytes    packets errs drop fifo colls carrier compressed
  eth0: 11603062   17200    0    0    0     0       0          0
            ↓
  eth0: 33563482   32208    0    0    0     0       0          0

Mon Jun 24 04:23:18 UTC 2024
Inter-|Transmit
 face |bytes    packets errs drop fifo colls carrier compressed
  eth0: 33572665   32316    0    0    0     0       0          0
            ↓
  eth0: 66482123   54878    0    0    0     0       0          0

「2」

03:20:01 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
03:30:01 AM      eth0      0.16      0.17      0.01      0.01      0.00      0.00      0.00
03:40:01 AM      eth0      0.28      0.27      0.04      0.03      0.00      0.00      0.00
03:50:01 AM      eth0      0.28      0.28      0.02      0.03      0.00      0.00      0.00
04:00:01 AM      eth0      0.14      0.15      0.01      0.01      0.00      0.00      0.00
04:10:01 AM      eth0      5.30     12.92      0.30     17.86      0.00      0.00      0.00
04:20:01 AM      eth0      6.96     25.17      0.38     35.75      0.00      0.00      0.00
04:30:01 AM      eth0     10.64     37.83      0.57     53.59      0.00      0.00      0.00

「3」 「4」

料金について

1 か月あたり 100 GB のインターネットへのデータ転送 (アウトバウンド) を無料で利用できます。
2024 年 6 月時点では、100 GB を超えた場合は下記となります。

参考情報