【入門編】 vnStatによる長期的なネットワークトラフィック統計の収集 – トラブルシューティング&ネットワーク運用監視実践ガイド

こんにちは!データセンターの最前線で、無数のパケットの波と格闘してきたNOCエンジニアの私です。

ネットワークの運用監視と聞いて、皆さんはどんな姿を想像するでしょうか? 夜中に鳴り響くアラート音、モニターに張り付いて流れるログを睨みつけるピリピリした空気……。そんなイメージを持っている方も多いかもしれませんね。

でも、安心してください。すべての監視がそんな重装備である必要はありません。「今、この瞬間のトラブル」を見つけるのも大事ですが、「昨日はどれくらいデータが流れたのか」「先月と比べて今月の通信量は増えているのか」といった、長期的なトレンドをコツコツ記録しておくことも、インフラを守る上では同じくらい大切なんです。

今回は、そんな日々の通信量を軽やかに、そしてスマートに記録し続けてくれる強力な相棒「vnStat」について、現場の知見を交えながら優しく紐解いていきたいと思います。一歩ずつ、一緒に理解していきましょう!

—

ネットワークの通信量を測るって、どういうこと?

私たちが普段使っているインターネットは、目に見えない水道管のようなものです。YouTubeで高画質な動画を見たり、重いファイルをダウンロードしたりすると、その水道管を大量のデータ(水)がザブザブと流れていきます。

ここで一つ、疑問が湧きませんか?
「今、どれくらいの水が流れているか」を測るコマンド(iftopやnloadなど)はたくさんありますが、それらは「蛇口をひねった瞬間」の勢いしか教えてくれません。

「今月、ウチのサーバーは合計で何ギガバイトの通信をしたんだっけ?」
「先週の水曜日は、何時頃に通信が一番混雑したんだろう?」

こうした「過去の累計データ」を知りたいとき、リアルタイムのメーターだけを見つめていても分からないですよね。かといって、通信のたびにすべてのログを保存していたら、ディスク容量がパンクしてしまいます。

そこで登場するのが、今回主役のvnStatです。

—

郵便配達員に例えて理解する、vnStatの仕組み

vnStatがどうやって動いているのか、身近な例えで考えてみましょう。

あなたの街の郵便局を想像してください。そこには一人の勤勉な配達員(これがvnStatのデーモンです)がいます。
この配達員は、街の入り口(ネットワークインターフェース)にずっと張り付いていて、今日1日で何通の手紙(データ)が届き、何通送り出されたのかを、毎日コツコツと手帳にメモしていきます。

  • 朝から夕方までの間に、何ギガバイトの荷物が通過したか
  • 1時間ごとに、どれくらい混み合ったか
  • 今月はトータルでどれくらいの交通量があったか

そして素晴らしいことに、この配達員は非常に忘れっぽくありません。そして、手帳に書く数字も「何時何分に誰宛ての手紙が…」といった細かいプライバシーまでは書きません。ただ「荷物の総重量(バイト数)」だけを綺麗に集計して記録します。

だから、サーバーのCPUやメモリをほとんどムダに食わず、ひっそりと、しかし確実に働き続けることができるのです。これが、vnStatが「軽量で永続的」と言われる所以ですね。

—

早速使ってみよう! vnStatのインストールと基本操作

百聞は一見にしかず。実際にサーバーへインストールして、その実力を覗いてみましょう。
(※今回はUbuntuやDebianなどの系譜をベースに解説しますね)

まずは、パッケージ管理システムを使ってサクッとインストールします。ターミナルを開いて、以下のコマンドを叩いてみてください。

# システムのパッケージリストを更新し、vnStatをインストールします
sudo apt update
sudo apt install vnstat

インストールが終わると、自動的にバックグラウンドで監視プログラム(デーモン)が動き始めます。これですぐに、サーバーの交通量調査がスタートします。

1. 現在の状況をサクッと覗いてみる

インストールが終わったら、まずは今の状態を確認してみましょう。引数なしで vnstat コマンドを実行します。

# デフォルトのインターフェースの統計情報を表示する
vnstat

画面には、次のような感じの出力が表示されます(環境によってインターフェース名は異なります)。

Database updated: Thu Oct 26 10:15:00 2023

   eth0 / traffic statistics

          rx      |     tx      |    total    |   estimated
-----------------+-------------+-------------+---------------
 امروز        -- |      --     |      --     |
-----------------+-------------+-------------+---------------
     hour-by-hour (approximate)
 ...

(おっと、失礼しました。言葉の壁は越えられますが、初期状態ではデータが蓄積されるまで少し時間がかかりますね!)

2. 時間ごとのトレンドを見る(-h オプション)

「今日、何時頃にネットワークが混み合ったんだろう?」それを知りたいときは、時間(hour)を意味する -h を使います。

# 1時間ごとのトラフィック推移を表示する
vnstat -h

現場のエンジニアとして、障害対応のときに一番重宝するのがこの機能です。「昨日の夜22時頃に、急激にトラフィックが跳ね上がっているな……。もしかしてバッチ処理のスケジュールが被ったか?」といった仮説を、このコマンド一発で立てることができます。

3. 日別・月別の集計を見る(-d と -m オプション)

クラウドサーバーを使っていると、気になるのは「今月の通信量、無料枠を超えてないよね?」という恐怖ですよね。そんなときは、日別(day)の -d や月別(month)の -m を使いましょう。

# 日別のトラフィック統計を表示する
vnstat -d

# 月別のトラフィック統計を表示する
vnstat -m

出力結果では、受信(rx)と送信(tx)、そしてその合計(total)がわかりやすい単位(MBやGB、TBなど)でキレイに整列して表示されます。これなら、マネージャーへのレポート作成やコスト予測もラクラクですね。

—

実務で役立つ! ちょっと踏み込んだ設定とテクニック

データセンターの現場でvnStatを運用していると、「デフォルトのままだと、ちょっとかゆいところに手が届かないな」というポイントに出会います。いくつか実用的なテクニックをご紹介しましょう。

監視するネットワークインターフェースを指定する

サーバーに複数のネットワークカード(例えば、社内LAN用の eth0 と、外部公開用の eth1 など)が刺さっている場合、vnStatに「どれを監視すればいいの?」と教えてあげる必要があります。

設定ファイルは通常 /etc/vnstat.conf にあります。お好みのエディタで開いてみましょう。

# 設定ファイルをテキストエディタで開く(例:nanoを使用)
sudo nano /etc/vnstat.conf

ファイルの中にある Interface という項目を探してみてください。

# デフォルトで監視するネットワークインターフェース名
Interface "eth0"

ここの "eth0" の部分を、ご自身の環境で監視したいインターフェース名に変更します。現在どんなインターフェースがあるかわからないときは、ip a や ifconfig コマンドで事前に確認しておきましょう。

データの保存先とバックアップ

vnStatが収集した貴重なデータは、通常 /var/lib/vnstat/ ディレクトリの中にデータベースファイルとして大切に保管されています。

もしサーバーの引っ越しやOSの再インストールを行う予定がある場合は、このディレクトリをごっそりバックアップしておけば、これまでの歴史(統計データ)をそのまま新しい環境に引き継ぐことができます。これはインフラエンジニアにとって非常にありがたい仕様です。

—

まとめ:日々の「当たり前」を記録する大切さ

今回は、長期的なトラフィック統計を手軽に収集できる「vnStat」について、その仕組みと基本的な使い方を紐解いてきました。

ネットワークの運用において、「普段の正常な状態(ベースライン)」を知っていることは、いざという時の障害切り分けにおいて最強の武器になります。「いつもと違う」に気づけるのは、日々の地道な記録があってこそです。

複雑なグラフツールを導入するほどでもないけれど、サーバーの通信量はしっかり把握しておきたい――そんなシチュエーションで、vnStatは間違いなくあなたの最高の相棒になってくれます。

ぜひ、あなたの手元のサーバーにも導入して、ネットワークの「健康手帳」をつけてみてくださいね。それではまた、次の現場でお会いしましょう!

コメント

タイトルとURLをコピーしました