はじめに
家のインターネット接続が不安定で、YouTubeライブが途中で切れてしまったりWebサイトが一瞬見れなくなったりすることが多々発生していました。これらの原因切り分けのために、家から外部インターネットへの接続状況を常時監視したいと思い、ネットワーク監視ツールを色々探していました。
探した中でUptime Kumaというツールが一番簡単に使えそうだったので、今回はこれの紹介をします。
Uptime Kuma
Uptime Kumaはセルフホスト型のシンプルなネットワーク監視ツールです。Webベースのダッシュボードで各種サービスのステータスを視覚的に分かりやすいグラフとしていい感じに表示してくれます。とりあえず何かしらのサービスが動いているかどうかを監視したい場合に向いていると思います。
主な監視対象
- HTTP(s): Webサイトの可用性やレスポンス時間の監視
- TCP: 任意のネットワークサービスの監視
- Ping: ルーターやスイッチなどのネットワーク機器の死活監視・疎通チェック
- DNS Record: DNSサーバーの応答確認
機能
- 多様な通知対象(メール, Slack, Discord, LINE など)
- 日本語を含む多言語対応
- SSL/TLS証明書の有効期限監視(Let's Encryptを使っている場合など)
- 2要素認証対応のWeb UIへのログイン認証機能

構築環境
- デプロイ先:Windows 11 + WSL2 (Ubuntu 20.04) + microk8s
- Uptime Kuma バージョン: 1.23.13
- Helmチャート(uptime-kuma)バージョン: 2.21.2
インストール
Uptime KumaにはDockerイメージが用意されているので、簡易的な利用であればDockerコマンド1行ですぐ使えます。
docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:1
しかし、敢えて今回は汎用性を考えてKubernetesを使った構築方法を説明したいと思います。説明をローカル環境で完結させたいのでmicrok8s環境で説明しますが、microk8s以外のKubernetesにデプロイしたい場合はコマンドの頭についているsudo microk8s
を抜いて実行してください。
KubernetesへのデプロイにはHelmを利用し、チャートとして dirsigler/uptime-kuma-helm (Uptime Kumaとは別の作者による非公式チャート)を使います。
- (必要に応じて)microk8s環境のセットアップ
sudo snap install microk8s --classic sudo microk8s status --wait-ready # アドオンの追加(永続ストレージが必要なため) sudo microk8s enable hostpath-storage
- Helmレポジトリーの追加
sudo microk8s helm repo add uptime-kuma https://helm.irsigler.cloud
- uptime-kumaチャートのインストール
sudo microk8s helm install my-uptime-kuma uptime-kuma/uptime-kuma --namespace monitoring --create-namespace
Uptime Kumaへのアクセス
- Uptime Kumaのポッドに対するポートフォワードを実行
export POD_NAME=$(sudo microk8s kubectl get pods --namespace monitoring -l "app.kubernetes.io/name=uptime-kuma,app.kubernetes.io/instance=my-uptime-kuma" -o jsonpath="{.items[0].metadata.name}") export CONTAINER_PORT=$(sudo microk8s kubectl get pod --namespace monitoring $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") sudo microk8s kubectl --namespace monitoring port-forward $POD_NAME 3001:$CONTAINER_PORT
http://127.0.0.1:3001
にアクセス- 初回のみ管理者ユーザーの作成画面が出るのでAdminアカウントを作成Uptime Kuma初期画面 日本語にも対応しています
- ダッシュボード画面が表示されます。
監視対象の追加
左上の監視の追加から監視サービスを追加できます。監視間隔は最短 20 秒までが設定可能です。

実際の監視設定例
参考までに実際に稼働させたUptime Kumaのダッシュボードをお見せします。
追加している監視対象は次の4つです。
- External Connectivity (GCP)
- 目的: 家から外部へのインターネット接続状況や安定性の確認
- 方式: GCPに構築したサーバーへの疎通チェックや応答時間の監視 (Ping)
(適当に8.8.8.8に向けてもいいが、テスト以外でPingを継続的に送りまくるのは行儀が良くない気がするので自分で建てたサーバーに向け設定)
- IX router
- 目的: ルーターの稼働状況確認
- 方式: 家に設置しているルーター(IX2215)への疎通チェック (Ping)
- rpine lab site, rpine lab Tech Blog
- 目的: 自Webサイトの可用性確認
- 方式: HTTPS監視

通知設定
通知設定ボタンから設定できます。通知先としてはSlackやDiscordの他LINEにも対応しています。(各種サービスのAPIキーの発行や開発アカウントなどが必要)

Slackの通知はこんな感じです。

まとめ
Uptime Kumaを使ったネットワーク監視システムの構築方法について解説しました。シンプルながら必要十分な機能を持っており、簡単な設定で本格的なサービス監視ダッシュボードが作成できます。本記事で紹介した設定例を参考に、ご自身の環境でのネットワーク監視を始めてみてはいかがでしょうか。