macOS 上の OpenClaw ゲートウェイは動いている間は目立ちません。LaunchAgent がポートに常駐プロセスを載せ、エージェントはループバックで呼び出し、ログは静かです。クラウド側の再起動、TLS ローテーション、CLI の中途半端な更新のあと、デーモンはしばしば無言で固まり、顧客トラフィックが止まるまで気づかれません。本稿はレンタルしたクラウド Mac mini向けに、ヘルス監視の組み方を整理します:合成プローブ、レイテンシ予算、openclaw doctor との整合、そして復旧 Runbook への導線です。まず OpenClaw doctor によるゲートウェイ診断を読み、人手トリアージと同じ不変条件をプローブに載せてください。併せて ゲートウェイ再起動と LaunchAgent リカバリを開いたままにし、アラートはそこで終わらせます。即席の shell 履歴ではなく。
故障の兆し
健全なゲートウェイは軽い HTTP/WebSocket ハンドシェイクに安定応答し、構造化ログにスパイクがなく、CPU もアイドルとバーストの間で予測可能です。不健全化では、完全停止の前に p95 レイテンシが上がり、証明書変更後に TLS エラーが連発したり、macOS がキャッシュしていた TCC を拒否してプロセスが落ちたりします。
openclaw doctor の出力を契約とみなしてください。doctor は緑だがプローブが赤なら、バイナリ外の経路やポートフォワードを疑います。プローブは緑だが doctor が版ズレを警告するなら、互換性崩壊が近いです。両方の信号を同じインシデントタイムラインに残します。
共有 mini を使う小規模チームのテレメトリでは、週次アラートのおよそ 5–8% がメンテ窓やスナップショット、プロバイダネットの揺らぎなど良性要因です。閾値はページ疲労と、数分以内の真の回帰検知のバランスで調整します。
ファイルディスクリプタとログローテーションにも注目してください。上限のないログは health エンドポイントと同じプロセスを圧迫します。マルチテナントではユーザー・ポート・ログディレクトリを分離し、隣人が FD を奪わないようにします。
doctor 出力は版管理しましょう。リリース間の diff に新しいチェックが載ることが多く、プローブも同じスプリントで追随させます。
合成プローブ設計
良いプローブは最小成功相互作用を模倣します。必要なら認可、ヘルスルートまたはソケット、バージョンヘッダ、タイムアウト時は非ゼロ終了。三つの視点:localhost(bind/デーモン)、バスチオンや VPN(経路)、意図的に公開しない限り外部は避けます。
launchd でスロットル付き実行し、固まったゲートウェイが何百もの curl を同時生成しないようにします。ジッターと指数バックオフで、障害中の自己 DOS を防ぎます。
セキュリティ:syslog に残るコマンドへ長寿命トークンを埋め込まない。短命資格情報、厳格な env ファイル、本番を映す専用プローブユーザでのキーチェーン参照が安全です。
ステージングでネガティブテスト(誤トークン)を足し、期待される 401/403 と予期せぬ 5xx を分離します。
サンプルスクリプト
例示的な shell です。ポートとヘッダを合わせてください。
#!/bin/bash
set -euo pipefail
URL="http://127.0.0.1:18789/health"
START=$(python3 - <<'PY'
import time; print(int(time.time()*1000))
PY
)
code=$(curl -sS -o /tmp/ocgw_probe.json -w "%{http_code}" "$URL" || true)
END=$(python3 - <<'PY'
import time; print(int(time.time()*1000))
PY
)
lat=$((END-START))
echo "openclaw_probe http=$code latency_ms=$lat"
[[ "$code" == "200" ]] || exit 1
構造化行をログシッパーやメトリクスエクスポータへ。成功時は 1 秒未満を目安に。
SLO 表
サービスレビューで使い、製品コミットに合わせて調整してください。
| 指標 | 目標 | メモ |
|---|---|---|
| 月間可用性 | 99.5%+ | 計画停止は別途告知。 |
| localhost p95 レイテンシ | < 300 ms | スパイクはソケット枯渇の前触れ。 |
| 失敗プローブ | < 5–8% / 週 | 単発ではなくパターンを見る。 |
| doctor ドリフト | 警告 0 | 版ズレは顧客より先にページ。 |
定量 SLO と定性チェックをセットに。スプリントごとに doctor を手動実行し、~/Library/Logs のタイムスタンプを確認します。
週次のクラウド Mac 運用
レンタル mini はマイグレーションやカーネルパッチで再起動します。再起動後は LaunchAgent の順序、シークレット可読性を確認し、doctor を再実行してから緑判定します。
週 30–45 分を予防保守に:ダッシュボード確認、短命クレデンシャルローテ、リスクの高い更新前スナップショット。予備機がなければ、繁忙週に SSH/VNC 付き Apple Silicon Mac mini を約 $16.9/日 で借りる選択もあり、緊急ノート配送より安く早いことが多いです。
アラート経路を文書化:Slack、PagerDuty、再プロビジョニングスクリプト。マルチテナントではテナントごとにプローブユーザを分離。
ループを閉じる:アラート → doctor → 制御された launchctl 再起動 → plist/パス/版ドリフトが証明されたときだけバイナリ再インストール。
相関は赤緑より重要:HTTP 200 のまま遅延が上がるならイベントループ停滞、巨大 JSON、同期ディスク I/O、新規ログへの AV スキャンを疑い、sample/spindump を添付します。複数ゲートウェイ同居ならユーザ・ポート・ログを分離。
監視コードをプロダクトコード同等に:レビュ、バージョン、インタプリタ固定、チェックサム監視。
経営向けタイル:可用率、中央値レイテンシ、未解決インシデント。三つ同時悪化はインフラ問題で、プロンプトではありません。
リンク先の二記事でオンコール訓練:doctor が証拠、再起動記事がレバー。
FAQ
ヘルスチェックは root とゲートウェイユーザのどちら?
LaunchAgent ユーザに合わせる。root は権限問題を隠し、誤った UID はキーチェーンやソケットを取りこぼします。
合成プローブの頻度は?
可用性なら最低でも 1 分に 1 回。より高頻度のカナリアはバックオフ必須。SLO エラーバジェットに合わせる。
固まったゲートウェイを最速で戻すには?
doctor → LaunchAgent 再起動 → ドリフトが証明されたら再インストール。順序を文書化。
Mac mini(Apple Silicon)は、持続的な権限と予測可能な launchd が欲しい OpenClaw ゲートウェイに実用的な土台です。MacHTML は SSH/VNC 付きのベアメタルクラウド mini を提供し、プローブ配線・障害リハーサル・環境解体を新規 CapEx なしで回せます。
クラウドMac miniでOpenClaw監視を運用
ゲートウェイプローブを載せ、doctor出力と合成メトリクスを突き合わせ、LaunchAgentリカバリをリハーサルするためにApple Silicon Mac mini時間を借りる。