Scenario 6
The dashboard delivery path was healthy. The export format was wrong.
This scenario is useful because it separates a provisioning-path problem from a schema mismatch inside the dashboard file itself.
SymptomDashboard missing
Path healthSidecar reloaded
Root causev2 JSON
FixClassic export
What was misleading
The Kubernetes flow looked healthy
The ConfigMap existed, the sidecar saw the file, and the reload happened. That made the missing dashboard harder to diagnose because the delivery path itself did not appear broken.
ConfigMap present
Sidecar reloaded dashboards
Grafana folder stays empty
What the logs confirmed
Grafana rejected the v2 schema
The main Grafana container logs showed the actual cause: the exported dashboard was in Grafana v2 schema, while the current sidecar file provisioning flow expects classic dashboard JSON.
dashboard appears to be in v2 format
convert to classic JSON before provisioning
Signal
The delivery path looked healthy
The file was mounted and the sidecar processed the reload request.
Reading
The schema was incompatible
Grafana rejected the payload because the export used the newer v2 format.
Decision
Re-export in classic format
Keep the file-provisioning rule explicit for future dashboard updates.
Diagnosis sequence
kubectl -n monitoring get configmap payment-exception-review-service-health-dashboard -o yaml
kubectl -n monitoring logs deploy/kube-prometheus-stack-grafana -c grafana-sc-dashboard --tail=100
kubectl -n monitoring logs deploy/kube-prometheus-stack-grafana -c grafana --tail=200Recovery path
# Re-export from Grafana in classic format
kubectl apply -k platform/kubernetes-resources/observability/grafana
# Refresh Grafana and search for the dashboard again