2026 заблуждения: зелёный скрипт не равен доступности для пользователя
Мониторинг без оператора отвечает на повторяющиеся да-нет вопросы с фиксированным шагом: под наблюдением ли процесс Gateway, проходят ли пробы в SLA, изменились ли сигнатуры логов с последней зелёной выборки. Диагностическая лестница отвечает, почему сломалось, и допускает интуитивные прыжки между слоями. Смешение этих задач даёт либо хрупкую автоматизацию, либо шум порядка целой лестницы в syslog. В схеме remote Gateway — сам Gateway на выделенном железе, ноутбуки в gateway.mode remote — локальная проверка на сервере может оставаться зелёной, пока внешние WebSocket падают из-за дрейфа TLS-терминаторов, SSH-туннелей или путей Tailscale; скрипты должны явно кодировать перспективу и при необходимости паровать облегчённый клиентский job с тем же URL, которым инженеры пользуются днём.
Нижний список — ворота выпуска для любого нового health-скрипта в продакшене.
Подключать интерактивные dotfiles внутри cron: PATH меняется после апгрейдов, появляются случайные command-not-found.
Прокидывать всю лестницу без таймаута на шаг: сетевые разделы блокируют слоты launchd.
Жёстко убивать Gateway при первой ошибке: удорожает восстановление после split-brain.
Писать логи в синхронизируемые папки: конфликтует с рекомендованными несинхронизируемыми каталогами состояния.
Игнорировать симметрию remote: только серверные пробы не видят сбои с точки зрения клиента.
Планирование ёмкости для автоматизации должно учитывать IO и inode: подробные логи на загруженных хостах могут заполнить диск быстрее, чем заметят люди, потому что частота выборки, умноженная на объём stdout, растёт линейно с размером команды, даже если сессии Gateway не меняются.
Безопасность спросит, кто читает health-логи; ограничьте доступ сервисным аккаунтом в духе CI и ротируйте файлы с той же дисциплиной, что и приложенческие логи с метаданными каналов. Если в логах возможны персональные данные, зафиксируйте цели обработки и сроки хранения в соответствии с внутренней политикой и применимыми нормами.
Маршрутизация алертов требует явного владельца: какой команде подтверждать регрессии проб против эскалаций по лестнице; политика paging должна отправлять лёгкое дрожание в чат, а не в голос, пока подряд не превысил документированный порог дважды за час.
При нескольких средах — staging и production — не используйте одно имя лог-файла без префикса хоста; смешанные потоки расследований съедают часы.
Если установка не завершена, сначала закройте устранение ошибок установки, затем расширяйте покрытие cron.
В runbook нужен откат и для самой автоматизации: плохой деплой удвоил частоту проб или ввёл рекурсивные перезапуски — у дежурного должен быть один флаг или режим обслуживания, который останавливает скрипты, не трогая состояние Gateway.
Наконец, коррелируйте сбои проб с инцидентами апстрим-провайдеров LLM, если каналы проксируют модельный трафик — иначе инженеры копают бинарники Gateway во время чужого vendor outage.
Разделение ролей: лестница, пробы, синтетический мониторинг
Три слоя закрывают разные риски. Лестница ищет первопричину в инциденте. Пробы быстро ловят регрессию с минимумом контекста. Синтетика проверяет пользовательски наблюдаемые пути снаружи границы ВМ. Зафиксируйте, какой слой владеет каким маршрутом алерта, чтобы дежурные runbook оставались тонкими.
| Техника | Триггер | Главный вывод | Стоимость |
|---|---|---|---|
| Лестница | человек или эскалация | нарративная диагностика | время инженера |
| Скрипт без оператора | фиксированное расписание | коды выхода и усечённые логи | диск и доли CPU |
| Синтетика | внешний планировщик | сквозная задержка | счета вендоров |
| Сигнал | Сначала улучшить автоматизацию | Подключить людей к лестнице |
|---|---|---|
| три подряд exit 2 | ужать таймауты | если расходятся отметки версий |
| проба красная, doctor зелёный | проверить симметрию remote URL | глубокая трассировка каналов |
| сбои только на пиках | разнести окна cron | оценить запас M4 Pro |
Автоматизации нужен конечный автомат, а не README, удобный для cron.
Финансы иногда спрашивают, зачем синтетика, если есть скрипты; ответ — перспектива: внутренние пробы не видят ошибку TLS на краю, где телефон пользователя. Но внутренние пробы ловят проблемы на минуты раньше и дешевле — используйте оба осознанно.
Зрелость эксплуатации — помечать пробы снимками софтверного BOM: раз в неделю фиксируйте хеши openclaw --version, чтобы дрейф коррелировал с обновлениями пакетов, а не с загадочным красным вторником.
Дашбордам полезно сопоставлять задержку проб с CPU steal time или метриками гипервизора — даже на арендованном bare-metal редкие соседи возможны, а споры по биллингу без графиков неизбежны.
Обучите первую линию читать коды выхода: шпаргалка, связывающая подтипы кода 2 с вероятными входами в лестницу, снижает эскалации.
Минимальный каркас bash: пути, коды выхода, таймауты
Кладите скрипты в несинхронизируемые системные пути вроде /usr/local/libexec и запускайте через launchd с явными EnvironmentVariables. Пользователям cron нужно экспортировать PATH и OPENCLAW_STATE_DIR в теле задания — не полагаться на login shell. Соглашение по кодам: ноль здоров, единица авто-ремедиация, два — нужен человек. Каждый вызов CLI оборачивайте timeout и добавляйте stderr в ротируемые файлы.
#!/bin/bash set -euo pipefail LOG=/var/log/openclaw-health.log export PATH="/usr/local/bin:/opt/homebrew/bin:$PATH" timeout 60s openclaw gateway status >>"$LOG" 2>&1 || exit 2 timeout 60s openclaw channels status --probe >>"$LOG" 2>&1 || exit 2 exit 0
Замечание: подставьте поддерживаемые подкоманды под ваши каналы; суть — таймаут и явное окружение.
Remote-развёртываниям стоит добавить вторую plist на выделенном клиенте с симметричными проверками, чтобы дашборды отражали связность с точки зрения пользователя, как в статье про апгрейд туннеля.
Лёгкие JSON-резюме в конце цикла пробы облегчают правила SIEM без regexp по простыням текста.
На учениях намеренно ломайте пробы в staging, проверяя дедупликацию алертов и актуальность флагов CLI в документации.
Интегрируя секрет-хранилища, убедитесь, что короткоживущие токены обновляются без GUI; без оператора нельзя ждать клика «Разрешить».
Следите за inode параллельно свободному месту: логи пробы плюс архивы могут исчерпать метаданные раньше байтов.
Шесть шагов от разового cron к аудируемому ночному контракту
Закрепить абсолютные пути CLI и отметки версий в EnvironmentVariables plist.
Выбрать каталог логов и ротацию вне рабочих областей агента.
Ввести трёхсостоятельный автомат: здоров, авто-ремедиация, вызов человека.
Добавить счётчик подряд идущих ошибок до перезапуска supervised Gateway.
Сместить по времени клиентский remote-job относительно серверной пробы против thundering herd.
Сопоставить коды выхода полям тикета вместе с регионом и SKU из формы заказа.
Опорный шаг, пороги и запас M4 Pro
Интервал выборки: три–пять минут достаточно на стабильных арендованных хостах; более частые всплески только на время инцидента.
Порог эскалации: три подряд exit 2 часто предшествуют человеческому paging, поглощая DNS-глюки.
Уровень M4 Pro 64 ГБ: дополнительная unified memory снижает swap-ошибки проб, когда ночной cron совпадает с тяжёлыми сессиями.
Внимание: ноутбуки на домашнем широкополосном канале не гарантируют ночной зелёный статус; вложенная виртуализация искажает часы и IO.
Ручные лестницы не масштабируются на пятиминутную выборку; слепая автоматизация создаёт усталость от пейджера. Размещать Gateway на контрактном выделенном Apple Silicon с явными регионами, настраиваемыми уровнями unified memory и окнами аренды от дневного всплеска до стабильного пула превращает плоскость управления агентом в эксплуатируемую инфраструктуру. Команды в Сингапуре, Токио, Сеуле, Гонконге, восточном и западном побережье США, которым нужны устойчивые пробы и запас на апгрейды, обычно находят, что облачная аренда Mac mini у KVMNODE даёт более сильную операционную посадку: bare-metal Apple Silicon, прозрачная география и закупочные процессы, согласованные с контрактами автоматизации.
Ежеквартально вычищайте устаревшие пробы и согласуйте расписание с переходом на летнее время там, где сидят операторы, чтобы избежать двойного срабатывания.
Задокументируйте ожидаемый бюджет времени выполнения проб в закупочных пакетах, чтобы финансы понимали, зачем часть SKU несёт более высокий unified memory ради параллельности агента, а не только интерактивных GUI-тестов.
Напоминания в календаре на продление TLS для автоматизированных клиентов не дают пробам тихо пережить сертификат.
Архивируйте обезличенные выводы проб раз в квартал для аудиторов, требующих доказательства непрерывного контроля.
Управление изменениями для самих планировщиков часто слабое: если ops двигают тайминг plist без pull request, wiki расходится с реальностью. Держите расписания и коды выхода в том же репозитории, что и инфраструктура как код, с ревью и аннотированными diff.
Интеграция с тикетами улучшает отношение сигнал-шум: создавайте тикеты только после двух подряд exit 2 с приложенным фрагментом лога; одиночные сбои остаются в чате. Помечайте перспективу сервер против клиента, чтобы remote-прогоны не смешивались с проблемами bare-metal.