Когда OpenClaw Gateway крутится сутками на арендованном удалённом Mac, командам нужен предсказуемый ответ на вопрос «шлюз жив или деградирует». Этот HowTo даёт минимально воспроизводимую цепочку: зафиксировать HTTP-зонды /healthz и /readyz, настроить интервалы scrape в духе Prometheus (или мост через OpenTelemetry Collector), добавить пороговые алерты и связать срабатывания с полями структурированных логов. Базовую установку и сетевой контур сопоставьте с гайдом по Docker и прокси, экспозицию и ротацию секретов — с материалом про Tailscale, Funnel и токен, а политику исходящего трафика навыков — с песочницей и белым списком egress.
Модель: pull-метрики, OTLP и один инцидент
Prometheus по традиции опрашивает HTTP-цели с фиксированным шагом. OpenTelemetry чаще пушит в OTLP, но связка тривиальна: коллектор с приёмником prometheus или экспортёром может отдавать те же ряды внешнему бэкенду. На изолированном узле аренды разумно начать с трёх слоёв: синтетическая доступность шлюза, узловые метрики хоста и богатые логи для причинно-следственного анализа.
Почему «просто работало вчера» ломает продакшен
- Слепые зоны. Без зондов готовности вы узнаёте о сбое от пользователя, когда очередь навыков уже переполнена.
- Несогласованные часы и метки. Расхождение времени между Mac и Prometheus размывает корреляцию логов и графиков.
- Утечки и лишний egress. Токены в URL scrape и неучтённый OTLP-endpoint превращают наблюдаемость в дыру безопасности или ложный «падение шлюза», когда сработал фаервол.
Матрица: как собирать сигналы на арендованном Mac
Выберите траекторию по зрелости стека и ограничениям провайдера; строки ниже помогают согласовать ожидания с безопасностью.
| Подход | Когда уместен | Ограничения на аренде |
|---|---|---|
| Нативный /metrics | Нужны счётчики запросов и гистограммы задержек в одном формате. | Следите за кардинальностью меток на мультиарендных хостах; не раздувайте лейблы per-user. |
| blackbox_exporter к /healthz | Доступны только лёгкие HTTP-зонды без полного экспозера. | Требуется отдельный процесс; держите его на loopback рядом с Prometheus или за SSH-туннелем. |
| OTel Collector + Prometheus receiver | Единая труба в SaaS-наблюдаемость и удалённый remote_write. | Явно добавьте endpoint коллектора в белый список egress, иначе «пропали метрики» спутают с аварией шлюза. |
Шаг 1 — эндпоинты здоровья шлюза
Слушатель шлюза обычно на 127.0.0.1:18789. Сначала проверьте с самого арендованного хоста, чтобы исключить сеть:
curl -fsS http://127.0.0.1:18789/healthz
curl -fsS http://127.0.0.1:18789/readyz
С ноутбука повторите через ssh -L 18789:127.0.0.1:18789. Если healthz зелёный, а readyz нет, трактуйте как деградацию: диск, зависший subprocess или недоступный upstream — смотрите логи в том же окне времени.
Шаг 2 — интервал scrape и задание Prometheus
15 секунд — агрессивный режим для чувствительных сценариев; 30 секунд — типичный компромисс; 60 секунд — если Mac перегружен или путь идёт через высокозадержечный tailnet. Выровняйте evaluation_interval с шагом опроса или его кратным. Ниже — эскиз job с blackbox для тех же URL:
scrape_configs:
- job_name: openclaw_gateway_health
scrape_interval: 30s
metrics_path: /probe
params:
module: [http_2xx]
static_configs:
- targets:
- http://127.0.0.1:18789/healthz
- http://127.0.0.1:18789/readyz
labels:
service: openclaw-gateway
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- target_label: __address__
replacement: 127.0.0.1:9115
В Docker замените адрес на опубликованный порт compose-файла; цель — один однозначный ответ «достижим ли шлюз» до внедрения полноценных RED-метрик.
Шаг 3 — примеры правил алертов
Имена рядов ниже ориентированы на probe_success от blackbox; подставьте свои, если scrape идёт напрямую в exposition:
groups:
- name: openclaw_gateway
interval: 30s
rules:
- alert: OpenClawHealthzDown
expr: probe_success{job="openclaw_gateway_health"} == 0
for: 2m
labels:
severity: critical
annotations:
summary: "Нет ответа healthz у шлюза OpenClaw"
- alert: OpenClawProbeSlow
expr: probe_duration_seconds > 2
for: 5m
labels:
severity: warning
Расширяйте правилами по доле ошибок HTTP и перцентилям задержки, когда появятся гистограммы; держите низкую кардинальность лейблов на общих серверах аренды.
Шаг 4 — поля логов OpenClaw для связки с алертами
Метрики отвечают «когда», логи — «почему». Стандартизируйте поля, чтобы из уведомления перейти в Loki или Elastic одним фильтром:
- timestamp в RFC3339 и синхронизация через sntp на Mac.
- level — info, warn, error; error маршрутизируйте в эскалацию.
- request_id или trace_id для многошаговых вызовов инструментов.
- channel или сессия — источник запроса к шлюзу.
- tool / пакет навыков — какой кодовый путь упал.
- upstream — хост модели или локальный сервис.
- duration_ms — пара к всплескам probe_duration_seconds.
- error_class — timeout, 429, auth, sandbox deny для готовых плейбуков.
Сохранённый запрос вида service="openclaw-gateway" AND level="error" должен использовать те же лейблы окружения, что и Prometheus.
Продакшен: токен шлюза и исходящие ограничения
OPENCLAW_GATEWAY_TOKEN храните в launchd EnvironmentFiles, Docker secrets или vault; ротируйте по тому же регламенту, что и ключи tailnet. Не встраивайте секреты в query string scrape — конфиги экспортёров попадают в бэкапы и логи. Для аутентификации зондов предпочтительны loopback, mTLS или sidecar с заголовком Authorization из секрет-хранилища.
Egress. Если навыки ходят только на белый список доменов, добавьте туда OTLP, Grafana Cloud и remote_write явно; иначе политика корректно оборвёт поток метрик. Частые scrape плюс debug-логи конкурируют с агентами за CPU — держите info по умолчанию и семплируйте трассировки.
FAQ
Где выполнять алерт-менеджер? Предпочтительно вне арендованного Mac, чтобы мёртвый хост всё равно мог отправить страницу.
Нет ли ещё /metrics? Начните с зондов и логов; позже добавьте exposition или sidecar reverse proxy с RED-метриками.
Итог
Операционно шлюз на арендованном Mac становится управляемым, когда /healthz и /readyz входят в единый scrape-путь, интервалы отражают ваш аппетит к SLO, правила кодируют живучесть и деградацию, а структурированные логи закрывают цикл расследования. Токены и egress оформляйте так же строго, как доступ к API моделей.
Публичные страницы без обязательного входа: тарифы, оформление заказа и справочный центр MacCompute — закрепите узел под шлюз и наблюдаемость, когда runbook отработан.