Gateway
معیارهای Prometheus
OpenClaw میتواند معیارهای عیبیابی را از طریق Plugin رسمی
diagnostics-prometheus ارائه کند. این Plugin به دادههای عیبیابی مورداعتماد و نیز
رویدادهای عیبیابی برچسبگذاریشده داخلی که تحت مالکیت توزیعکننده هستند (سیگنالهای صف، حافظه و
بازیابی نشست) گوش میدهد و یک نقطه پایانی متنی Prometheus را در نشانی زیر ارائه میکند:
GET /api/diagnostics/prometheusنوع محتوا text/plain; version=0.0.4; charset=utf-8 است که قالب استاندارد
ارائه دادههای Prometheus محسوب میشود.
برای ردگیریها، گزارشها، ارسال OTLP و ویژگیهای معنایی OpenTelemetry GenAI، به خروجی OpenTelemetry مراجعه کنید.
شروع سریع
نصب Plugin
openclaw plugins install clawhub:@openclaw/diagnostics-prometheusفعالسازی Plugin
پیکربندی
{ plugins: { allow: ["diagnostics-prometheus"], entries: { "diagnostics-prometheus": { enabled: true }, }, }, diagnostics: { enabled: true, },}CLI
openclaw plugins enable diagnostics-prometheusراهاندازی مجدد Gateway
مسیر HTTP هنگام راهاندازی Plugin ثبت میشود؛ بنابراین پس از فعالسازی، آن را مجدداً بارگذاری کنید.
جمعآوری داده از مسیر محافظتشده
همان اطلاعات احراز هویت Gateway را ارسال کنید که کلاینتهای اپراتور شما استفاده میکنند:
curl -H "Authorization: Bearer $OPENCLAW_GATEWAY_TOKEN" \ http://127.0.0.1:18789/api/diagnostics/prometheusاتصال Prometheus
# prometheus.ymlscrape_configs: - job_name: openclaw scrape_interval: 30s metrics_path: /api/diagnostics/prometheus authorization: credentials_file: /etc/prometheus/openclaw-gateway-token static_configs: - targets: ["openclaw-gateway:18789"]معیارهای صادرشده
| معیار | نوع | برچسبها |
|---|---|---|
openclaw_run_completed_total |
شمارنده | channel, model, outcome, provider, trigger |
openclaw_run_duration_seconds |
هیستوگرام | channel, model, outcome, provider, trigger |
openclaw_model_call_total |
شمارنده | api, error_category, model, outcome, provider, transport |
openclaw_model_call_duration_seconds |
هیستوگرام | api, error_category, model, outcome, provider, transport |
openclaw_model_failover_total |
شمارنده | from_model, from_provider, lane, reason, suspended, to_model, to_provider |
openclaw_model_tokens_total |
شمارنده | agent, channel, model, provider, token_type |
openclaw_gen_ai_client_token_usage |
هیستوگرام | model, provider, token_type |
openclaw_model_cost_usd_total |
شمارنده | agent, channel, model, provider |
openclaw_model_usage_duration_seconds |
هیستوگرام | agent, channel, model, provider |
openclaw_skill_used_total |
شمارنده | activation, agent, skill, source |
openclaw_tool_execution_total |
شمارنده | error_category, outcome, params_kind, tool, tool_owner, tool_source |
openclaw_tool_execution_duration_seconds |
هیستوگرام | error_category, outcome, params_kind, tool, tool_owner, tool_source |
openclaw_tool_execution_blocked_total |
شمارنده | denied_reason, params_kind, tool, tool_owner, tool_source |
openclaw_harness_run_total |
شمارنده | channel, error_category, harness, model, outcome, phase, plugin, provider |
openclaw_harness_run_duration_seconds |
هیستوگرام | channel, error_category, harness, model, outcome, phase, plugin, provider |
openclaw_webhook_received_total |
شمارنده | channel, webhook |
openclaw_webhook_error_total |
شمارنده | channel, webhook |
openclaw_webhook_duration_seconds |
هیستوگرام | channel, webhook |
openclaw_message_received_total |
شمارنده | channel, source |
openclaw_message_dispatch_started_total |
شمارنده | channel, source |
openclaw_message_dispatch_completed_total |
شمارنده | channel, outcome, reason, source |
openclaw_message_dispatch_duration_seconds |
هیستوگرام | channel, outcome, reason, source |
openclaw_message_processed_total |
شمارنده | channel, outcome, reason |
openclaw_message_processed_duration_seconds |
هیستوگرام | channel, outcome, reason |
openclaw_message_delivery_started_total |
شمارنده | channel, delivery_kind |
openclaw_message_delivery_total |
شمارنده | channel, delivery_kind, error_category, outcome |
openclaw_message_delivery_duration_seconds |
هیستوگرام | channel, delivery_kind, error_category, outcome |
openclaw_talk_event_total |
شمارنده | brain, event_type, mode, provider, transport |
openclaw_talk_event_duration_seconds |
هیستوگرام | brain, event_type, mode, provider, transport |
openclaw_talk_audio_bytes |
هیستوگرام | brain, event_type, mode, provider, transport |
openclaw_queue_lane_size |
سنجه | lane |
openclaw_queue_lane_wait_seconds |
هیستوگرام | lane |
openclaw_session_state_total |
شمارنده | reason, state |
openclaw_session_queue_depth |
سنجه | state |
openclaw_session_turn_created_total |
شمارنده | agent, channel, trigger |
openclaw_session_stuck_total |
شمارنده | reason, state |
openclaw_session_stuck_age_seconds |
هیستوگرام | reason, state |
openclaw_session_recovery_total |
شمارنده | action, active_work_kind, state, status |
openclaw_session_recovery_age_seconds |
هیستوگرام | action, active_work_kind, state, status |
openclaw_liveness_warning_total |
شمارنده | reason |
openclaw_liveness_sessions |
سنجه | state |
openclaw_liveness_event_loop_delay_p99_seconds |
هیستوگرام | reason |
openclaw_liveness_event_loop_delay_max_seconds |
هیستوگرام | reason |
openclaw_liveness_event_loop_utilization_ratio |
هیستوگرام | reason |
openclaw_liveness_cpu_core_ratio |
هیستوگرام | reason |
openclaw_payload_large_total |
شمارنده | action, channel, plugin, reason, surface |
openclaw_payload_large_bytes |
هیستوگرام | action, channel, plugin, reason, surface |
openclaw_memory_bytes |
سنجه | kind |
openclaw_memory_rss_bytes |
هیستوگرام | هیچکدام |
openclaw_memory_pressure_total |
شمارنده | level, reason |
openclaw_telemetry_exporter_total |
شمارنده | exporter, reason, signal, status |
openclaw_prometheus_series_dropped_total |
شمارنده | هیچکدام |
openclaw_diagnostic_async_queue_dropped_total |
شمارنده | drop_class |
openclaw_diagnostic_async_queue_length |
سنجه | هیچکدام |
خطمشی برچسبها
برچسبهای محدود با کاردینالیتی پایین
برچسبهای Prometheus محدود و دارای کاردینالیتی پایین باقی میمانند. صادرکننده شناسههای تشخیصی خام مانند runId، sessionKey، sessionId، callId، toolCallId، شناسههای پیام، شناسههای گفتوگو یا شناسههای درخواست ارائهدهنده را منتشر نمیکند.
مقادیر برچسبها حذف اطلاعات حساس میشوند و باید با خطمشی نویسههای کمکاردینالیتی OpenClaw مطابقت داشته باشند. مقادیری که با این خطمشی مطابقت ندارند، بسته به معیار با unknown، other یا none جایگزین میشوند. برچسبهایی که شبیه کلیدهای نشست عاملِ محدودهبندیشده هستند نیز با unknown جایگزین میشوند.
سقف سریها و محاسبه سرریز
صادرکننده، تعداد سریهای زمانی نگهداریشده در حافظه را در مجموع شمارندهها، سنجهها و هیستوگرامها به ۲۰۴۸ سری محدود میکند. سریهای جدید فراتر از این سقف حذف میشوند و openclaw_prometheus_series_dropped_total هر بار یک واحد افزایش مییابد.
این شمارنده را بهعنوان نشانهای قطعی از نشت مقادیر با کاردینالیتی بالا از یک ویژگی بالادستی زیر نظر بگیرید. صادرکننده هرگز این سقف را بهطور خودکار افزایش نمیدهد؛ اگر شمارنده بالا میرود، بهجای غیرفعالکردن سقف، منبع را اصلاح کنید.
مواردی که هرگز در خروجی Prometheus ظاهر نمیشوند
- متن پرامپت، متن پاسخ، ورودیهای ابزار، خروجیهای ابزار، پرامپتهای سیستمی
- رونوشتهای مکالمه، دادههای صوتی، شناسههای تماس، شناسههای اتاق، توکنهای واگذاری، شناسههای نوبت و شناسههای خام نشست
- شناسههای خام درخواست ارائهدهنده (فقط هشهای کراندار، در موارد مقتضی، در spanها — هرگز در متریکها)
- کلیدها و شناسههای نشست
- نامهای میزبان، مسیرهای فایل، مقادیر محرمانه
دستورالعملهای PromQL
# Tokens per minute, split by providersum by (provider) (rate(openclaw_model_tokens_total[1m])) # Spend (USD) over the last hour, by modelsum by (model) (increase(openclaw_model_cost_usd_total[1h])) # 95th percentile model run durationhistogram_quantile( 0.95, sum by (le, provider, model) (rate(openclaw_run_duration_seconds_bucket[5m]))) # Queue wait time SLO (95p under 2s)histogram_quantile( 0.95, sum by (le, lane) (rate(openclaw_queue_lane_wait_seconds_bucket[5m]))) < 2 # Skill usage, split by bounded sourcesum by (skill, source) (increase(openclaw_skill_used_total[24h])) # Dropped Prometheus series (cardinality alarm)increase(openclaw_prometheus_series_dropped_total[15m]) > 0انتخاب میان خروجی Prometheus و OpenTelemetry
OpenClaw از هر دو سطح بهطور مستقل پشتیبانی میکند. میتوانید یکی، هر دو یا هیچکدام را اجرا کنید.
diagnostics-prometheus
- مدل واکشی: Prometheus مسیر
/api/diagnostics/prometheusرا جمعآوری میکند. - به جمعآورنده خارجی نیازی ندارد.
- از طریق احراز هویت عادی Gateway احراز هویت میشود.
- این سطح فقط شامل متریکها است و ردیابی یا گزارش رویداد ندارد.
- بهترین گزینه برای پشتههایی است که از قبل بر Prometheus و Grafana استاندارد شدهاند.
diagnostics-otel
- مدل ارسال: OpenClaw دادههای OTLP/HTTP را به یک جمعآورنده یا بخش پشتی سازگار با OTLP میفرستد.
- این سطح شامل متریکها، ردیابیها و گزارشهای رویداد است.
- هنگامی که به هر دو نیاز دارید، از طریق OpenTelemetry Collector و صادرکننده
prometheusیاprometheusremotewriteبه Prometheus متصل میشود. - برای فهرست کامل، به خروجی OpenTelemetry مراجعه کنید.
عیبیابی
بدنه پاسخ خالی
- بررسی کنید که
diagnostics.enabledدر پیکربندی رویfalseتنظیم نشده باشد؛ مقدار پیشفرض آنtrueاست. - با
openclaw plugins list --enabledتأیید کنید که Plugin فعال و بارگذاری شده است. - مقداری ترافیک ایجاد کنید؛ شمارندهها و هیستوگرامها تنها پس از وقوع حداقل یک رویداد، خط خروجی تولید میکنند.
401 / غیرمجاز
نقطه پایانی به دامنه اپراتور Gateway نیاز دارد (auth: "gateway" همراه با gatewayRuntimeScopeSurface: "trusted-operator"). از همان توکن یا گذرواژهای استفاده کنید که Prometheus برای سایر مسیرهای اپراتور Gateway استفاده میکند. هیچ حالت عمومی بدون احراز هویتی وجود ندارد.
`openclaw_prometheus_series_dropped_total` در حال افزایش است
یک ویژگی جدید از سقف ۲۰۴۸ سری فراتر رفته است. متریکهای اخیر را برای یافتن برچسبی با کاردینالیتی بالای غیرمنتظره بررسی کنید و آن را در منبع اصلاح کنید. صادرکننده عمداً سریهای جدید را حذف میکند و برچسبها را بیسروصدا بازنویسی نمیکند.
Prometheus پس از راهاندازی مجدد، سریهای قدیمی را نشان میدهد
Plugin وضعیت را فقط در حافظه نگه میدارد. پس از راهاندازی مجدد Gateway، شمارندهها به صفر بازنشانی میشوند و سنجهها از مقدار گزارششده بعدی خود دوباره آغاز میشوند. برای مدیریت صحیح بازنشانیها از rate() و increase() در PromQL استفاده کنید.
مرتبط
- خروجی عیبیابی — فایل فشرده عیبیابی محلی برای بستههای پشتیبانی
- سلامت و آمادگی — کاوشگرهای
/healthzو/readyz - ثبت گزارش — ثبت گزارش مبتنی بر فایل
- خروجی OpenTelemetry — ارسال OTLP برای ردیابیها، متریکها و گزارشهای رویداد