2026年 OpenClaw 可観測性と常駐故障:LaunchAgent ログ分流、gateway 健全性プローブ失敗とディスク/権限の遠隔 Mac SSH 再現チェックリスト+FAQ
専有リモート Macでは、「昨日まで動いていた」多くは可観測性が足りなかったことの裏返しです。ログが 1 ファイルに混ざりノイズだらけ、健全性チェックがバインドアドレスと食い違う、SSH のシェルと launchd ではディスク空きや POSIX 権限の見え方がズレる——といったパターンです。本稿では LaunchAgent の標準出力/標準エラー分離、gateway 健全性プローブ、SSH で再現できる空き容量・所有権・TCC 系の確認を揃え、常駐障害をランダムに感じさせないためのチェックリストと FAQ をまとめます。バックグラウンド実行と SSH の落とし穴は 2026年 OpenClaw + SSH:リモート Mac での無人自動実行を実現する方法、遠隔開発ノードとしての MCP 前提の整理は 2026年最高の遠隔開発:Mac miniでMCP環境を構築しAI Agentと協調する方法 と併読しやすいです。ゲートウェイ飽和や OOM に近い健全性のフラップは、第 3 節の表(ゲートウェイ・クォータ切り分け)を参照してください。
1. TL;DR — grep の前に揃える 3 信号
ログの分離: 標準出力と標準エラーは、ローテしやすい別パスへ。混在するとクラッシュダンプが健全性ログを埋め尽くします。
プローブの真実: 監視が叩く健全性 URL は、バインドアドレス(127.0.0.1 と ::)、ポート、手前のリバースプロキシや SSH トンネルと一致している必要があります。
ディスクと権限: launchd ジョブは特定ユーザーで動きます。ログディレクトリ・Unix ソケット・モデルキャッシュが別 UID の領域にあると、再起動しても同じ失敗が残ります。
2. LaunchAgent のログ分流(1 ファイルが嘘をつく理由)
StandardOutPath だけに標準エラーも流す——あるいはラッパーが子プロセスをインタリーブする——と、構造化された gateway ログと libc のパニックや 依存ライブラリのノイズを切り分けられません。分離は見栄ではなく、トリアージ速度です。
- plist の項目:
StandardOutPathとStandardErrorPathを別ファイルにし、ジョブユーザーが書き込めるディレクトリ(例:~/Library/Logs/OpenClaw/)に置く。 - ローテーション: macOS が自動では回しません。
newsyslog、logrotate風のラッパー、定期 truncate のいずれかを——デバッグビルドの JSON を何週間も pretty 印刷してディスクを埋めないでください。 - Unified Logging:
os_logも併用するならサブシステムと PID で相関を取る。SSH ではファイルログが最もレイテンシが低い証跡になります。
3. gateway 健全性プローブ:典型的な偽陰性
プローブと実ワークロードがどこで待ち受けているかで食い違うと、健全性は「きれいに」失敗します。遠隔 Mac でよくあるパターンは次のとおりです。
| 症状 | 有力な原因 | SSH 側の手当て |
|---|---|---|
監視から connection refused、ローカル UI は動く |
gateway が 127.0.0.1 のみ、外部プローブは LAN IP を叩いている |
バインドをセキュリティ方針に揃えるか、運用者と同じトンネル経路でプローブする |
| 断続的な 503/not ready | コールドなモデル読み込み、ディスク I/O、上流 API のクォータ | ウォームアップ猶予を伸ばす、df -h と負荷を見る、ゲートウェイ・クォータ切り分け と突き合わせる |
| 健全性 URL で TLS エラー | プローブは https://、ループバック手前は素の HTTP |
スキームを一致させ、TLS を終端する場所をドキュメントどおりに |
| 健全性で 401 | トークンやヘッダ必須だが監視は未設定 | 認証なしの /healthz を用意するか、プローブ設定にベアラを載せる |
インシデントメモにはプローブ元 IP と gateway のバインドを必ず同じ行に書く。SSH セッションを跨いで幽霊を追わないためです。
4. 常駐障害:ディスク、スナップショット、権限
「常駐」とは、再起動や plist の再読込をしても、根本のリソース条件が変わらないために失敗が残る状態です。
- ディスク圧迫:
df -hとdiskutil apfs listSnapshots /(該当時)。CI キャッシュ、Hugging Face のディレクトリ、Docker イメージが共有ホストを静かに圧迫します。 - inode/ファイル数: 微小ログが大量にあると、容量より先に名前空間が枯れることがあります——混雑したエージェントでは
df -iも見てください。 - 所有権: LaunchAgent がユーザ A で動きつつユーザ B の
~/Library配下に書こうとすると、sudoシェルでは出ずlaunchdだけEACCESになります。 - フルディスクアクセス/TCC: 画面収録やアクセシビリティ周辺は GUI の同意が一度必要なことがあります。ヘッドレス Mac は MDM か一度のコンソール承認を文書化し、SSH が同じ権限を持つと仮定しないでください。
5. SSH で再現するチェックリスト(順番どおり)
手順はこの順で。失敗したら次に進まず直してください。
- 身元:
whoami、id、plist のUserName(あれば)とログイン中のコンソールユーザを突き合わせる。 - プロセス:
pgrep -lf openclaw(またはラッパー名)と、launchctl listの起動時刻を一致させる。 - 待受:
lsof -nP -iTCP -sTCP:LISTENから gateway ポートを抜き出し、バインドアドレスを確認する。 - ログ: 分離した標準出力/標準エラーを、プローブ失敗と同じ分で
tailする。 - ディスク:
df -h、df -i、ジョブの作業ツリー直下の肥大ディレクトリ。 - 権限: ログディレクトリとソケットパスに
ls -le。chown/ACL を意図して当てる——chmod 777は最後の手段にしない。 - プローブの同値性: 同一ホストから監視が使う健全性 URL を
curl -v。SSH トンネル経由が正式なら、ノート PC 側からも繰り返す。
6. FAQ
| 質問 | 短答 |
|---|---|
| 標準エラーは syslog のみでよい? | Unified Log へミラーするのは可ですが、SSH ファーストの切り分けにはファイルを残す。Console.app なしで tail -f したい運用者がいます。 |
| SSH からは健全だが Kubernetes/外部監視から失敗 | ネットワークパスかバインドの不一致。パケットキャプチャか、監視と同じネットワーク名前空間から同一コマンドを叩いて証明してください。 |
launchctl kickstart のあとだけ直り、そのうち劣化 |
リソースリーク、ディスク増加、上流レート制限を疑い、再起動間隔とログ時刻、vm_stat を相関させる。 |
| ログローテで Permission denied | ローテスクリプトの実行ユーザが違う。cron/launchd ユーザを揃えるか、グループ書き込み+スティッキーで設計する。 |
可観測性の負荷が重い gateway に Mac mini が向く理由
良い可観測性の多くは、安定した I/O、予測できるスケジューリング、そしてノイズを増やさないハードに依存します。Apple Silicon の Mac mini は、ログ書き込みやバックグラウンドの健全性チェックを長時間かけても静かに回しやすく、macOS のバックグラウンドクラッシュ率の低さはタイムラインを壊す「幽霊再起動」を減らします。
ネイティブ Unix ツールチェーン、実用レベルの SSH、launchd とユーザ空間エージェントの一体化により、Windows サービスを寄せ集めた環境より遠隔トリアージが素直です。Gatekeeper と SIP も、長寿命 gateway のバイナリがすり替わるクラスの事故を抑えます。
ログを分離し、プローブを信頼し、ヘッドレスで長時間動かす前提なら、消費電力が小さく NVMe も積みやすい Mac mini M4 は現実的な土台です——CI と推論を同時に載せる余裕も取りやすい構成です。
SSHMac のトップページから、ゲートウェイ同時接続・ログ保持・ストレージに合うプランを選べます。