Gadget 17:自動起動とヘルスチェック
再起動・落ちたときの自動復帰と疎通確認・ヘルスチェックの設計
自動起動とヘルスチェック
「止まったら自動で復帰させる」ための設計です。
目的
- NAS 再起動・プロセス死亡で自動復帰する
- 「生きているか」を定期的に確認し、異常を検知する
前提条件
- 永続化設計(16-storage-persistence)
- QNAP の Container Station、または macOS の launchd
手順
1. 自動起動を仕込む
QNAP の場合(推奨) - Container Station のコンテナ設定で「再起動時に自動開始」を ON - --restart unless-stopped 相当が QNAP GUI にもある
macOS の場合(launchd)
<!-- com.cfos.runlocal.plist を ~/Library/LaunchAgents/ に -->
<plist version="1.0">
<dict>
<key>Label</key><string>com.cfos.runlocal</string>
<key>ProgramArguments</key>
<array>
<string>/bin/zsh</string>
<string>-lc</string>
<string>cd /path/to/cloudflare-os && pnpm run-local >> /tmp/cfos.log 2>&1 &</string>
</array>
<key>RunAtLoad</key><true/>
<key>KeepAlive</key><true/>
</dict>
</plist>launchctl load ~/Library/LaunchAgents/com.cfos.runlocal.plist2. ヘルスチェックを作る
# 疎通確認
curl -sf http://localhost:8787 >/dev/null && echo OK || echo NGプロセス監視も合わせて:
pgrep -f "pnpm run-local" >/dev/null && echo "running" || echo "down"3. 定期実行+通知
cron または監視ツールで上記を定期実行し、NG なら通知 (18-monitoring-and-alerting)。
* * * * * /usr/local/bin/cfos-healthcheck.sh
よくある失敗
| 症状 | 原因 | 対処 |
|---|---|---|
| 再起動後にもう動いていない | 自動開始が OFF | ON に戻し、テスト再起動 |
KeepAlive で暴走(多重起動) |
既存プロセスとの競合 | 起動前に pgrep で二重起動防止 |
| ヘルスチェックが誤検知 | タイムアウト短すぎ | 起動猶予(初回ビルド)を考慮 |
| 通知が来ない | 監視スクリプト未作成 | 先に通知まで含めて実装 |
確認
次に読む
- 監視・アラート → 18-monitoring-and-alerting
- 障害対応 → 19-incident-playbook
- 長期運用 → 15-resource-sizing