2026年 OpenClaw Gateway Prometheus 指標と Grafana 看板:リモート物理 Mac 7×24 で /metrics 取得、アラート閾値と典型誤報の切り分け(コピペ scrape・パネル PromQL+FAQ)
プラットフォーム/SRE が リモート物理 Mac 上の OpenClaw Gateway を運用すると、SSH では健全に見えるのに Prometheus だけ up=0、あるいは Grafana で深夜の「毛並みチャート」がページを飛ばす、といった齟齬が起きがちです。本稿は スクレイプ位相とアラート寛容度の意思決定マトリクス、7 ステップの再現 Runbook、コピペ可能な scrape/PromQL/アラート断片、および FAQ をまとめます。
1. はじめに:メトリクス名のプレフィックス
本稿は、レンタル物理 Mac(例:ZoneMac ノード)で OpenClaw を動かすチーム向けです。HTTP レイテンシ、エラー率、プロセス健全性を、SSH 越しの curl だけでなく、クエリ可能で監査可能な時系列として残すことが目的です。
メトリクス名は OpenClaw のバージョンとランタイム(Node.js の prom-client、OpenTelemetry、ゲートウェイ内蔵統計など)で変わります。以下の PromQL は 典型的な HTTP サーバ指標(http_request_duration_seconds_*、http_requests_total など)を想定しています。実機で curl -s localhost:<port>/metrics | grep -E 'http_|process_' を実行し、クエリのラベル名を実測に合わせて置き換えてください。
インストールとプロセス基線の固定が先なら OpenClaw 全体インストールガイド:Mac/Windows/Linux(2026)、JSONL や定刻バックアップとセットで可観測性を敷くなら 2026年 OpenClaw Gateway の定時バックアップと可観測性:Cron、openclaw backup、JSONL ログをリモート物理 Mac 7×24 で再現する Runbook と併読すると、ログとメトリクスの相関が取りやすくなります。
2. つまずきポイント
- 制約:バインドアドレスと Prometheus の設置場所。 ゲートウェイが
127.0.0.1のみなのに Prometheus がコンテナや別ホストにあると取得失敗(up=0)になり、Mac 上のローカル curl だけは成功し続けます。 - 隠れコスト:高基数ラベルと短い scrape_interval。 生パスや API キー断片をラベルに入れると TSDB の基数が爆発します。1 秒スクレイプを Wi‑Fi やトンネル越しにすると、ジッターが Grafana の「毛」チャートになります。
- 安定性と誤報:macOS 省電力とデプロイ窓。 ディスクスリープ、ディスプレイオフ、ホットリロードで p95 が一瞬だけ膨らんでも、
for: 0sのアラートはオンデマンドを夜中に起こします。
3. スクレイプとアラートの意思決定マトリクス
本番投入前に、「どのネットワーク名前空間から誰がスクレイプするか」と「アラートが業務時間を尊重するか」を揃えてください。
| 観点 | ローカル Prometheus/vmagent | 集中型リモート Prometheus |
|---|---|---|
| ネットワーク経路 | ゲートウェイと同一マシンまたはブリッジなら 127.0.0.1 が使いやすい |
LAN で待ち受けるか、リバプロ/Tailscale で読み取り専用公開が必要 |
| 運用負荷 | ノードごとに設定。アップグレードでファイルが分散 | ルールとダッシュボードは一箇所。到達性の安定が前提 |
| 向き先 | 単一テナント、強い分離、最初の可観測性ループ | マルチリージョンプールと統一 SLO/アラートルーティング |
| アラートの型 | 向く場面 | 主なリスク |
|---|---|---|
| for: 2〜5m + rate 系 | HTTP 5xx、タイムアウト、エラー率上昇 | SLA が許すなら、検知が数分遅れる |
| for: 0 + up プローブ | プロセス消失、ポート非応答 | ローリング再起動中はノイズ(サイレンスまたは統合が必要) |
| 時間帯サイレンス | 既知のメンテ、バックアップ、GC スパイク | 置き忘れると本番障害が隠れる |
4. 7 ステップ Runbook(リモート物理 Mac)
- エンドポイントとバインドの確定。 ゲートウェイ設定でメトリクスを有効化し、
metrics_path(多くは/metrics)と待ち受け IP を確認。リモートから取るなら127.0.0.1専用は避け、スクレイパと名前空間を揃える。 - ローカルスモーク。
curl -sS http://127.0.0.1:<port>/metrics | head -n 40で HELP/TYPE と HTTP/process 系を確認。 - スクレイパの置き場所。 単一ノード PoC は同機 Prometheus。多数ノードは vmagent の remote-write か、ファイアウォール許可済みの集中 Prometheus。
- scrape 設定(下記)。
scrape_interval: 15s〜30s、妥当なscrape_timeout、安定したinstancerelabel。 - Grafana 接続。 データソース登録後、全体 RPS、p95、5xx 比率、
up、スクレイプ所要をパネル化。 - アラートとルーティング。 エラー率と raw
upでforを分ける。デプロイ中は Alertmanager サイレンスや CI フラグで抑制。 - macOS 7×24 設定の整合。 有線推奨、ディスクスリープ無効、NTP/タイムゾーン固定。スクレイプは成功しているのにアプリが 500 を返すときは、Prometheus ではなくアプリログを先に見る。
5. コピペ:scrape・PromQL・アラート
5.1 Prometheus scrape_configs 断片
targets とポートを環境に合わせ替えてください。リバプロ背後では /metrics をキャッシュさせず通過させます。
scrape_configs:
- job_name: openclaw-gateway
scrape_interval: 15s
scrape_timeout: 10s
metrics_path: /metrics
static_configs:
- targets:
- '127.0.0.1:18789'
labels:
env: prod
role: gateway
# relabel_configs:
# - source_labels: [__address__]
# target_label: instance
5.2 Grafana パネル用クエリ(実機のメトリクス名に合わせて置換)
- RPS:
sum(rate(http_requests_total{job="openclaw-gateway"}[5m])) - p95 レイテンシ(ヒストグラム):
histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket{job="openclaw-gateway"}[5m])) by (le)) - 5xx 比率(例):
sum(rate(http_requests_total{job="openclaw-gateway",status=~"5.."}[5m])) / sum(rate(http_requests_total{job="openclaw-gateway"}[5m])) - スクレイプ健全性:
up{job="openclaw-gateway"}とscrape_duration_seconds{job="openclaw-gateway"}
5.3 アラートルール(Prometheus rule_files)
groups:
- name: openclaw_gateway
rules:
- alert: GatewayScrapeDown
expr: up{job="openclaw-gateway"} == 0
for: 2m
labels:
severity: critical
annotations:
summary: "OpenClaw メトリクスエンドポイントに到達できない"
- alert: GatewayHigh5xxRatio
expr: sum(rate(http_requests_total{job="openclaw-gateway",status=~"5.."}[5m])) / sum(rate(http_requests_total{job="openclaw-gateway"}[5m])) > 0.05
for: 5m
labels:
severity: warning
annotations:
summary: "5xx 比率 > 5%(ラベルスキーマに合わせて調整)"
status の代わりに code や outcome を使うスキーマならセレクタを書き換え、Grafana Explore で空ベクトルにならないことを確認してからアラートに昇格させてください。
6. 典型誤報の切り分け
| 症状 | まず疑うもの | 緩和 |
|---|---|---|
断続的な up=0 |
トンネル再接続、Wi‑Fi 省電力、ループバック専用バインド | 有線化、バインド修正、トンネル依存ジョブは for を延長 |
| 夜間の p95 スパイク | ディスクスリープ、Time Machine、Spotlight | ディスクスリープ無効、バックアップ移動、アラート式を「連続 2 ウィンドウ」にする |
| デプロイ中の 5xx アラート | ローリング再起動、readiness 未達 | CI 連動サイレンス、readiness とメトリクス用ジョブの分離 |
| TSDB メモリ増大 | パスやユーザー ID をラベル化 | アプリ側で基数削減、metric_relabel_configs でドロップ |
7. 引用しやすい閾値
- scrape_interval: 本番は 15s を既定(ゲートウェイ尾部より短くしすぎない)。大陸間リンクは 30s から。
- scrape_timeout: scrape_interval の約 2/3 以下。トンネル経路は 10s から試す。
- アラート for: 可用性系は 2m、比率系は 5m を起点に、SLO バーンレートへ合わせて締める。
8. FAQ
Q: /metrics の前に Basic 認証を置くべきですか?
A: 信頼できない経路やマルチテナント網を跨ぐなら有効です。可能なら プライベート網+mTLS または SSH トンネル を優先し、エッジでの認証複雑化は最小限にしてください。
Q: macOS のタイムゾーンは PromQL に影響しますか?
A: Prometheus は UTC で保持します。表示は Grafana のタイムゾーン設定に従います。ローカル時刻のログと突き合わせるときは、どちらか一方に統一しないと「アラートがログより先」の錯覚が起きます。
Q: ホストメトリクス用に node_exporter を足してよいですか?
A: はい。job_name: node を別ジョブにし、ゲートウェイ 5xx とディスク逼迫・CPU 飽和を突き合わせられます。
9. まとめとノード選定
OpenClaw Gateway の HTTP/プロセス指標が Prometheus と Grafana に載ると、24/7 物理ノード上の障害は「SSH で当てずっぽう」から、up・エラー率・p95 が同時に動いたかの確認へ移れます。繰り返し出るのは バインドとスクレイパ経路の一致、アラートへの for、macOS 省電力とデプロイ窓を SLO ノイズから切り離すこと です。
ゲートウェイと可観測性スタックの組み合わせは macOS と相性がよく、launchd・ログ・Unix ツールが一つの枠組みに収まります。Apple Silicon はアイドル電力が非常に低く、常時オンのゲートウェイ向きです。同価格帯の小型 x86 箱と比べても 消費電力と安定性 で有利になりやすく、Gatekeeper・SIP・FileVault による資格情報とトンネル端の保護は、リモートゲートウェイ運用の関心事と一致します。
本稿の scrape 設定とダッシュボードを、静音で効率的な 24/7 向けハード 上ですぐ回したいなら、Mac mini M4 は 2026 年時点でもコストパフォーマンスの良い入口です。ZoneMac のリモート物理 Mac でノードを確保し、ゲートウェイ指標を本番ベースラインに一度で載せられます。今が手に取りやすいタイミングです。
OpenClaw と Prometheus を実機 Mac で端到端に載せる?
ZoneMac は 7×24 ゲートウェイと可観測性ロールアウト向けのマルチリージョン物理 Mac を提供しています。本稿と同じ受け入れ基準でオンデマンド容量を確保できます。