インターネット性能監視の自動化:Speedtest Tracker 6ヶ月使用レビュー

HomeLab tutorial - IT technology blog
HomeLab tutorial - IT technology blog

「最大」速度の約束:日常的な不満

よくある話です。1Gbpsの光回線を契約しているのに、火曜日の夜8時になるとNetflixがバッファリングし始めます。ISPに問い合わせても、あちら側では問題ないと言われるだけ。客観的なデータがなければ、ただの不満を抱えた一顧客にすぎません。ブラウザベースの速度テストだけでは不十分です。なぜなら、それはあなたが思い出した時に実行した一瞬の記録でしかないからです。

回線の状態を真に把握するには、何もしなくても24時間365日メトリクスを記録し続ける必要があります。私は、ピアリングの問題がいつから始まったのかをISPに正確に示すための証拠を必要としていました。Speedtest Trackerがそれを解決してくれました。本番環境で6ヶ月以上運用した結果、私のHomeLabスタックにおいて不可欠なユーティリティとなりました。

ツール:Speedtest Tracker

Speedtest Tracker specializeed inセルフホスト型アプリケーションです。公式のOokla Speedtest CLIの強力なラッパーとして機能します。単発のテストを実行するだけでなく、すべての結果をデータベースに保存し、直感的なグラフを生成します。これにより、サービスプロバイダーと「真剣な話し合い」が必要な時に、いつでもCSV形式のログをエクスポートできます。

Dockerによる分離は最大の強みです。Ubuntu、Synology NAS、Raspberry Piなど、どのような環境でも一貫性が保たれます。このツールはcronによるスケジューリング、データベース(SQLiteまたはPostgreSQL)の管理、そして数ヶ月にわたるジッター、レイテンシ、スループットを追跡するためのクリーンなダッシュボードを提供します。

正確な監視ノードのためのアーキテクチャ

正確な測定には有線接続が不可欠です。Wi-Fi経由でテストを行うと、インターネットではなくローカルの干渉を測定することになってしまいます。私は、プライマリルーターにCat6イーサネットで直接接続された専用サーバーでインスタンスをホストしています。

このセットアップは非常に安定しています。私の経験では、コンテナは軽量で、アイドル時のRAM使用量は200MB未満です。CPU使用率はわずか30秒間のテスト実行時のみ上昇するため、低電力ハードウェアにも最適です。

実践:Docker Composeによるデプロイ

これを実行する最も信頼性の高い方法は、Docker Composeを使用することです。私はLinuxServer.ioのイメージを使用しています。頻繁に更新され、Speedtest CLI의 EULA(使用許諾契約)を自動的に処理してくれるからです。

1. ディレクトリの準備

mkdir -p ~/homelab/speedtest
cd ~/homelab/speedtest
touch docker-compose.yml

2. スタックの設定

この設定ではSQLiteを使用します。効率的で、速度を落とすことなく数年分の履歴データを処理するのに十分な能力を備えています。

services:
  speedtest-tracker:
    container_name: speedtest-tracker
    image: lscr.io/linuxserver/speedtest-tracker:latest
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Tokyo
      - SPEEDTEST_SCHEDULE=0 * * * * # 1時間ごとに実行
      - SPEEDTEST_SERVERS= # 自動選択の場合は空のまま
      - DISPLAY_TIMEZONE=Asia/Tokyo
    volumes:
      - ./config:/config
    ports:
      - 8080:80
    restart: unless-stopped

3. サービスの起動

以下のコマンドを実行して、イメージをプルし、コンテナを起動します:

docker compose up -d

http://your-server-ip:8080 でダッシュボードにアクセスします。[email protected]password を使用してログインし、すぐにこれらの認証情報を変更してください。

6ヶ月運用後の最適化ヒント

スピードテストはかなりの帯域幅を消費します。1Gbps回線であっても、5分ごとにテストを実行すると、他のユーザーに遅延を発生させたり、ISPから不審に思われたりする可能性があります。私は1時間間隔(0 * * * *)が、詳細なデータとネットワークパフォーマンスのバランスが最も良いと感じました。

Telegram通知

Telegram連携の設定は画期的でした。ダウンロード速度が400Mbpsを下回った場合や、テストが完全に失敗した場合にアラートを受け取るように設定しました。これにより、家族が速度低下に気づく前に、外出先からリモートでモデムを再起動することが可能になりました。

データの完全性

6ヶ月後、SQLiteデータベースは約45MB程度でした。軽量ですが、/config ボリュームを永続的なホストの場所にマッピングすることを強くお勧めします。HomeLabを新しいハードウェアに移行する場合でも、そのフォルダーを移動するだけで履歴全体を保持できます。

データが明らかにしたこと

傾向は目を見張るものでした。毎週金曜日の夜7時に、速度が15%低下し、Pingが12msから55msに跳ね上がるという再現性のある事象に気づきました。これにより、ルーターではなく地元の局舎での混雑問題であることが確認できました。最終的にプランをアップグレードした際、エクスポートした CSVログを使用して、ピーク時に回線パフォーマンスが低下していることを証明しました。このデータは、次の光回線プランでのより良い料金交渉に役立ちました。

コンテナの信頼性は素晴らしいです。Watchtowerによる自動更新を除けば、初日から一度も設定をいじっていません。支払っている料金に見合ったサービスを確実に受けるために必要な証拠を、黙々と収集し続けています。

結論

インターネットの監視を手動の作業にするべきではありません。Speedtest Trackerをデプロイすることで、「なんとなくネットが遅い」という感覚をプロフェッショナルなメトリクスダッシュボードに変えることができます。不安定なISPのトラブルシューティングをしている場合でも、単にネットワーク性能に興味がある場合でも、このツールはHomeLabに不可欠な追加要素です。心の平穏が得られるだけでなく、何かがうまくいかない時に自分の主張を裏付ける事実を提供してくれます。

Share: