OpenClaw 2026 на практике: экспорт метрик шлюза и пороговые алерты на арендованном удалённом Mac (совместимо с Prometheus и OpenTelemetry, HowTo)

7 апреля 2026 · ~8 мин · Техническая команда MacCompute · Руководство

Когда OpenClaw Gateway крутится сутками на арендованном удалённом Mac, командам нужен предсказуемый ответ на вопрос «шлюз жив или деградирует». Этот HowTo даёт минимально воспроизводимую цепочку: зафиксировать HTTP-зонды /healthz и /readyz, настроить интервалы scrape в духе Prometheus (или мост через OpenTelemetry Collector), добавить пороговые алерты и связать срабатывания с полями структурированных логов. Базовую установку и сетевой контур сопоставьте с гайдом по Docker и прокси, экспозицию и ротацию секретов — с материалом про Tailscale, Funnel и токен, а политику исходящего трафика навыков — с песочницей и белым списком egress.

Модель: pull-метрики, OTLP и один инцидент

Prometheus по традиции опрашивает HTTP-цели с фиксированным шагом. OpenTelemetry чаще пушит в OTLP, но связка тривиальна: коллектор с приёмником prometheus или экспортёром может отдавать те же ряды внешнему бэкенду. На изолированном узле аренды разумно начать с трёх слоёв: синтетическая доступность шлюза, узловые метрики хоста и богатые логи для причинно-следственного анализа.

Почему «просто работало вчера» ломает продакшен

  1. Слепые зоны. Без зондов готовности вы узнаёте о сбое от пользователя, когда очередь навыков уже переполнена.
  2. Несогласованные часы и метки. Расхождение времени между Mac и Prometheus размывает корреляцию логов и графиков.
  3. Утечки и лишний 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 отработан.

Стабильный Mac под OpenClaw и зонды 24/7. Сравните конфигурации и регионы на публичных страницах MacCompute, затем перенесите scrape и алерты на выделенную ёмкость с предсказуемым каналом и диском.

Ещё: главная · блог · бюджеты API.

К заказу