An automated testing and observability pipeline for the Toubkal HPC cluster. It combines:
- Jenkins to trigger ReFrame regression tests across cluster nodes
- ELK stack (Logstash, Elasticsearch, Kibana) to ingest and explore test results
- Prometheus + Grafana with NVIDIA DCGM and Node Exporter to monitor GPU and node health
The system is split into three zones:
- Jenkins Master runs in a Docker container.
- It connects over SSH to a Jenkins Node running on the cluster's entry node.
- The Jenkins Node launches
reframe -ron the target compute nodes (Node 1, Node 2, … Node N).
- Each node runs ReFrame tests and produces a JSON report.
- NVIDIA DCGM Exporter exposes GPU metrics.
- Prometheus Node Exporter exposes system metrics (CPU, memory, disk, network).
Everything runs as Docker containers managed with Docker Compose.
| Pipeline | Flow |
|---|---|
| Test results | ReFrame JSON → Logstash → Elasticsearch → Kibana (query & visualize) |
| Metrics | DCGM + Node Exporter → Prometheus → Grafana dashboards |
.
├── DEVOPS-STACK/ # Docker Compose stack: ELK, Prometheus, Grafana, Jenkins
├── GPU/ # GPU monitoring / testing (DCGM exporter, GPU tests)
├── assets/
│ └── architecture.png
└── README.md
| Area | Tools |
|---|---|
| CI/CD | Jenkins (master + SSH node) |
| HPC testing | ReFrame |
| Containers | Docker, Docker Compose |
| Log pipeline | Logstash, Elasticsearch, Kibana |
| Metrics | Prometheus, Grafana |
| Exporters | NVIDIA DCGM Exporter, Prometheus Node Exporter |
- Access to the Toubkal private network
- Docker & Docker Compose on the monitoring VM and the Jenkins VM
- SSH access from the Jenkins Master to the cluster entry node
- ReFrame installed on the cluster
- NVIDIA drivers on GPU nodes
git clone https://github.com/medkarim19/redx-sre-devops.git
cd redx-sre-devopscd DEVOPS-STACK
docker compose up -dRun the following exporters on the cluster nodes so Prometheus can scrape them:
- NVIDIA DCGM Exporter for GPU metrics
- Prometheus Node Exporter for system metrics
- Start the Jenkins Master container.
- Add the cluster entry node as a Jenkins agent over SSH.
- Create a pipeline job that runs ReFrame on the target nodes.
reframe -c <checks_path> -r --report-file=report.jsonThe JSON report is picked up by Logstash and indexed in Elasticsearch.
| Service | Purpose | Default port |
|---|---|---|
| Grafana | GPU & node metrics dashboards | 3000 |
| Prometheus | Metrics storage & queries | 9090 |
| Kibana | ReFrame test results explorer | 5601 |
| Elasticsearch | Search & storage backend | 9200 |
- A Jenkins job is triggered (manually or on schedule).
- Jenkins Master delegates to the Jenkins Node on the cluster entry node via SSH.
- The node runs
reframe -ron cluster nodes. - Each node writes a JSON test report.
- Logstash ingests the reports and forwards them to Elasticsearch.
- Kibana queries Elasticsearch to visualize pass/fail trends and performance.
- In parallel, Prometheus scrapes DCGM and Node Exporter, and Grafana displays live health metrics.
