LinuxでのSmokePingインストール:不安定なネットワークと遅延を24時間365日監視・診断する方法

Network tutorial - IT technology blog
Network tutorial - IT technology blog

深夜2時の眠れない夜と、虚無な「ping」応答

サーバーの夜間保守で、顧客からの「ネットワークが遅い」という苦情に無力感を感じたことはありませんか?pingmtrを叩いてみても、結果は驚くほど正常。応答速度は10msや20msと安定しており、パケットロスも一切発生していない。そんな状況に直面したことがあるはずです。

問題は、これらのツールが「瞬間的な状態」しか示さないことです。15分前や2時間前にサーバーとISPの間で何が起きていたのか、過去の変動については何も教えてくれません。ネットワークは常に変動しています。現在のping値だけを見て判断するのは、窓の外を5秒間眺めただけで一日の天気を予測するようなものです。

PingとMTRだけでは不十分な理由

実際の運用現場では、数秒間だけパケットが失われてすぐに回復する「マイクロアウトテージ」によく遭遇します。また、ジッター(遅延のばらつき)が10msから200msへと激しく変動し、VoIPやデータベースのレプリケーションが頻繁にエラーを起こすこともあります。たとえ2〜3%のパケットロスでも、SSH接続では非常に不快な「キー入力の遅延」が発生し始めます。

こうした「目に見えない問題」を捉えるには、24時間365日稼働し、履歴データを保存できるツールが必要です。そして何より重要なのは、データをグラフとして可視化できることです。ここでSmokePingの出番です。

なぜSmokePingの「スモーク(煙)」グラフが重要なのか?

SmokePingは単に遅延を測定するだけではありません。一定周期ごとに複数(通常は20個)のパケットを送信し、応答の標準偏差を算出します。グラフには中央値を示す濃い線と、その周囲に「スモーク(煙)」と呼ばれる淡い色の領域が表示されます。

  • 煙が厚い:ジッターが高く、ネットワークが極めて不安定であることを意味します。
  • 煙が薄く鮮明:接続品質が非常に優れている証拠です。
  • 空白または赤い柱:パケットロス(パケットの紛失)が発生しています。

24時間のグラフを眺めれば、ピーク時にどのISPが帯域制限をかけているか、あるいはどのルーターが過負荷で遅延を引き起こしているかを一目で特定できます。

SmokePing의 導入:インストールから可視化まで

本ガイドでは、普及率の高いUbuntu/Debianを対象とします。CentOS/RHELの場合も手順はほぼ同じですが、コマンドをdnfに置き換えて実行してください。

ステップ1:SmokePingとWebサーバーのインストール

SmokePingはバックグラウンドスクリプトとして動作し、データをRRD(Round Robin Database)形式で出力します。サンプル設定ファイルが用意されているApacheをWebサーバーとして利用するのが最も手軽な方法です。

sudo apt update
sudo apt install smokeping apache2 libapache2-mod-fcgid -y

インストール完了後、Webインターフェースを表示するために必要なモジュールを有効化します:

sudo a2enmod cgi gci fcgid
sudo a2enconf smokeping
sudo systemctl restart apache2
sudo systemctl restart smokeping

これで http://your-server-ip/smokeping/smokeping.cgi にアクセスできるようになります。ただし、現時点では監視対象(ターゲット)が設定されていないため、データは表示されません。

ステップ2:Targets(ターゲット)の設定 — システムの核心部分

メインの設定ファイルは /etc/smokeping/config.d/Targets にあります。編集前に必ずバックアップを取っておきましょう。

sudo nano /etc/smokeping/config.d/Targets

以下は、パブリックDNSとISPのゲートウェイを監視するための設定例です:

*** Targets ***
probe = FPing
menu = Top
title = ItFromZero ネットワーク監視システム

+ PublicDNS
menu = パブリックDNS
title = パブリックDNS一覧

++ GoogleDNS
host = 8.8.8.8

++ CloudflareDNS
host = 1.1.1.1

+ LocalInfrastructure
menu = 社内インフラ
++ Gateway
host = 192.168.1.1

設定ファイル内でデバイスをグループ化するためにサブネット計算が必要な場合は、toolcraft.app/ja/tools/developer/ip-subnet-calculatorなどのツールが便利です。CIDRを入力するだけで、IP範囲やホスト数を即座に算出できます。拠点のIPアドレスを大量に管理する際に非常に役立ちます。

ステップ3:Probes(プローブ)の調整

デフォルトでは、SmokePingはFPingを使用し、300秒ごとに20個のパケットを送信します。より詳細なデータが必要な場合は、stepの値を60や120に下げることができます。ただし、基本的な用途であれば、CPU負荷を抑えられるデフォルト設定で十分です。

運用における実戦的な注意点

長年、大規模プロジェクトでSmokePingを運用してきた経験から、特に重要な3つのポイントを挙げます:

  1. 権限(Permissions): グラフが真っ白で何も表示されない場合、多くはデータディレクトリの権限不足が原因です。ユーザー smokeping/var/lib/smokeping への書き込み権限を持っていることを確認してください。
    sudo chown -R smokeping:www-data /var/lib/smokeping /var/cache/smokeping
  2. ファイアウォール(Firewall): ポート80/443を開放してください。また、サーバーが外向きのICMPパケットをブロックしていないことを確認してください。他社のサーバーを監視する場合は、IDS(侵入検知システム)による誤検知を防ぐため、自社IPをホワイトリストに登録してもらうよう依頼しましょう。
  3. セキュリティ: デフォルトの状態では認証機能がありません。ネットワーク構成をインターネットに晒さないよう注意してください。Apacheの.htpasswdを利用するのが、アクセス制限をかける最も簡単な方法です。
    sudo htpasswd -c /etc/apache2/.htpasswd admin

終わりに:深夜の電話に怯えないために

SmokePingは、回線の品質を「透視」するための最も直感的なツールです。推測に頼るのではなく、24時間365日の監視システムを構築することで、ISPとの交渉時にも確実な証拠を提示できます。

ネットワークがダウンしてから慌ててインストールするのではなく、今すぐ小さなVPSを立てて重要なノードの監視を始めましょう。そうすれば、夜も枕を高くして眠れるようになるはずです!

Share: