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_totalas 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_totalto show token consumption over time. - Estimated Cost -- tracks
axonflow_gateway_llm_cost_usd_totalto show estimated spend over time.
MCP Connector Panels
- Connector Calls -- shows
axonflow_connector_calls_totalbroken down by connector type. - Connector Latency -- histogram from
axonflow_connector_duration_milliseconds_bucket. - Connector Errors -- tracks
axonflow_connector_errors_totalto 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/datasourcesconfig/grafana/provisioning/dashboards
Metrics Used by the Dashboard
Key metrics include:
axonflow_agent_requests_totalaxonflow_agent_blocked_requests_totalaxonflow_agent_policy_evaluations_totalaxonflow_agent_request_duration_milliseconds_bucketaxonflow_gateway_precheck_requests_totalaxonflow_gateway_precheck_duration_milliseconds_bucketaxonflow_gateway_llm_tokens_totalaxonflow_gateway_llm_cost_usd_totalaxonflow_orchestrator_llm_calls_totalaxonflow_orchestrator_request_duration_milliseconds_bucketaxonflow_connector_calls_totalaxonflow_connector_duration_milliseconds_bucketaxonflow_connector_errors_total
Manual Import
If you are running Grafana outside the default compose stack:
- open Grafana
- go to
Dashboards->Import - import
config/grafana/dashboards/axonflow-community.json - 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.
