Korrel8r Metrics
Korrel8r automatically exposes a metrics scrape endpoint for Prometheus at /metrics. Alternatively, run with the --otel-collector flag to push metrics via OTLP.
korrel8r/mcp
| Metric | Type | Unit | Description |
|---|---|---|---|
mcp.tool.calls |
counter | Total MCP tool calls | |
mcp.tool.duration |
histogram | s | MCP tool call duration in seconds |
korrel8r/engine
| Metric | Type | Unit | Description |
|---|---|---|---|
engine.store.get |
counter | Total store get calls | |
engine.store.get.duration |
histogram | s | Store get duration in seconds |
korrel8r/traverse
| Metric | Type | Unit | Description |
|---|---|---|---|
traverse.rules |
counter | Number of rule applications | |
traverse.queries |
counter | Number of query executions | |
traverse.duplicate_queries |
counter | Number of duplicate queries ignored |
korrel8r/rest
| Metric | Type | Unit | Description |
|---|---|---|---|
rest.requests |
counter | Total HTTP requests | |
rest.request.duration |
histogram | s | HTTP request duration in seconds |
rest.active.requests |
gauge | In-flight HTTP requests |
Prometheus metric names
OTel metric names are converted for Prometheus export:
dots become underscores, counters get a _total suffix,
and histogram units are appended (e.g. _seconds for unit s).
For example engine.store.get becomes engine_store_get_total,
and engine.store.get.duration becomes engine_store_get_duration_seconds.
Example PromQL queries
Store get rate per second by domain:
rate(engine_store_get_total[5m])Store get error ratio by domain:
rate(engine_store_get_total{status="error"}[5m])
/ rate(engine_store_get_total[5m])Average store get latency by domain:
rate(engine_store_get_duration_seconds_sum[5m])
/ rate(engine_store_get_duration_seconds_count[5m])P99 store get latency:
histogram_quantile(0.99, rate(engine_store_get_duration_seconds_bucket[5m]))REST request rate by method and status:
rate(rest_requests_total[5m])Average REST request latency:
rate(rest_request_duration_seconds_sum[5m])
/ rate(rest_request_duration_seconds_count[5m])MCP tool call rate:
rate(mcp_tool_calls_total[5m])Top 10 most-applied rules:
topk(10, increase(traverse_rules_total[1h]))Graph traversal efficiency (duplicate queries as a fraction of total):
rate(traverse_duplicate_queries_total[5m])
/ rate(traverse_queries_total[5m])