Когда OpenClaw разворачивают на нескольких выделенных Mac clustervps, недостаточно «смержить конфиг»: без общего runbook рвутся многопоточные срезы логов, квоты на диске и inode и широковещание digest по ошибкам Webhook. Ниже — минимально воспроизводимые шаги HowTo и чек-лист разбора с акцентом на ротацию файлов и inode. Границы merge и канарейки согласуйте с руководством по merge фрагментов и workflow; шлюз, подписи и таймауты — с multi-AZ шлюзом и webhook.

Три узких места

1) Все узлы пишут в один поток логов — раньше свободного места заканчиваются inode из-за мелких файлов и частой ротации. 2) Ошибки Webhook оседают локально на хостах, дежурный не видит корреляции. 3) Смена токенов или plist не совпадает по времени с границей среза — digest уходит дважды или теряется на границе окна.

Для разделения тенантов и составного doctor опирайтесь на статью про split тенантов, doctor и webhook; здесь фокус только на логах, квотах и сводке по Webhook.

Матрица: срезы логов и уведомления

Подход Плюс Квоты и риски
Локальный JSONL на узле + ежедневная ротация Меньше блокировок на общем томе Лимит поколений и суммарного размера — в пересчёте на весь кластер; inode контролировать по числу файлов.
Раздельные потоки stdout / audit Быстрее изоляция причин сбоя Разные периоды ротации по потокам; ограничить одновременные open и агрессию fsync.
Digest Webhook (окно 5 мин) Одна сводка в общий канал Фиксировать ключ идемпотентности и порядок удаления поколений; при 429 увеличить окно.

Цифры в runbook фиксируйте для staging и копируйте в прод только после сухого прогона: так вы не смешиваете «политику ретенции» с политикой балансировщика.

Минимальные шаги (HowTo)

  1. Соглашение по путям: состояние и логи под $HOSTNAME/$TENANT; сырой JSONL на общий NFS без схемы блокировок не писать.
  2. Merge: порядок слоёв шаблонов и lock-файл; долю канарейки откатывать теми же закладками, что в существующем runbook.
  3. Многопоточные логи: прикладной и аудит — в разные файлы; в runbook явно: «не более семи поколений» и верхняя граница суммарного размера на кластер.
  4. Digest: коды HTTP Webhook агрегировать в окне (например, 5 минут), слать в общий чат/тикет; один порог «красной» сводки на окружение.
  5. Составной readiness: на каждом узле /healthz и вывод doctor сводить в один сигнал; трафик на LB увеличивать ступенями.
  6. Откат: сначала доли LB, затем вернуть логи к однопоточному срезу, потом launchd/plist, в конце — поколение токенов подписи.

Чек-лист разбора: ротация, диск, inode

  • Ротация: digest дублируется — проверьте границу окна и порядок закрытия/удаления старых файлов: сначала завершите запись в старое поколение, затем откройте новое.
  • Диск: при зелёном df -h смотрите df -i, счётчики мелких файлов и частоту ротации; выше ~80% inode — сократить число срезов или вынести архив.
  • Webhook: всплеск 5xx — временно один поток логов webhook, сверка таймаутов шлюза и поколения ключа подписи; сравнить с таблицей лимитов upstream.
5 мин
типичное окно digest.
7
пример верхней границы поколений логов.
80%
жёлтая зона по использованию inode.
Отказ от гарантий. Имена флагов и значения по умолчанию в OpenClaw могут меняться между релизами. Цифры в статье — ориентиры для runbook, не SLA; сначала прогоните на staging.
Узлы кластера Mac

Одинаковые Mac mini M4 — запас под ротацию и inode

На публичной странице тарифов и цен оцените диск и полосу; на странице покупки добавьте узлы, чтобы заранее заложить место под поколения логов и рост числа файлов без «тихого» исчерпания inode.

Купить Mac mini M4 Сравнить тарифы