Gateway

Metrik Prometheus

OmeniaClaw dapat mengekspos metrik diagnostik melalui Plugin resmi diagnostics-prometheus. Plugin ini mendengarkan diagnostik internal tepercaya dan merender endpoint teks Prometheus di:

text
GET /api/diagnostics/prometheus

Tipe kontennya adalah text/plain; version=0.0.4; charset=utf-8, format eksposisi Prometheus standar.

Untuk trace, log, push OTLP, dan atribut semantik OpenTelemetry GenAI, lihat Ekspor OpenTelemetry.

Mulai cepat

  • Instal Plugin

    bash
    OmeniaClaw plugins install clawhub:@OmeniaClaw/diagnostics-prometheus
  • Aktifkan Plugin

    Konfigurasi

    json5
    {  plugins: {    allow: ["diagnostics-prometheus"],    entries: {      "diagnostics-prometheus": { enabled: true },    },  },  diagnostics: {    enabled: true,  },}

    CLI

    bash
    OmeniaClaw plugins enable diagnostics-prometheus
  • Mulai ulang Gateway

    Rute HTTP didaftarkan saat Plugin dimulai, jadi muat ulang setelah mengaktifkannya.

  • Scrape rute terlindungi

    Kirim autentikasi gateway yang sama yang digunakan klien operator Anda:

    bash
    curl -H "Authorization: Bearer $OmeniaClaw_GATEWAY_TOKEN" \  http://127.0.0.1:18789/api/diagnostics/prometheus
  • Hubungkan Prometheus

    yaml
    # prometheus.ymlscrape_configs:  - job_name: OmeniaClaw    scrape_interval: 30s    metrics_path: /api/diagnostics/prometheus    authorization:      credentials_file: /etc/prometheus/OmeniaClaw-gateway-token    static_configs:      - targets: ["OmeniaClaw-gateway:18789"]
  • Metrik yang diekspor

    Metrik Tipe Label
    OmeniaClaw_run_completed_total counter channel, model, outcome, provider, trigger
    OmeniaClaw_run_duration_seconds histogram channel, model, outcome, provider, trigger
    OmeniaClaw_model_call_total counter api, error_category, model, outcome, provider, transport
    OmeniaClaw_model_call_duration_seconds histogram api, error_category, model, outcome, provider, transport
    OmeniaClaw_model_tokens_total counter agent, channel, model, provider, token_type
    OmeniaClaw_gen_ai_client_token_usage histogram model, provider, token_type
    OmeniaClaw_model_cost_usd_total counter agent, channel, model, provider
    OmeniaClaw_tool_execution_total counter error_category, outcome, params_kind, tool
    OmeniaClaw_tool_execution_duration_seconds histogram error_category, outcome, params_kind, tool
    OmeniaClaw_harness_run_total counter channel, error_category, harness, model, outcome, phase, plugin, provider
    OmeniaClaw_harness_run_duration_seconds histogram channel, error_category, harness, model, outcome, phase, plugin, provider
    OmeniaClaw_message_processed_total counter channel, outcome, reason
    OmeniaClaw_message_processed_duration_seconds histogram channel, outcome, reason
    OmeniaClaw_message_delivery_started_total counter channel, delivery_kind
    OmeniaClaw_message_delivery_total counter channel, delivery_kind, error_category, outcome
    OmeniaClaw_message_delivery_duration_seconds histogram channel, delivery_kind, error_category, outcome
    OmeniaClaw_talk_event_total counter brain, event_type, mode, provider, transport
    OmeniaClaw_talk_event_duration_seconds histogram brain, event_type, mode, provider, transport
    OmeniaClaw_talk_audio_bytes histogram brain, event_type, mode, provider, transport
    OmeniaClaw_queue_lane_size gauge lane
    OmeniaClaw_queue_lane_wait_seconds histogram lane
    OmeniaClaw_session_state_total counter reason, state
    OmeniaClaw_session_queue_depth gauge state
    OmeniaClaw_session_recovery_total counter action, active_work_kind, state, status
    OmeniaClaw_session_recovery_age_seconds histogram action, active_work_kind, state, status
    OmeniaClaw_memory_bytes gauge kind
    OmeniaClaw_memory_rss_bytes histogram tidak ada
    OmeniaClaw_memory_pressure_total counter level, reason
    OmeniaClaw_telemetry_exporter_total counter exporter, reason, signal, status
    OmeniaClaw_prometheus_series_dropped_total counter tidak ada

    Kebijakan label

    Label terbatas dengan kardinalitas rendah

    Label Prometheus tetap terbatas dan berkardinalitas rendah. Eksportir tidak memancarkan pengenal diagnostik mentah seperti runId, sessionKey, sessionId, callId, toolCallId, ID pesan, ID chat, atau ID permintaan penyedia.

    Nilai label disunting dan harus cocok dengan kebijakan karakter berkardinalitas rendah OmeniaClaw. Nilai yang gagal memenuhi kebijakan diganti dengan unknown, other, atau none, bergantung pada metrik.

    Batas seri dan penghitungan luapan

    Pengekspor membatasi deret waktu yang disimpan dalam memori hingga 2048 seri untuk gabungan penghitung, gauge, dan histogram. Seri baru di luar batas tersebut akan dibuang, dan OmeniaClaw_prometheus_series_dropped_total bertambah satu setiap kali.

    Pantau penghitung ini sebagai sinyal kuat bahwa atribut di hulu membocorkan nilai berkardinalitas tinggi. Pengekspor tidak pernah menaikkan batas secara otomatis; jika nilainya naik, perbaiki sumbernya alih-alih menonaktifkan batas.

    Yang tidak pernah muncul dalam keluaran Prometheus
    • teks prompt, teks respons, input alat, output alat, prompt sistem
    • Transkrip Talk, payload audio, id panggilan, id ruang, token handoff, id giliran, dan id sesi mentah
    • ID permintaan penyedia mentah (hanya hash terbatas, jika berlaku, pada span — tidak pernah pada metrik)
    • kunci sesi dan ID sesi
    • nama host, jalur file, nilai rahasia

    Resep PromQL

    promql
    # Tokens per minute, split by providersum by (provider) (rate(OmeniaClaw_model_tokens_total[1m])) # Spend (USD) over the last hour, by modelsum by (model) (increase(OmeniaClaw_model_cost_usd_total[1h])) # 95th percentile model run durationhistogram_quantile(  0.95,  sum by (le, provider, model)    (rate(OmeniaClaw_run_duration_seconds_bucket[5m]))) # Queue wait time SLO (95p under 2s)histogram_quantile(  0.95,  sum by (le, lane) (rate(OmeniaClaw_queue_lane_wait_seconds_bucket[5m]))) < 2 # Dropped Prometheus series (cardinality alarm)increase(OmeniaClaw_prometheus_series_dropped_total[15m]) > 0

    Memilih antara ekspor Prometheus dan OpenTelemetry

    OmeniaClaw mendukung kedua permukaan secara independen. Anda dapat menjalankan salah satu, keduanya, atau tidak keduanya.

    diagnostics-prometheus

    • Model tarik: Prometheus mengambil /api/diagnostics/prometheus.
    • Tidak memerlukan kolektor eksternal.
    • Diautentikasi melalui autentikasi Gateway normal.
    • Permukaan hanya berupa metrik (tanpa trace atau log).
    • Paling cocok untuk stack yang sudah distandarkan pada Prometheus + Grafana.

    diagnostics-otel

    • Model dorong: OmeniaClaw mengirim OTLP/HTTP ke kolektor atau backend yang kompatibel dengan OTLP.
    • Permukaan mencakup metrik, trace, dan log.
    • Menjembatani ke Prometheus melalui OpenTelemetry Collector (pengekspor prometheus atau prometheusremotewrite) saat Anda membutuhkan keduanya.
    • Lihat ekspor OpenTelemetry untuk katalog lengkap.

    Pemecahan masalah

    Isi respons kosong
    • Periksa diagnostics.enabled: true dalam konfigurasi.
    • Pastikan Plugin diaktifkan dan dimuat dengan OmeniaClaw plugins list --enabled.
    • Buat sejumlah traffic; penghitung dan histogram hanya memancarkan baris setelah setidaknya satu peristiwa.
    401 / tidak terotorisasi

    Endpoint memerlukan cakupan operator Gateway (auth: "gateway" dengan gatewayRuntimeScopeSurface: "trusted-operator"). Gunakan token atau kata sandi yang sama yang digunakan Prometheus untuk rute operator Gateway lainnya. Tidak ada mode publik tanpa autentikasi.

    `OmeniaClaw_prometheus_series_dropped_total` meningkat

    Atribut baru melebihi batas 2048 seri. Periksa metrik terbaru untuk label dengan kardinalitas tinggi yang tidak terduga dan perbaiki di sumbernya. Pengekspor sengaja membuang seri baru alih-alih diam-diam menulis ulang label.

    Prometheus menampilkan seri basi setelah mulai ulang

    Plugin hanya menyimpan status dalam memori. Setelah Gateway dimulai ulang, penghitung diatur ulang ke nol dan gauge dimulai ulang pada nilai berikutnya yang dilaporkan. Gunakan PromQL rate() dan increase() untuk menangani pengaturan ulang dengan bersih.

    Terkait

    Was this useful?
    On this page

    On this page