【実務・中級編】 bmonを用いたマルチインターフェース帯域監視とレート計算 – トラブルシューティング&ネットワーク運用監視実践ガイド

現場の視界をクリアにせよ:bmonでマルチインターフェースの「鼓動」を可視化する

深夜3時、データセンターのフロアに響く冷却ファンの唸りを聞きながら、あなたは必死にログを追いかけている。突如としてサービスが重くなり、疎通確認の ping が時折ロスを返してくる。こんな時、真っ先に確認すべきは「どこで、どのくらいのトラフィックが、何のために流れているか」というネットワークの動的挙動だ。

OS標準の netstat や ss、あるいは ifconfig のカウンタをチマチマ眺めるのは、もはや過去の遺物。今回は、現場のシニアエンジニアが愛してやまない、マルチインターフェース監視の決定版ツール bmon(Bandwidth Monitor)について、その実戦的な活用術を解説しよう。

—

なぜ今さら bmon なのか?

トラブルシュートの現場では、単一のインターフェースだけでなく、VLANタグが付与されたサブインターフェース、あるいはブリッジやボンディング(LACP)の状態を「俯瞰」する必要がある。

bmon の最大の強みは、「すべてのインターフェースの帯域利用率、パケット数、エラーレートを一つの画面で、しかもテキストベースのグラフでリアルタイム表示できる」点だ。SSH経由で低帯域な回線から接続していても、GUIツールのような重さを感じることなく、瞬時に異常なトラフィックのスパイクを検知できる。

インストールは一瞬で終わらせる

多くのディストリビューションではパッケージマネージャから導入可能だ。

# Debian/Ubuntu系
sudo apt install bmon

# RHEL/CentOS/AlmaLinux系 (EPELが必要)
sudo yum install epel-release
sudo yum install bmon

—

現場で差がつく bmon の運用Tips

単に bmon を起動するだけでは、その真価は半分も引き出せない。実務で役立つ設定とオプションを叩き込もう。

1. インターフェースを絞り込み、視認性を上げる

サーバには物理ポート以外にも docker0 や veth などの仮想インターフェースが溢れている。ノイズを排除し、監視対象に集中するために以下のオプションが有効だ。

# 監視対象をeth0とeth1のみに絞り、2秒間隔で更新
bmon -p eth0,eth1 -r 2

2. インタラクティブ操作をマスターする

bmon を起動中に以下のキーを入力することで、表示を即座に変更できる。これは現場で「今すぐグラフが見たい!」という時に必須の操作だ。

  • g: グラフの表示/非表示(これを見ているだけで、輻輳の波形が手に取るようにわかる)
  • d: 詳細表示の切り替え(カウンタの生の数値や、エラーパケット数を確認できる)
  • i: インターフェース一覧の表示順変更
  • ?: ヘルプ画面(忘れたらこれ)

—

帯域制限やパケットロスをコードで検証する

bmon で「パケットがどこかへ消えている」ことを検知したら、次はアプリケーション層でその挙動をシミュレートしたり、詳細なメトリクスを収集したりする必要がある。

例えば、Pythonでネットワークのレスポンスやパケットの到達を確認する場合、requests を使って単純な監視スクリプトを走らせるのが定石だ。

import requests
import time

# 接続先APIエンドポイント
TARGET_URL = "http://api.internal.service/health"

def check_network():
    try:
        # タイムアウトを短めに設定し、ネットワークの鈍化を検知
        response = requests.get(TARGET_URL, timeout=1.5)
        if response.status_code == 200:
            print(f"[{time.ctime()}] 正常: {response.elapsed.total_seconds()}秒")
        else:
            print(f"[{time.ctime()}] 異常: ステータスコード {response.status_code}")
    except requests.exceptions.Timeout:
        print(f"[{time.ctime()}] 警告: タイムアウト発生!帯域枯渇の疑い")

# 1秒おきに監視し、bmonのグラフと比較する
while True:
    check_network()
    time.sleep(1)

—

「グラフが跳ねた」その瞬間に考えるべきこと

bmon のグラフが急激にスパイクした時、ベテランエンジニアは以下のシーケンスを脳内で展開する。

1. 物理層の確認: bmon のエラーパケットカウンタは増えていないか?(ケーブル不良やSFPの劣化の可能性)
2. L2/L3の確認: netstat -s や ss -s で、TCP再送(Retransmission)が増加していないか?
3. トラフィックの正体: tcpdump を特定のインターフェースで走らせ、どのIP、どのポートが帯域を食い荒らしているか特定する。

# 帯域を消費している犯人を特定するスニペット
sudo tcpdump -i eth0 -n -c 1000 'tcp port 80'

—

最後に:ツールはあくまで補助輪

bmon は、あなたがネットワークの深淵を覗くための強力な補助輪だ。しかし、最も重要なのは「数値の裏にある通信フローを想像する力」である。

「なぜこの瞬間にパケットが集中したのか?」「このインターフェースの帯域上限はどこにあるのか?」――そうした問いを常に持ち続けること。教科書的な設定値を守るだけではなく、現場の泥臭いトラフィックの波と一体になることが、真のシニアエンジニアへの第一歩だ。

さあ、次の監視画面を開いてみよう。ネットワークの鼓動が、あなたに何かを語りかけているはずだ。

コメント

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