現場の視界をクリアにせよ: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 は、あなたがネットワークの深淵を覗くための強力な補助輪だ。しかし、最も重要なのは「数値の裏にある通信フローを想像する力」である。
「なぜこの瞬間にパケットが集中したのか?」「このインターフェースの帯域上限はどこにあるのか?」――そうした問いを常に持ち続けること。教科書的な設定値を守るだけではなく、現場の泥臭いトラフィックの波と一体になることが、真のシニアエンジニアへの第一歩だ。
さあ、次の監視画面を開いてみよう。ネットワークの鼓動が、あなたに何かを語りかけているはずだ。
コメント