Import Pre-Built Dashboards
BizFirst Observe ships with 10 pre-built Grafana dashboards. The fastest way to get them into Grafana is via provisioning (dashboards auto-loaded at startup). If provisioning is already configured in the Docker Compose stack, skip to the variable configuration step.
Check if Dashboards Are Already Provisioned
# If you started the stack with the BizFirst Observe docker-compose.yml,
# dashboards may already be provisioned. Check:
# In Grafana UI: Dashboards → Browse
# Look for a "BizFirstGO" folder containing pre-built dashboards.
# Via API:
curl -s http://admin:admin@localhost:3000/api/search?folderTitle=BizFirstGO \
| jq '.[].title'
# If you see dashboard titles, provisioning is working — skip to Step 3.
Method 1: Provisioning (If Not Already Active)
# The BizFirst Observe compose stack mounts dashboard JSON files automatically.
# If the dashboards directory is empty, populate it:
# Dashboard JSON files location (in your BizFirstGO repository):
ls bizfirstgo/infrastructure/observe/dashboards/
# Should show:
# flow-studio-overview.json
# node-performance.json
# hil-analytics.json
# edgestream-throughput.json
# octopus-performance.json
# tenant-health.json
# api-latency.json
# error-analysis.json
# trace-explorer.json
# infrastructure.json
# Ensure the provisioning config references this directory:
# grafana-provisioning/dashboards/bizfirst-observe.yaml:
apiVersion: 1
providers:
- name: BizFirstObserve
type: file
updateIntervalSeconds: 30
options:
path: /var/lib/grafana/dashboards/bizfirst
foldersFromFilesStructure: true
# After placing JSON files, Grafana auto-reloads within 30 seconds.
# No restart needed.
Method 2: Manual Import via UI
Open Dashboards → Import
In Grafana sidebar: Dashboards → + Import. Or navigate to http://localhost:3000/dashboard/import directly.
Upload the first JSON file
Click "Upload JSON file". Select flow-studio-overview.json from the BizFirst Observe dashboards directory.
Map data sources
Grafana prompts for data source mappings. Map:
Loki → your configured Loki data source
Prometheus → your Prometheus data source
Tempo → your Tempo data source
Set the folder and click Import
Choose folder: BizFirstGO (create it if it does not exist). Click Import. Repeat for all 10 JSON files.
Configure Dashboard Variables
After import, each dashboard has template variables in the top bar. Configure them for your deployment:
# Required variable configuration for each dashboard:
$tenant:
- Set to "All" to see aggregate data across all tenants
- Set to a specific tenant ID (e.g., "tenant-abc") to scope to one tenant
- The variable is populated dynamically from Prometheus label values
$environment:
- Set to "production", "staging", or "development"
- Should match the OTEL_RESOURCE_ATTRIBUTES environment value you set
- Most dashboards default to "production"
$time_range:
- Use the Grafana time range picker in the top-right corner
- Start with "Last 1 hour" to verify recent data is appearing
- Common production ranges: Last 6h (incidents), Last 24h (daily review), Last 7d (weekly)
Verify Dashboard Data is Appearing
# On the Flow Studio Overview dashboard, you should see:
# 1. Execution Rate panel: non-zero value (shows executions per second)
# 2. Error Rate: 0% or low value
# 3. P50/P95/P99 Latency: values in milliseconds
# 4. Active Executions: current count (may be 0 if no active executions)
# 5. Recent Errors Log panel: empty (if no errors) or recent error log lines
# If panels show "No data":
# 1. Check time range — widen to "Last 1 hour"
# 2. Verify $environment variable matches your OTEL_RESOURCE_ATTRIBUTES value
# 3. Check that Prometheus has scraped the /metrics endpoint (Prometheus Targets page)
# 4. Verify the PromQL query by clicking the panel title → Edit → run query in editor
Dashboards loaded via provisioning cannot be saved after editing in the UI. To experiment with changes, use the dashboard menu to "Save as" a copy with a new name. Your copy is editable; the provisioned original is always restored from the JSON file.