Клиенту требовалась легковесная, но полнофункциональная система для мониторинга состояния собственных Linux-серверов. Цель — в реальном времени отслеживать ключевые метрики (загрузку CPU, использование оперативной памяти, состояние дисков) без использования громоздких коммерческих решений. Система должна была легко разворачиваться, иметь понятный веб-интерфейс для визуализации и допускать дальнейшее расширение функционала.
Спроектировал и реализовал распределенную систему с нуля, разделив её на три ключевых компонента:
Агент на C++: Написал высокоэффективное приложение, которое с заданным интервалом собирает системные метрики с помощью вызовов ядра Linux. Для сетевого взаимодействия использовал библиотеку libcurl. Код написан на современном C++17 с использованием RAII и безопасных паттернов.
Сервер приёма данных на Python: Разработал REST API сервер на фреймворке FastAPI. Сервер принимает данные от агентов в формате JSON, проводит валидацию через Pydantic и сохраняет их в специализированную базу данных временных рядов InfluxDB, оптимизированную для работы с метриками.
Инфраструктура и визуализация: Весь стек (InfluxDB, Grafana для дашбордов, Python сервер) упаковал в Docker-контейнеры и оркестрировал через Docker Compose для максимально простого развертывания одной командой. Настроил готовый дашборд в Grafana для отображения графиков.
Клиент получил готовую к промышленному использованию систему мониторинга. Решение является кроссплатформенным (агент может быть портирован под macOS/Windows), потребляет минимум ресурсов на наблюдаемых серверах и полностью контролируется заказчиком. Вся система разворачивается за несколько минут, предоставляя интуитивно понятный веб-интерфейс с графиками в реальном времени. Архитектура проекта позволяет легко добавлять новые типы собираемых метрик и масштабировать его под нужды растущей инфраструктуры.