オープンソース通知・アラートプラットフォーム比較:ntfy vs Alertmanager vs Gotify でプッシュ通知をセルフホストする
オープンソースラボ編集部 ・ 2026年6月13日
オープンソース通知・アラートプラットフォーム比較:ntfy vs Alertmanager vs Gotify でプッシュ通知をセルフホストする
アプリやサーバーの重要なイベントをリアルタイムで受け取るプッシュ通知をSaaSに依存したくない場合、オープンソースのセルフホスト型通知プラットフォームが選択肢になります。ntfy・Alertmanager・Gotifyを比較し、サーバーアラート・アプリ通知・インシデント管理の実装方法を紹介します。
通知システムの設計パターン
- プッシュ通知: スマホアプリへのリアルタイム通知(ntfy・Gotify)
- アラートルーティング: Prometheusアラートの振り分け・エスカレーション(Alertmanager)
- メール通知: サーバーサイドメール送信(Postfix・Mattermost)
- ウェブフック: SlackやDiscordへのHTTPポスト
主要ツールの概要
ntfy
シンプルなHTTP経由のプッシュ通知サービスです。curlコマンド1行でスマホに通知を送れます。公式のntfy.shサービスか自前サーバーを使えます。
# ntfyサーバーをDockerで起動
docker run -p 80:80 -v /var/cache/ntfy:/var/cache/ntfy -v /etc/ntfy:/etc/ntfy binwiederhier/ntfy serve
# curlで通知を送信(自分のtopicに購読している全デバイスに届く)
curl -d "サーバーのディスクが90%になりました" ntfy.sh/my-server-alerts
# カスタムサーバーへ
curl -H "Title: 本番サーバー障害" -H "Priority: urgent" -H "Tags: warning,server" -d "DB接続エラーが発生しました" https://ntfy.example.com/prod-alerts
# Pythonからの送信
import requests
requests.post(
"https://ntfy.example.com/my-topic",
data="デプロイが完了しました".encode("utf-8"),
headers={
"Title": "デプロイ完了",
"Priority": "default",
"Tags": "white_check_mark",
}
)
# ntfy設定ファイル(/etc/ntfy/server.yml)
base-url: https://ntfy.example.com
listen-http: ":80"
cache-file: /var/cache/ntfy/cache.db
cache-duration: 12h
auth-file: /var/lib/ntfy/user.db
auth-default-access: "deny-all"
Alertmanager
PrometheusエコシステムのアラートルーティングツールNです。Prometheusが生成したアラートを受け取り、ルールに基づいてSlack・PagerDuty・メール・ウェブフックへルーティング・グルーピング・サイレンス・エスカレーションを行います。
# alertmanager.yml
global:
slack_api_url: "https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK"
smtp_smarthost: "smtp.gmail.com:587"
smtp_from: "alerts@example.com"
route:
receiver: "slack-notifications"
group_by: ["alertname", "cluster", "service"]
group_wait: 30s
group_interval: 5m
repeat_interval: 4h
routes:
- match:
severity: critical
receiver: "pagerduty"
continue: true
- match:
severity: warning
receiver: "slack-notifications"
receivers:
- name: "slack-notifications"
slack_configs:
- channel: "#alerts"
title: "{{ .GroupLabels.alertname }}"
text: '{{ range .Alerts }}{{ .Annotations.summary }}{{ end }}'
icon_emoji: ":bell:"
- name: "pagerduty"
pagerduty_configs:
- routing_key: "your-pagerduty-key"
inhibit_rules:
- source_match:
severity: "critical"
target_match:
severity: "warning"
equal: ["alertname", "cluster"]
# Prometheusのアラートルール
groups:
- name: server-alerts
rules:
- alert: HighCPUUsage
expr: 100 - (avg by(instance)(irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
for: 5m
labels:
severity: warning
annotations:
summary: "CPU使用率が高い: {{ $value | printf `%.0f` }}%"
- alert: DiskSpaceLow
expr: (node_filesystem_free_bytes / node_filesystem_size_bytes) * 100 < 15
for: 10m
labels:
severity: critical
annotations:
summary: "ディスク残量が15%を下回りました"
Gotify
Android・Web向けのセルフホストプッシュ通知サーバーです。REST APIとWebSocketでリアルタイム通知を配信します。
# Dockerで起動
docker run -p 8080:80 -v /var/gotify/data:/app/data gotify/server
# アプリトークンで通知を送信
curl -X POST "http://localhost:8080/message" -H "Content-Type: application/json" -d '{"message": "バックアップが完了しました", "title": "Backup", "priority": 5}' -H "X-Gotify-Key: YOUR_APP_TOKEN"
機能比較表
| 比較項目 | ntfy | Alertmanager | Gotify |
|---|---|---|---|
| プッシュ通知(モバイル) | ✅ iOS/Android | ❌ | ✅ Android |
| curlで即送信 | ✅ | ❌ | ✅ |
| Prometheus統合 | ❌ | ✅ ネイティブ | ❌ |
| アラートルーティング | ❌ | ✅ 高機能 | ❌ |
| グルーピング/サイレンス | ❌ | ✅ | ❌ |
| PagerDuty/Opsgenie | ❌ | ✅ | ❌ |
| メール送信 | ❌ | ✅ | ❌ |
| REST API | ✅ | ✅ | ✅ |
| 認証機能 | ✅ | ✅ | ✅ |
| iOS対応 | ✅ | ❌ | ❌ |
| セルフホスト容易さ | ★★★★★ | ★★★☆☆ | ★★★★☆ |
| ライセンス | Apache 2.0 | Apache 2.0 | MIT |
| GitHub Stars | 19k+ | 7k+ | 11k+ |
Grafana Alertingとの連携
# Grafana → Alertmanager連携設定
alerting:
alertmanagers:
- static_configs:
- targets:
- alertmanager:9093
# Grafanaアラートルール(UIで設定するか設定ファイル形式)
groups:
- name: grafana-managed-alerts
rules:
- uid: my-alert-uid
title: レイテンシ上昇
condition: C
data:
- refId: A
queryType: range
relativeTimeRange:
from: 600
to: 0
DevOps・監視ツールはDevOpsカテゴリ(/categories/devops)で一覧でき、セキュリティ関連のアラートツールはセキュリティカテゴリ(/categories/security)でも探せます。
FAQ
Q. ntfyとPushoverの違いは何ですか?
A. Pushoverはマネージドサービス(月額課金、自前サーバー不可)で、iOS・Androidに高品質なプッシュ通知を送れます。ntfyはオープンソースでセルフホスト可能で、iOSのAPNs通知も公式サポートするようになりました(iOS向けはntfy.shを経由するかセルフホストサーバーを使います)。データを自社インフラに保持したい・無制限の通知を無料で使いたい場合はntfyが優れています。
Q. AlertmanagerなしでPrometheusのアラートをSlackに送れますか?
A. Prometheusには--alertmanager.urlでAlertmanagerを指定する設計になっており、アラートのルーティングはAlertmanagerが担います。Alertmanagerなしで直接Slackに送る簡易的な方法としてはPrometheus Webhook Receiverや外部スクリプトを使えますが、グルーピング・サイレンス・エスカレーションが使えなくなります。本番環境ではAlertmanagerの使用を推奨します。
Q. ntfyで既読管理や通知履歴を確認できますか?
A. ntfyサーバーはキャッシュ期間内(デフォルト12時間)のメッセージを保持しており、WebUIとAPIで履歴を確認できます。ただしPushoverやFCMのような詳細な既読管理はありません。長期的な通知ログが必要な場合は通知をデータベースに保存する外部仕組みを用意するか、サーバーの cache-duration を延長します。
Q. オンコール(On-Call)管理もオープンソースでできますか?
A. はい。Grafana OnCall(旧Amixr)はオープンソースのオンコール管理プラットフォームで、アラートのエスカレーション・オンコールスケジュール・電話/SMS通知・PagerDuty代替として使えます。Alertmanagerと統合してPrometheusアラートをオンコールチームに自動エスカレーションする構成が人気です。
まとめ
| ユースケース | 推奨ツール |
|---|---|
| スマホへのプッシュ通知(セルフホスト) | ntfy |
| Prometheusアラートのルーティング | Alertmanager |
| AndroidへのシンプルなプッシュAPI | Gotify |
| オンコール管理・エスカレーション | Grafana OnCall |