こんにちは!データセンターの最前線で、無数のパケットの波と格闘してきた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は間違いなくあなたの最高の相棒になってくれます。
ぜひ、あなたの手元のサーバーにも導入して、ネットワークの「健康手帳」をつけてみてくださいね。それではまた、次の現場でお会いしましょう!
コメント