2026 年 OpenClaw 障害通知:Slack Incoming Webhook、汎用 HTTPS エンドポイント、ProxyMac Mac mini(香港・日本・韓国・シンガポール・米国)での JSONL 相関
レンタルした Apple Silicon M4 Mac mini 上で OpenClaw ゲートウェイを動かす運用者は、香港・日本・韓国・シンガポール・米国のどのリージョンでも、やがて同じ穴に落ちます。モデルスタックはまだプロンプトに答えるのに、MCP ツールの失敗は静かに積み上がり、顧客が古い CI アーティファクトに気づくまで誰も気づかない、というギャップです。本稿で届けるものは実用的な通知層——人が見るページング向けの Slack Incoming Webhook、自動化ブリッジ向けの 汎用 HTTPS POST、そして推測ではなくJSONL ログと強く結びついた相関指紋付きアラートです。内容は (1) ページングに値する障害クラスとダッシュボード向けノイズの切り分け、(2) MCP 再試行の嵐向けに調整した4 行の重複排除表、(3) プロセスが非ゼロ終了したときだけ Webhook を撃つ macOS launchd の型、(4) ロールバックスイッチ付きの9 ステップ導入チェックリスト、および 構造化ログ、ゲートウェイ再起動の復旧、環境分離、外向き TLS が企業検査を通るときの HTTP CONNECT プロキシの心得への導線です。
- シグナル:ゲートウェイが120 秒以内にクラッシュループ——即時ページ。末尾 200 行の JSONL ハッシュを添付。
- ノイズ:上流 LLM のレート制限中の単発 MCP タイムアウト——10 分以内に同一ツール名で5 件以上重ならない限り抑制。
- コンプライアンス:Slack ワークスペースの法的所在地が mini と異なる場合がある——有効化前にデータフローを文書化する。
人が気づく前に OpenClaw が出す障害シグナル
明らかな stderr 以外にも、本番ゲートウェイはふつう構造化フックを持ちます。ツール遅延のヒストグラム、ハートビートのタイムスタンプ、リモート API への依存プローブなどです。3 段階の深刻度に分けてください:劣化(ベースラインの4 倍超の遅延だがリクエストは成功)、損傷(ツールの一部が失敗)、停止(MCP サーバを fork できない、TLS ハンドシェイクが根本から失敗)。段階ごとにチャンネルを分ける:#openclaw-warnings と #incidents とオンコール SMS ブリッジ——混ぜると確実にアラート疲れします。
HOST_REGION、plist のラベル、OpenClaw 設定バンドルのコミット SHA(切り詰め)を含め、ローリング配備がインフラ退行に見えないようにする。
Slack Incoming Webhook と汎用 HTTPS 受信側
Incoming Webhook は Slack の Block Kit 向け JSON を受け付けます。curl か小さな Node シムから最速で配線でき、セキュリティがワークスペースアプリを既に承認していれば OAuth の儀式は要りません。欠点は URL の秘密性自体が資格情報になること——チャンネルメンバーから誰かが抜けたらローテートしてください。汎用 HTTPS エンドポイント(PagerDuty、Opsgenie、社内インシデント API など)はしばしば署名を期待します——シークレットガイドに沿い Keychain に置いた鍵から HMAC ヘッダを計算するのが無難です。並列エージェントでトラフィックが跳ねたら、パケット落ちを Webhook のせいにする前に 同時実行の調整を見直してください。
うるさい MCP 再試行向けの重複排除とレート制限表
| 失敗パターン | 典型的な頻度 | ページング規則 | バックオフの目安 |
|---|---|---|---|
| 単一ツールの DNS 失敗 | 60 秒で3〜8件のバースト | ツール ID ごとに 1 件にまとめる | 重複排除 30 秒 |
| ゲートウェイの OOM 強制終了 | 1 回のあとクラッシュループ | 即時・高深刻度 | 指数バックオフ 2n 分(上限 15) |
| TLS MITM プロキシが証明書を差し替え | 安定して100% 失敗 | ネットセキュリティ向けチャンネルへ | 黙って再試行しない——ゲートウェイを一時停止 |
| モデルベンダからのレート制限 | 数分おきの波 | SLA 違反がなければダッシュボードのみ | ジッター付き再試行 5〜30 秒 |
launchd 監督、ラッパスクリプト、終了コード Webhook
OpenClaw のホットパスから Slack をポーリングする代わりに、ゲートウェイバイナリをシェルか Swift の薄いヘルパで包み、終了コードを捕まえます:$? が 0 でなければ、最小限の JSON を POST し syslog のマーカーを含めます。ラッパは80 行以内、サービスアカウントが所有し、ProgramArguments から参照して launchctl print の表示と食い違わないようにしてください。再起動の復旧の自動再起動ポリシーと Webhook 抑制タイマを組み合わせないと、監督されるたびにチャンネルが埋まります。
EnvironmentVariables で注入するか、ボールトから短命トークンを取る。
9 ステップの導入チェックリスト
- JSONL を確認:ローテーションとパーミッションを ログ記事どおりに。
- サンドボックスの Slack アプリと Webhook を作成——承認スクリーンショットを残す。
- curl で POST を試作——プレースホルダ文でチャンネル参加を確認。
- 重複排除ミドルウェアを追加(単一 mini なら Redis なしのファイルロックでも足りる)。
- 本番ゲートウェイの絶対パスに終了ラッパを配線。
- 機能フラグ:plist 環境変数
ALERTS_ENABLED=falseで即ミュート。 - ゲームデイ:ゲートウェイに
kill -9——ポリシーどおり 1 件のアラートと自動再起動を期待。 - シークレットレビュー:Webhook URL は四半期ローテ。ステージング分離と整合。
- 文書化:Webhook 設定チケットの横にランブックリンクを置く。
FAQ
香港と米国の mini で同じ Webhook を使い回せますか? 技術的には可能——JSON に region フィールドを足し、経路が一目で分かるようにしてください。
Microsoft Teams は? 同じ型です。受信コネクタ URL は Slack の Webhook に似ています。ペイロードサイズ上限(28 KB 級)に注意。
スタックトレースは載せるべき? 切り詰めたポインタとオブジェクト ID のみ——全文は暗号化ログアーカイブ側へ。
常時オンのアラート接着に ProxyMac Mac mini が合う理由
専用の Mac mini M4 はラッパの経路が安定し、launchd 監督が信頼でき、補助的な通知プロセスの電力負荷も Apple Silicon の効率でほとんど目立ちません。リージョンは 料金から選び、越境遅延のリハーサルは ヘルプセンター、Webhook の資格情報ローテ中に GUI プロンプトを見る必要があれば VNC を使ってください。