もう10年ほど前から利用しているUptimeRobotで公開サーバーを死活監視しておりましたが、外部からの死活監視なので、ファイアウォール内の閉じられた社内などの機器は監視出来ません。
社内では、すでにZabbixやDatadog等で監視出来るのですが、今どきUptimeRobotライクなオンプレなサービスは存在するだろうと探したところ、まさに類似した機能を持った無料のOSS「Uptime-Kuma」が見つかったので、早速オンプレで構築しました。
Uptime-Kumaとは?
Uptime-Kumaは2021年頃にリリースされたモニタリングツールですが、その完成度は非常に高く、「とりあえずこれだけやっておきたい」という用途にちょうど良い機能を持っています。
特にWebサービスを軽く死活監視できれば良いという方におすすめのシンプルなサービスです。
ちなみに「Kuma」はその名の通り「熊」のことで、プロジェクトのマスコットにもなっています。🐻
Uptime-Kumaの特徴
従来のモニタリングツールと比較して、Uptime-Kumaの大きな特徴は以下の点です:
- シンプルで直感的なWeb UIを備えている
- 設定が非常に簡単(2〜3項目入力するだけで監視開始)
- HTTPSの疎通確認、証明書のチェック、レスポンスの判定など基本的な監視機能を網羅
- Slack、Discord、メール、LINE等、多様な通知先をサポート
- シンプルな構成でDockerインスタンス一つで稼働可能
- スタイリッシュなステータスページを提供
ただし、現時点ではユーザー管理機能がなく、ログインできるのは一人だけです。明示的なログアウト機能もありません。そのため、個人や小規模なチームでのサーバー監視用途に最も適しています。
Uptime-Kuma on Docker compose
サブパス(http://your.domain/uptime)方式で運用するための書式ですが、サブパスなしの標準ポートで実行するなら、labels下を削除します。
version: '3.8'
services:
uptime-kuma:
image: louislam/uptime-kuma:1
container_name: uptime-kuma
restart: unless-stopped
ports:
- "3001:3001"
volumes:
- ./data:/app/data
environment:
- UPTIME_KUMA_PORT=3001
- TZ=Asia/Tokyo
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik_network"
- "traefik.http.routers.uptime-kuma.rule=PathPrefix(`/uptime`) || Path(`/dashboard`) || PathPrefix(`/assets`) || Path(`/manifest.json`) || PathPrefix(`/api`) || PathPrefix(`/socket.io`)"
- "traefik.http.routers.uptime-kuma.entrypoints=web"
- "traefik.http.services.uptime-kuma.loadbalancer.server.port=3001"
- "traefik.http.middlewares.uptime-kuma-stripprefix.stripprefix.prefixes=/uptime"
- "traefik.http.middlewares.uptime-kuma-headers.headers.customrequestheaders.X-Forwarded-Prefix=/uptime"
- "traefik.http.routers.uptime-kuma.middlewares=uptime-kuma-stripprefix,uptime-kuma-headers"
networks:
- traefik_network
networks:
traefik_network:
external: true
これでdocker-compose up -d
で起動し、
http://your-domain/uptime(もしくはhttp://localhost:3001)で起動します
最初にユーザ登録すると、管理者として登録されます。
あとは、監視の追加で監視対象の機器とモニタータイプ・監視間隔を登録していくだけのシンプル構成です。
使用可能なモニタリングタイプ

Uptime-Kumaでは、以下のような多様な監視タイプが用意されています:
- HTTP(s): 指定したURLの疎通確認、証明書の有効期間、各メソッドのレスポンスを確認
- TCP Port: 特定のホスト名、ポートへのTCP pingを送信
- Ping: 特定のホスト名へのpingを送信
- HTTP(s) - キーワード: HTTP(s)の機能に加えて、レスポンスに指定したキーワードが含まれるかを確認
- DNS: 指定したDNSサーバーで各レコードの名前解決できるかを確認
- Push: 設定済みのURLに定期的にアクセスがあるかを確認
- Steam Game Server: Steam Game Serverのステータスを確認
通知設定
せっかく監視するので、Slackやメールで通知させたいですよね。
通知タイプでは、かなり沢山のサービスが対応していますので、私はDiscordとEmailを登録し通知設定しています。
ステータスページ機能
Uptime-Kumaでは、ダッシュボードとは別に「ステータスページ」を作成することができます。
これは監視対象のサービスが稼働しているかどうかを一覧で表示するシンプルなページで、ログインしなくても閲覧可能です。
カテゴリを作成し、そこに監視対象を追加していくことで、サービスの現在の状態を外部の人にも簡単に共有できます。
社内向けや顧客向けにサービスステータスを公開したい場合に便利です。
まとめ
Uptime-Kumaは、できることは限られているものの、死活監視に必要な基本機能は一通り揃っており、その設定の簡単さが最大の魅力です。
特に、自前の監視システムが欲しいけれど複雑な設定は避けたい方や、社内ネットワークなど限定環境での監視が必要な方におすすめのツールです。