Inspiration
After deciding to take on the Grafana challenge, our team closely examined the range of sensors provided. We began by considering one of Grafana's primary use cases—server observability—and realized that while monitoring server usage data like CPU and RAM is common, measuring the environmental conditions inside and around server racks is not. We believed that tracking such data could be very useful, providing an independent source to detect unusual conditions and potential tampering. Motivated by this insight, we started to build RackRanger.
What it does
Our project connects multiple server racks across various locations to a single Grafana dashboard. This dashboard shows real-time temperature and humidity data for all the racks. It also detects and displays any tampering events, like someone trying to mess with a server rack. When tampering is detected, the dashboard not only shows an alert but also sends an instant notification to the server administrator through Discord. This setup ensures that our server environments are constantly monitored and secure.
How we built it
Architecturally the monitoring system consists of three different components: microcontrollers, Prometheus instances and a Grafana server. The microcontrollers are small ESP32 development kits that are connected to sensors for things like temperature, humidity, motion etc. They're programmed with the PlatformIO Arduino framework and expose the real-time sensor data at an HTTP endpoint. Because the microcontrollers are usually behind a firewall, each deployment site has a Prometheus instance connected to the same network, which can then poll and store the sensor data in the time-series database. The in-site servers can be Raspberry PIs or other lightweight Linux devices. To make the metrics viewable from anywhere on the internet, there's a VPS server hosting the Grafana dashboard behind a Caddy reverse proxy. It uses the Prometheus instances from different sites as data sources, accessing them through a VPN tunnel provided by ZeroTier - although it could be self hosted. There is also a landing page for our project made with SvelteKit, which is also on the VPS behind the reverse proxy, in addition to the open source collaborative notes platform HedgeDoc we used throughout the hackathon. The VPS also has it's own instance of Prometheus, because all of them are connected to node-exporters on the same server, for general system monitoring, in addition to the sensors. Some of the measurements available from the sensors, like impacts, are more events than metrics, so each Prometheus server also has a Loki instance, to which the microcontrollers push events - and those are of course available to Grafana. All of these systems and services, apart from microcontrollers, are managed by Ansible, which means that the whole setup is reproducible. There's more technical details at the bottom of this section.
There's three repositories containing all of the written code: one for the ESP32 firmware, one for the SvelteKit landing page and then the Ansible playbook.
Challenges we ran into
- HackUPC WIFI not allowing devices to communicate with each other.
- Grafana and Prometheus servers having firewall rules preventing communication.
- Embedded Rust toolchain working unreliably.
- Broken ultraviolet and sound sensors.
- Unreliable ESP32 device.
What we learned
Miika
Miika dived into embedded development using microcontrollers and also used Ansible with docker-compose for automation, both for the first time. He navigated through tricky network issues on Eduroam and resolved Linux server firewall setup issues. Setting up Grafana alerts proved tough, but he successfully managed it, significantly broadening his technical skills.
Pol
Pol learned essential lessons on the need to switch tactics and adopt new strategies, especially when managing networks on embedded devices with limited resources. This experience taught him not just technical skills but also how to think strategically when standard solutions fail. He also worked on cross-compiling for embedded targets without an OS on new and different toolchains.
Valentin
Valentin used Svelte for the first time, gaining insights into a new framework that enhanced his skills in creating visually appealing user interfaces. He also took a deep dive into the technical aspects of SVG images, understanding their structure and learning how to manipulate them effectively for web design.
Justus
Justus embraced unconventional methods, using simple materials like cardboard boxes to enhance our project's presentation. He realized that hackathon success isn’t just about code commits; it's also about contributing creatively and fostering effective teamwork, which can be just as critical.
What's next for RackRanger
- More microcontrollers
- Different sensors
- ESP32 boards actually doing something
- asynchronous request handling to enable multiple servers for better redundancy

Log in or sign up for Devpost to join the conversation.