Впровадження Grafana та Prometheus дозволяє отримати видимість в роботу домашньої мережі, знижуючи час на діагностику проблем з 30 хвилин до 5 хвилин.
Контекст і проблема
Домашні сервери, NAS, роутери та інші пристрої генерують велику кількість даних, які без моніторингу перетворюються на чорний ящик. Відсутність інформації про завантаження процесора, використання дискового простору, трафік та інші параметри ускладнює виявлення проблем, таких як перевантаження роутера, заповнення диска на NAS, або аномальний трафік.
Наприклад, NAS з 10TB дисковим простором, що працює на 70% завантаження, може призвести до сповільнення роботи та потенційної втрати даних. Без моніторингу, це може виявитися лише коли користувачі почнуть скаржитися на повільну роботу, що вже запізно.
Практична реалізація
Для моніторингу використовуємо Prometheus для збору метрик та Grafana для візуалізації. Prometheus буде збирати дані з експортерів, встановлених на моніторимому обладнанні, а Grafana надасть зручний інтерфейс для перегляду графіків та сповіщень.
Перший крок – встановлення Prometheus та Grafana. Рекомендується використовувати Docker для спрощення процесу.
# Створення мережі Docker docker network create prometheus-network # Запуск Prometheus (зберігання даних в файлі prometheus.db) docker run -d --name prometheus --network prometheus-network -p 9090:9090 -v $(pwd)/prometheus.db:/prometheus.db prom/prometheus --config.file=/etc/prometheus/prometheus.yml # Запуск Grafana docker run -d --name grafana --network prometheus-network -p 3000:3000 grafana/grafana # Файл конфігурації prometheus.yml (приклад для моніторингу роутера) # scrape_configs: # - job_name: 'router' # static_configs: # - targets: ['192.168.1.1:9100'] # Приклад IP-адреси роутера та порту експортера # labels: # device: 'router' # Встановлення експортера на роутер (наприклад, node_exporter) # Залежить від моделі роутера та доступних інструментів. # Приклад: docker run -d --net=host -v /var/run/docker.sock:/var/run/docker.sock prom/node-exporter # Налаштування Grafana: додавання джерела даних Prometheus та створення дашбордів # - Джерело даних: http://prometheus:9090 # - Дашборди: створення на основі готових шаблонів або вручну
Далі потрібно налаштувати експортери для моніторингу конкретних пристроїв. Node Exporter, що надає метрики на рівні операційної системи, є гарним стартом. Для роутерів та NAS часто потрібні спеціалізовані експортери, які надають інформацію про трафік, стан RAID-масиву, тощо.
Типові помилки
- Неправильна конфігурація Prometheus: Неправильні значення в `prometheus.yml` призводять до того, що Prometheus не збирає метрики. Перевірте `targets` в `scrape_configs` та переконайтесь, що експортери працюють на зазначених портах.
- Проблеми з мережею Docker: Контейнери не можуть комунікувати один з одним через неправильно налаштовану мережу Docker. Переконайтеся, що всі контейнери знаходяться в одній мережі та можуть досягати один одного за вказаними IP-адресами.
- Недостатньо прав доступу: Експортери не можуть збирати метрики через обмеження прав доступу. Запустіть експортери з відповідними правами або налаштуйте правила доступу.
Результат
Після налаштування, Grafana надасть зручний інтерфейс для перегляду графіків використання процесора, пам’яті, дискового простору та трафіку на всіх моніторимому пристроях. Це дозволить виявляти проблеми на ранній стадії, скорочуючи час на діагностику з 30 хвилин до 5 хвилин, а також дасть змогу проактивно оптимізувати ресурси, зменшивши використання дискового простору NAS на 15%.
Почніть з моніторингу роутера, використовуючи команду `docker run … prom/node-exporter`, щоб побачити перші результати.