Linux のデータ転送量をログに残しておく方法

Linux のデータ転送量をログに残しておく方法
あぱーブログ
2017年8月10日  カテゴリー:Linux  タグ:
Pocket
LINEで送る

データ転送量に課金のないレンタルサーバーから、AWSやGCPなどデータ転送量によって課金がされるクラウドサービスに引っ越す時に、今使っているサーバーのデータ転送量は毎月どのくらいか知りたいことがあります。そこで今回は、Linux サーバーのデータ転送量を調べる方法と、データ転送量を自動でログに残しておく方法をまとめてみました。

データ転送量とは?

レンタルサーバーやクラウドサービスで言う「データ転送量」は、一般的にサーバーからインターネットへ向けての下りの通信量(アウトバウンド通信とも呼ばれます)を指し、この通信に課金されます。逆にインターネットからサーバーへの上りの通信(インバウンド)には課金されないことが多いです。

データ転送量を調べる方法

ifconfig コマンド

データ転送量は、ifconfig コマンドで表示される TX(送信)bytes の値で確認することができます。
RX(受信)の値と間違えないように注意しましょう。また、これらの値はサーバーを起動してから現在までのデータ転送量です。サーバーを再起動するとリセットされて「0」になります。

サーバーに複数の NIC(ネットワークインターフェースカード)が搭載されている場合は、インターネットとの通信に使われている NIC の値を見ることが必要です。下の例では、インターネットとの通信に使われている NIC eth0 のデータ転送量を表示しています。

$ ifconfig eth0
 
eth0: flags=4163 mtu 1500
inet 160.16.57.86 netmask 255.255.254.0 broadcast 160.16.57.255
ether 9c:a3:ba:01:b4:d8 txqueuelen 1000 (Ethernet)
RX packets 28740231 bytes 2953730410 (2.7 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 17281863 bytes 18570720458 (17.2 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

/proc/net/dev

しかし CentOS7 など新しめのLinuxOSでは ifconfig コマンドが非推奨になっているためインストールされません。代替えとなる ip コマンドの addr オプションでは、データ転送量が表示されませんので、その場合は /proc/net/dev ファイルでデータ転送量を確認します。ifconfig コマンドもこの値を参照して表示しています。

Inter-face の列も含めて、10列目(18570725725)が Transmit bytes すなわちデータ転送量の値です。

データ転送量をログに残しておく方法

上の /proc/net/dev の Transmit bytes の値を切り出して、1日ごとにログファイルに出力しておきます。こうしておけば、前日とのデータ転送量の差を計算することによって、1日ごとのデータ転送量を把握することができますし、サーバーを再起動してしまいデータ転送量が「0」にリセットされても困りません。

Transmit bytes の値をログファイルに出力するスクリプトを作成します。

sudo vi /usr/local/bin/transmit_bytes.sh

スクリプトに実行権限を設定します。

sudo chmod 755 /usr/local/bin/transmit_bytes.sh

実行テスト

sudo /usr/local/bin/transmit_bytes.sh

出力されている値が /proc/net/dev の Transmit bytes とほぼ一致していることを確認します。

tail /var/log/transmit_bytes.log

スクリプトを定時に実行するように cron に登録すれば設定完了です。
sudo crontab -e

00 00 * * * /usr/local/bin/transmit_bytes.sh

おわりに

データ転送量をログファイルに出力しておくほどでない場合は、uptime コマンドで現在までのサーバーの稼働時間を確認して、「Transmit bytes ÷ 稼働日数」でおおよその1日ごとのデータ転送量を計算することもできます。

スポンサーリンク
Pocket
LINEで送る

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です