Documentation Index
Fetch the complete documentation index at: https://mintlify.com/abelperezr/nokia-bng-lab/llms.txt
Use this file to discover all available pages before exploring further.
Grafana Dashboards
Grafana provides rich visualization and monitoring capabilities for the Nokia BNG Lab telemetry data.Overview
Grafana is an open-source analytics and visualization platform:- Create interactive dashboards
- Query Prometheus datasource
- Set up alerts and notifications
- Share dashboards with teams
- Support for multiple datasources
- Container: grafana
- Management IP: 10.77.1.14
- Web UI Port: 3030 (mapped from 3000)
- Version: 10.3.5
- Default Credentials: admin/admin
Accessing Grafana
Web Interface
Anonymous access is enabled - you can view dashboards without logging in. To edit dashboards or access admin features, log in with admin/admin.
Authentication Settings
Configured inlab.yml:
Pre-configured Dashboards
The lab includes two production-ready dashboards:Dashboard Provisioning
configs/grafana/dashboards/ at startup.
1. SROS Dashboard
File:configs/grafana/dashboards/SROS-Dashboard.jsonDevices: BNG1, BNG2 (Nokia SROS routers)
- System Status
- Port Statistics
- BNG Sessions
- Routing Protocols
CPU and Memory Monitoring
- CPU utilization per device
- Memory pool usage
- System health indicators
- Temperature and fan speeds
2. SR Linux Dashboard
File:configs/grafana/dashboards/srlinux-telemetry-lite.jsonDevices: Switch, OLT, TX (Nokia SR Linux devices)
- Platform Metrics
- Interface Statistics
- Network Instances
Hardware Resource Usage
- Control plane CPU per slot
- Memory consumption
- Application status
- System processes
Datasource Configuration
Prometheus is pre-configured as the default datasource:Verify Datasource
- Navigate to Configuration (gear icon) → Data Sources
- Select Prometheus
- Scroll to bottom and click Save & Test
- Should show: “Data source is working”
Loki is configured but not deployed in the lab by default. It can be used for log aggregation if added to the topology.
Navigating Dashboards
Dashboard Layout
Each dashboard consists of:- Variables: Dropdown filters (device, port, etc.)
- Rows: Collapsible sections grouping related panels
- Panels: Individual visualizations (graphs, gauges, tables)
- Time Range: Selector in top-right corner
Using Variables
Dashboards include template variables for filtering:- Focus on a specific device
- Filter by interface
- Adjust aggregation interval
Time Range Selection
Click the time picker (top-right) to select:- Quick ranges: Last 5m, 15m, 1h, 6h, 24h, 7d, 30d
- Custom range: Absolute start and end times
- Refresh interval: Auto-refresh every 5s, 10s, 30s, etc.
Zoom and Pan
- Zoom in: Click and drag on a graph
- Zoom out: Double-click graph
- Pan: Shift + click and drag
- Reset zoom: Click “Reset zoom” button
Creating Custom Dashboards
Due to
allowUiUpdates: false, custom dashboards created in the UI are temporary. For permanent dashboards, export JSON and add to configs/grafana/dashboards/.Create New Dashboard
- Click + (plus) → Dashboard → Add new panel
- Select Prometheus as datasource
- Enter PromQL query
- Configure visualization options
- Save panel and dashboard
Example: CPU Usage Panel
- Query
- Visualization
- Panel Settings
Example: Interface Traffic Panel
- Ingress (positive) above X-axis
- Egress (negative) below X-axis
- Legend:
{{port_id}} In/Out
Example: Session Count Gauge
- Min: 0
- Max: 1000 (or expected max sessions)
- Thresholds: Green (0-500), Yellow (500-800), Red (800-1000)
Dashboard Variables
Create dynamic dashboards with variables:Add Variable
- Dashboard Settings (gear icon) → Variables → Add variable
- Configure variable:
deviceType: Query
Datasource: Prometheus
Query:
- Use in panels:
{device="$device"}
Variable Examples
Dashboard Best Practices
Organize with Rows
Organize with Rows
Group related panels into collapsible rows:
- System Health: CPU, memory, temperature
- Interface Statistics: Traffic, errors, state
- Protocol Status: BGP, ISIS, OSPF
- BNG Metrics: Sessions, RADIUS, subscribers
Use Consistent Time Ranges
Use Consistent Time Ranges
Ensure all panels use the same time range:
- Don’t override panel time ranges unless necessary
- Use dashboard-level time picker
- Consider adding “Last updated” timestamp panel
Set Appropriate Refresh Rates
Set Appropriate Refresh Rates
Balance freshness vs. load:
- 5s refresh: Real-time monitoring, troubleshooting
- 30s refresh: Active monitoring
- 1m+ refresh: Historical analysis
- Off: Manual refresh for exploration
Add Context with Annotations
Add Context with Annotations
Display events on graphs:
- Deployments
- Configuration changes
- Incidents
- Maintenance windows
Leverage Variables for Reusability
Leverage Variables for Reusability
Create one dashboard for all devices:
- Use
$devicevariable in all queries - Add “All” option for overview panels
- Chain variables:
$device→$port
Exporting Dashboards
To make custom dashboards permanent:1. Export from UI
- Open dashboard
- Click Share icon (top-right) → Export
- Select Save to file
- Download JSON file
2. Add to Lab
3. Version Control
Alerting
Grafana supports alerting on metric thresholds:Create Alert
- Edit panel → Alert tab
- Create alert rule
- Define conditions:
- Configure notification channels (email, Slack, webhook)
Example Alert: High CPU
Condition:Message: “BNG1 CPU utilization above 85% for 5 minutes”
Alerting requires notification channels to be configured in Grafana. This is not pre-configured in the lab.
Troubleshooting
Dashboard shows 'No Data'
Dashboard shows 'No Data'
Causes:
- Prometheus datasource not connected
- No metrics matching query
- Time range has no data
- PromQL syntax error
- Test datasource connection
- Verify query in Prometheus UI first
- Check time range includes recent data
- Review panel query for errors (red underline)
Dashboards not loading after changes
Dashboards not loading after changes
Problem: Modified JSON files not reflected in GrafanaSolutions:
-
Restart Grafana container:
-
Check file permissions:
-
Verify provisioning config:
Variables not populating
Variables not populating
Problem: Variable dropdown shows “No options”Solutions:
- Ensure query returns values in Prometheus
- Check datasource is selected for variable
- Verify label name matches metric (case-sensitive)
- Test query in Explore page first
Slow dashboard loading
Slow dashboard loading
Problem: Dashboard takes long time to renderSolutions:
- Reduce time range (e.g., 1h instead of 7d)
- Decrease number of panels per row
- Simplify PromQL queries (remove regex, use specific labels)
- Increase scrape/sample interval
- Use recording rules in Prometheus for expensive queries
Dashboard Examples
Subscriber Overview Dashboard
Purpose: Monitor BNG subscriber sessions Panels:-
Total Active Sessions (Stat)
-
Sessions per BNG (Bar gauge)
-
Session History (Time series)
Network Health Dashboard
Purpose: Overall lab health monitoring Rows:- Device Status: CPU, memory, uptime
- Interface Status: Operational state, error rates
- Protocol Health: BGP neighbors, route counts
Capacity Planning Dashboard
Purpose: Identify resource constraints Panels:- CPU trend over 7 days
- Memory growth rate
- Interface utilization percentiles (p50, p95, p99)
- Session growth forecast
Next Steps
Available Metrics
Browse all metrics for dashboard queries
Dashboard Guide
Detailed guide to using pre-built dashboards