自前のモニタリング:Uptime Kuma
TelegramやDiscordへの通知を備えたウェブサイトやサービスの可用性チェックの設定方法、本当に必要な時だけ通知が届くようにする設定を説明します。
更新日 2026年8月23日
マシンのコントロールパネルには CPU、トラフィック、メモリのグラフが表示されますが、サイトが応答しているか、データベースが生きているかは分かりません。そのためには独自の監視ツールが必要です。Uptime Kuma は最もシンプルな選択肢です。コンテナ 1 つ、Web インターフェース、数十種類の通知方法を備えています。
インストール
services:
uptime-kuma:
image: louislam/uptime-kuma:1
container_name: uptime-kuma
restart: unless-stopped
volumes:
- ./data:/app/data
ports:
- "127.0.0.1:3001:3001"
docker compose up -d
ポートは意図的にローカルインターフェースにバインドされています。監視パネルを外部に公開すべきではないからです。証明書とパスワードを設定した Web サーバー経由か、SSH トンネル経由で開いてください。
ssh -L 3001:127.0.0.1:3001 root@<machine-address>
その後、ブラウザで http://localhost:3001 にアクセスします。最初のユーザーが管理者になります。
何を監視するか
まずは小さく始めてください。さもないとノイズに埋もれてしまいます。
- 各サイトのトップページの HTTP チェック — レスポンスコードと時間。
- レスポンス内のキーワードチェックを伴う、重要な API の HTTP チェック。ページは 200 を返してもエラーを表示していることがあります。
- データベースまたはゲームサーバーの TCP ポート。
- 証明書の有効期限 — Kuma は期限切れの N 日前に警告します。
- スケジュールタスク用の プッシュチェック。正常に実行されるとスクリプトが固有のアドレスにアクセスし、アクセスがなければアラートを受け取ります。スケジュールタスクと相性が良いです。
60 秒間隔でほぼ十分です。リトライは 2〜3 回にしてください。そうでなければ、1 つのネットワークパケットの損失で誤報が発生します。
サイトの監視を、そのサイトが稼働しているのと同じマシンに置かないでください。マシンがダウンすると監視ツールも一緒にダウンし、異常に気づけなくなります。外部サイト用には Kuma を別のマシンに置き、このマシンでは内部サービスのチェックのみを行ってください。
通知
Telegram ボットまたは Discord Webhook を設定し、通知セクションで追加してください。メールチャンネルは使用しないでください。マシンのポート 25、465、587 への外向き接続は、リクエストで開放するまで閉じられており、Kuma からのメールは単に送信されません — メールサーバーを参照してください。
役立つ習慣:
- 「ダウン」と「証明書の期限切れ」でチャンネルを分ける。前者は今すぐの対応が必要で、後者は 1 週間以内に対応すれば十分です。
- 復旧通知を有効にする。これがないと、障害が終わったかどうか分かりません。
- セットアップ時にテストメッセージを送信する。問題の半分は誤ったトークンで、実際の障害時に初めて気づきます。
リソースとメンテナンス
コンテナは 150〜250 MB のメモリに収まり、VDS-1 で快適に動作します。データベースはチェック履歴とともに成長します。設定で保持期間を 90〜180 日に設定してください。そうでなければ 1 年でファイルがギガバイトに膨れ上がります — ディスク容量を参照してください。
./data ディレクトリにはサービスの状態全体が保存されます。バックアップに含めてください。30 件以上のチェックを手作業で復元するのは楽しくありません。
よくある間違い
- ドメインではなく IP アドレスでチェックする。 証明書とバーチャルホストがチェックされず、DNS 障害が見逃されます。
- 敏感すぎるしきい値。 2 秒の超過ごとにアラートが出ると、人は通知を読まなくなります。
- パスワードなしでパネルを外部に公開する。 インフラ全体が見えてしまいます。アドレス、ポート、サービス名などです。