The EDA Telemetry Lab demonstrates how to leverage full 100% YANG telemetry support integrated with EDA (Event Driven Automation). In this lab, Nokia SR Linux nodes are dynamically configured via EDA and integrated into a modern telemetry and logging stack that includes Prometheus, Grafana, Promtail, Loki, Alloy and Kafka exporters for alarms and deviations.
- EDA-Driven Configuration: Automate SR Linux configuration and telemetry subscriptions with EDA.
- Modern Telemetry Stack: Export telemetry data using EDA’s Prometheus exporter and monitor alarms/deviations via the Kafka exporter.
- Enhanced Logging: Capture and aggregate system logs using Promtail, Alloy and Loki.
- Deployment Options: Deploy with either Containerlab (clab) for live traffic or CX (Simulation Platform) for license-flexible testing.
- Traffic: Generate and control iperf3 traffic to see dynamic network metrics in action.
- Fabric: A Clos topology of Nokia SR Linux nodes.
- Telemetry: SR Linux nodes stream full YANG telemetry data. EDA exports these metrics via its Prometheus exporter and sends alarms/deviations using its Kafka exporter.
- Visualization: Grafana dashboards (with the Flow Plugin) provide real-time insights into network metrics.
- Alarms: Data is collected by Kafka, processed by Alloy and aggregated in Loki, with logs viewable in Grafana.
- Traffic Generation: Use iperf3 tests and provided scripts to simulate live traffic across the network.
There are two variants for deploying the lab:
- Using Containerlab:
The simulated SR Linux nodes, client containers and the telemetry stack are deployed using Containerlab. This deployment variant requires a license for EDA, as the simulated SR Linux nodes are deployed outside of EDA.
On the positive side, using Containerlab allows for live traffic generation using iperf. - Using CX (EDA Simulation Platform): The simulated SR Linux nodes are spawned in EDA CX and thus do not require a license. The telemetry stack for convenience is deployed using Containerlab. This deployment variant does not require a license but does not support traffic generation with iperf.
This README focuses on the Containerlab deployment variant as it leverages iperf-generated traffic for demonstration purposes. See cx/README.md for the CX deployment variant.
Important
EDA Installation Mode: This lab requires EDA to be installed in the Simulate=False
mode. Ensure that your EDA deployment is configured accordingly.
Hardware License: A valid hardware license
for EDA version 24.12 is mandatory for using this lab with Containerlab.
-
Ensure
kubectl
is installed and configured: To test ifkubectl
is installed and configured, run:kubectl -n eda-system get engineconfig engine-config \ -o jsonpath='{.status.run-status}{"\n"}'
You should see
Started
in the output. -
Initialize the Lab Configuration:
Run the provided
init.sh
which does the following:- ensures
uv
andclab-connector
tools are installed - retrieves the EDA IP and sets it in the
configs/prometheus/prometheus.yml
files. - save EDA API address in a
.eda_api_address
file.
- ensures
-
Deploy containerlab topology:
Run
containerlab deploy
to deploy the lab. -
Install the EDA Apps (Prometheus and Kafka):
Run:
kubectl apply -f manifests/0000_apps.yaml
TIP: Depending on your setup this can take couple of seconds/minutes. Please check in the EDA UI if the apps are installed.
-
Integrate Containerlab with EDA:
Run:
clab-connector integrate \ --topology-data clab-eda-st/topology-data.json \ --eda-url https://$(cat .eda_api_address)
TIP: Check Clab Connector docs for more details on the clab-connector options.
-
Deploy the Manifests:
Apply the manifests:
kubectl apply -f manifests
-
Enjoy Your Lab!
Tip
Shutdown interfaces via WebUI: Client 1, exposes the port 8080 for the WebUI. You can use the WebUI to shutdown interfaces on the SR Linux nodes.
-
SR Linux Nodes: Access these devices via SSH using the management IP addresses or hostnames (e.g.,
ssh clab-eda-st-leaf2
). -
Linux Clients: Access client-emulating container via SSH: e.g.
ssh user@clab-eda-st-server3
(password:multit00l
).
- SR Linux Telemetry: Nodes stream full YANG telemetry data.
- EDA Exporters:
- Prometheus Exporter: EDA exports detailed telemetry metrics to Prometheus.
- Kafka Exporter: Alarms and deviations are forwarded via EDA’s Kafka exporter, enabling proactive monitoring and alerting.
- Prometheus:
Stores the telemetry data. The configuration (located in
configs/prometheus/prometheus.yml
) is updated during initialization. - Grafana: Visualize metrics and dashboards at http://grafana:3000. For admin tasks, use admin/admin.
- Alloy & Loki: Alloy processes Kafka data and sends it to Loki for storage. Alloy has a web interface at http://alloy:12345.
- Promtail & Loki: Collect and aggregate SR Linux syslogs (e.g., BGP events, interface state changes). Logs are accessible and filterable via Grafana.
- Prometheus UI: Check out real-time graphs at http://prometheus:9090/graph.
The lab includes a traffic script (named traffic.sh) that launches bidirectional iperf3 tests between designated clients.
Test Pairs Configured:
-
Server4 to Server1:
- From server4 (
clab-eda-st-server4
) targeting server1’s IP10.10.10.1
on port 5201 - From server4 targeting server1’s VLAN interface
10.20.1.1
on port 5202
- From server4 (
-
Server3 to Server2:
- From server3 (
clab-eda-st-server3
) targeting server2’s IP10.10.10.2
on port 5201 - From server3 targeting server2’s VLAN interface
10.20.2.2
on port 5202
- From server3 (
Default Test Settings:
- Duration: 10000 seconds
- Report Interval: 1 second
- Parallel Streams: 10
- Bandwidth: 120K
- MSS: 1400
Usage Examples:
-
Start Traffic: To launch tests from a specific client or from both clients, run:
./traffic.sh start server3 ./traffic.sh start server4 ./traffic.sh start all
-
Stop Traffic: To stop tests on a specific client or on all clients, run:
./traffic.sh stop server3 ./traffic.sh stop server4 ./traffic.sh stop all
The provided containerlab file defines the lab topology. For the Containerlab (clab) variant, it includes:
- Nokia SR Linux nodes (leaf and spine switches)
- Linux clients configured with bonding, VLANs, and iperf3 servers/clients
- Telemetry and logging containers (Alloy, Prometheus, Grafana, Promtail, Loki, Kafka)
For the CX variant, the topology includes only the telemetry and logging containers.
The lab includes several manifest files that define the configuration of EDA apps and the network fabric. For example:
- Apps Installation (0000_apps.yaml): Installs the Prometheus exporter (prom-exporter v2.0.0) and the Kafka exporter (kafka-exporter v2.0.1).
- Edge Interfaces (0009_edge-interfaces.yaml / 0010_edge-interfaces.yaml): Configure LAG, LLDP, and edge interfaces on SR Linux nodes.
- TopoLinks (0010_topolinks.yaml / 0009_topolinks.yaml): Define physical and logical links between network elements.
- Exporters (0020_exporters.yaml / 0025_exporters.yaml): Export telemetry metrics (CPU, memory, interface status, routes, etc.) for Prometheus.
- Syslog (0021_syslog.yaml / 0026_syslog.yaml): Set up syslog forwarding to a centralized server.
- Fabric Topology (0030_fabric.yaml): Establish the Clos fabric connectivity.
- Virtual Networks (0040_ipvrf2001.yaml and 0041_macvrf1001.yaml): Configure VRFs and VLANs for traffic segmentation.
The EDA Telemetry Lab offers a modern, automated approach to network telemetry and logging by integrating SR Linux with EDA. With fully automated configuration, a powerful monitoring stack leveraging EDA’s Prometheus and Kafka exporters, and flexible deployment options, this lab is an ideal starting point for exploring event-driven network automation.
Happy automating and exploring your network!
Connect with us on Discord for support and community discussions.