Gadget 17:自動起動とヘルスチェック

再起動・落ちたときの自動復帰と疎通確認・ヘルスチェックの設計

自動起動とヘルスチェック

「止まったら自動で復帰させる」ための設計です。

目的

  • NAS 再起動・プロセス死亡で自動復帰する
  • 「生きているか」を定期的に確認し、異常を検知する

前提条件

手順

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 &gt;&gt; /tmp/cfos.log 2&gt;&amp;1 &amp;</string>
  </array>
  <key>RunAtLoad</key><true/>
  <key>KeepAlive</key><true/>
</dict>
</plist>
launchctl load ~/Library/LaunchAgents/com.cfos.runlocal.plist

2. ヘルスチェックを作る

# 疎通確認
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 で二重起動防止
ヘルスチェックが誤検知 タイムアウト短すぎ 起動猶予(初回ビルド)を考慮
通知が来ない 監視スクリプト未作成 先に通知まで含めて実装

確認

次に読む