Skip to main content

Grafana Dashboard

AxonFlow Community includes a pre-provisioned Grafana dashboard so engineers can see what the runtime is doing while they build and debug governed AI systems.

That makes it useful for more than demos. It is usually the fastest way to answer questions like whether policies are actually blocking, which connector types are getting slower, and whether token or cost curves changed after a routing or model update.

Access

docker compose up -d
open http://localhost:3000

Default local credentials:

  • username: admin
  • password: grafana_localdev456

What the Dashboard Covers

The community dashboard is driven by real Prometheus metrics from the local stack and focuses on the signals most teams need first.

Request and Policy Panels

  • Total Requests -- shows axonflow_agent_requests_total as a time series, giving you request volume over time.
  • Blocked Requests -- tracks axonflow_agent_blocked_requests_total, so you can see how often policies are blocking traffic and whether that rate changes after policy updates.
  • Policy Evaluations -- shows axonflow_agent_policy_evaluations_total, which counts how many times the policy engine ran. This is different from blocked requests because a policy evaluation can result in "allow" or "block".

Latency Panels

  • Agent Request Latency -- histogram from axonflow_agent_request_duration_milliseconds_bucket, showing p50/p95/p99 latency for the full agent request path.
  • Orchestrator Latency -- histogram from axonflow_orchestrator_request_duration_milliseconds_bucket, showing how long the orchestrator takes to route and execute LLM calls.
  • Gateway Pre-check Latency -- histogram from axonflow_gateway_precheck_duration_milliseconds_bucket, showing policy evaluation time for gateway pre-check calls.

Token and Cost Panels

  • Token Usage -- tracks axonflow_gateway_llm_tokens_total to show token consumption over time.
  • Estimated Cost -- tracks axonflow_gateway_llm_cost_usd_total to show estimated spend over time.

MCP Connector Panels

  • Connector Calls -- shows axonflow_connector_calls_total broken down by connector type.
  • Connector Latency -- histogram from axonflow_connector_duration_milliseconds_bucket.
  • Connector Errors -- tracks axonflow_connector_errors_total to surface connector failures that might otherwise be hidden behind successful LLM responses.

Dashboard Source

The bundled dashboard lives at:

  • config/grafana/dashboards/axonflow-community.json

Grafana provisioning is already wired through:

  • config/grafana/provisioning/datasources
  • config/grafana/provisioning/dashboards

Metrics Used by the Dashboard

Key metrics include:

  • axonflow_agent_requests_total
  • axonflow_agent_blocked_requests_total
  • axonflow_agent_policy_evaluations_total
  • axonflow_agent_request_duration_milliseconds_bucket
  • axonflow_gateway_precheck_requests_total
  • axonflow_gateway_precheck_duration_milliseconds_bucket
  • axonflow_gateway_llm_tokens_total
  • axonflow_gateway_llm_cost_usd_total
  • axonflow_orchestrator_llm_calls_total
  • axonflow_orchestrator_request_duration_milliseconds_bucket
  • axonflow_connector_calls_total
  • axonflow_connector_duration_milliseconds_bucket
  • axonflow_connector_errors_total

Manual Import

If you are running Grafana outside the default compose stack:

  1. open Grafana
  2. go to Dashboards -> Import
  3. import config/grafana/dashboards/axonflow-community.json
  4. select the Prometheus datasource

Troubleshooting

docker compose ps grafana prometheus
docker compose logs grafana
docker compose logs prometheus
curl -s http://localhost:9090/-/healthy
curl -s http://localhost:8080/prometheus | head

If the dashboard shows no data, the usual causes are:

  • Prometheus is not scraping /prometheus
  • the services are healthy but have not received traffic yet
  • Grafana provisioning did not load on startup

Why This Matters

For serious AI application teams, dashboards are not decoration. They are how you prove:

  • policies are firing
  • latency remains acceptable
  • connectors are healthy
  • token and cost behavior are visible

That observability story is one of the reasons teams move from lightweight wrappers to a real control plane.

Next Steps