# Dashboard Design Standards
## Rule
All Grafana dashboards MUST follow the RED/USE method, include template variables, have documentation panels, and use consistent naming and layout patterns.
## Dashboard Structure
```
Row 1: Golden Signals (Rate, Errors, Duration)
Row 2: Resource Utilization (CPU, Memory, Disk, Network)
Row 3: Application-Specific Metrics
Row 4: Logs and Events (collapsed by default)
```
## Required Template Variables
Every dashboard MUST include:
- `environment` — production, staging, development
- `namespace` or `service` — filter by service
- `interval` — query range variable (`$__interval`, 1m, 5m, 15m)
## Naming Conventions
| Item | Convention | Example |
|------|-----------|---------|
| Dashboard title | Service - Category | "API Service - Overview" |
| Panel title | Metric Description | "Request Rate by Endpoint" |
| Folder | Team or Domain | "Backend", "Infrastructure" |
| Variable | camelCase | `environment`, `serviceName` |
## Panel Requirements
- Meaningful title (not "Panel 1")
- Y-axis unit configured (req/s, %, bytes, ms)
- Legend with template labels
- Threshold colors: green (ok), yellow (warning), red (critical)
- Description field explaining what the panel shows
## Documentation
Every dashboard MUST have a text panel at the top with:
- What this dashboard monitors
- Who owns the service
- Link to runbook/wiki
- How to escalate issues
## Examples
### Good
- RED panels at top, resource panels below
- Template variables for environment and service
- Units on all Y-axes
- Documentation panel with runbook links
### Bad
- 50+ panels with no organization
- Hardcoded namespace/service names
- No units on axes (raw numbers)
- No documentation panel
## Enforcement
Review dashboards JSON in PRs.
Use provisioning to enforce consistent structure.