Мониторинг на Proxmox LXC контейнери с един скрипт

Управлението на множество LXC контейнери в Proxmox може да бъде предизвикателство, особено когато искате да следите тяхното състояние, производителност и ресурси в реално време. В тази статия представям две автоматизирани решения, които опростяват процеса и ви дават професионален мониторинг stack за минути.
Архитектура на решението
Решението се състои от два скрипта, които работят заедно:
Скрипт 1: Централен мониторинг контейнер
Първият скрипт създава пълна мониторинг инфраструктура в отделен LXC контейнер (препоръчително Ubuntu/Debian). Той автоматично инсталира и конфигурира:
Основни компоненти:
- Prometheus – система за събиране и съхранение на метрики
- Node Exporter – експортиране на системни метрики
- Blackbox Exporter – мониторинг на HTTP/TCP/ICMP endpoints
- Alertmanager – управление и изпращане на алерти
- Grafana – визуализация на данни с готови dashboards
Автоматични функции:
- Създаване на системни потребители с правилни права
- Конфигуриране на Prometheus за автоматично откриване на контейнери
- Настройка на Telegram нотификации за алерти
- Инсталиране на готови Grafana dashboards за визуализация
- Systemd сервизи за автоматично стартиране при рестарт
Alert правила включват:
- Контейнер е DOWN (недостъпен)
- Високо CPU натоварване (>80%)
- Високо RAM използване (>80%)
- Малко дисково пространство (<20%)
- Високо системно натоварване (Load Average)
- Мрежови грешки
По време на инсталацията скриптът иска Telegram Bot Token и Chat ID, за да може да изпраща известия директно в Telegram. След приключване на инсталацията, автоматично се изпраща тестов alert за потвърждение на работата.
Бонус функция: Скриптът създава helper команда add-lxc-container, която позволява бързо добавяне на нови контейнери към мониторинга с една команда.
Скрипт 2: Node Exporter за LXC контейнери
Вторият скрипт е лек и минималистичен – предназначен за инсталация във всеки LXC контейнер, който искате да следите. Той:
Какво прави:
- Инсталира само Node Exporter (около 15MB RAM overhead)
- Създава systemd сервиз за автоматично стартиране
- Експортира метрики на порт 9100
- Работи в background без да пречи на основните приложения
След инсталацията: Скриптът показва точно какво трябва да направите за да добавите контейнера към централния Prometheus – или с готовата add-lxc-container команда, или ръчно редактиране на конфигурацията.
Какво можете да следите?
След инсталация и конфигурация, имате достъп до богата информация за всеки контейнер:
Системни ресурси:
- CPU използване в реално време и исторически данни
- RAM използване – общо, използвано, налично
- Дисково пространство и I/O операции
- Network трафик – входящ/изходящ
Производителност:
- Load Average (1, 5, 15 минути)
- Disk IOPS (четене/писане операции)
- Open File Descriptors
- Running/Blocked процеси
Мрежа:
- Трафик по интерфейси
- Мрежови грешки
- Packets dropped
Статус и uptime:
- Контейнер UP/DOWN статус
- Време от последен рестарт
- Активни алерти
Custom Grafana Dashboard
Скриптът включва специално проектиран dashboard "Fedya's LXC Monitoring Dashboard", който показва:
- Pie chart с UP/DOWN статус на всички контейнери
- Обобщена статистика – общо контейнери, средно CPU/RAM, мрежов трафик
- Детайлна таблица с всички метрики за всеки контейнер
- Графики за CPU, RAM, Network, Disk за последния час
- Gauge meters за дисково пространство
- Uptime информация
Dashboard-ът автоматично се обновява на всеки 30 секунди и включва threshold линии за бързо идентифициране на проблеми.
Telegram интеграция
Една от най-полезните функции е директната интеграция с Telegram. Когато възникне проблем, получавате форматирано известие с:
- Име на алерта и severity (critical/warning/info)
- Засегнат контейнер и IP адрес
- Детайлно описание на проблема
- Timestamp на случването
Примерни алерти:
- "⚠️ LXC контейнер Web Server е DOWN"
- "🔥 Високо CPU натоварване – 85% на Database Server"
- "💾 Високо RAM използване – 92% на App Container"
Предимства на решението
Бързо deployment: От нула до пълен мониторинг за под 5 минути
Централизирано управление: Всички данни на едно място в Grafana
Минимален overhead: Node Exporter използва около 15MB RAM на контейнер
Изолация: Мониторинг инфраструктурата е в отделен контейнер
Лесно мащабиране: Добавяне на нов контейнер за мониторинг = 1 команда
Production-ready: Всички компоненти са industry standard инструменти
Автоматични алерти: Не се налага да проверявате ръчно – Telegram ви известява
Визуална яснота: Графиките показват тенденции и помагат за capacity planning
Системни изисквания
За мониторинг контейнера:
- Ubuntu/Debian LXC контейнер
- Минимум 1GB RAM (препоръчително 2GB)
- 10GB дисково пространство
- Internet връзка за изтегляне на компонентите
За следени контейнери:
- Всяка Linux дистрибуция
- 50MB допълнителна RAM за Node Exporter
- Достъп до мониторинг контейнера на порт 9100
Използване
След инсталация, просто отворете браузър и навигирайте до:
Grafana: http://monitoring-ip:3000
Prometheus: http://monitoring-ip:9090
Alertmanager: http://monitoring-ip:9093
Първоначалните credentials за Grafana са:
- Username:
admin - Password:
admin
Заключение
Автоматизираният мониторинг на Proxmox LXC контейнери вече не е сложна задача. С тези два скрипта получавате професионално решение, което работи "out of the box" и предоставя всичко необходимо за ефективно управление на вашата инфраструктура.
Независимо дали управлявате 3 или 30 контейнера, ще имате пълна видимост върху тяхното състояние, ще получавате навременни алерти за проблеми и ще можете да вземате информирани решения базирани на реални данни.
Изтегляне
Скриптовете могат да се свалят от тук:
📥 Скрипт 1: Monitoring Stack Setup
📥 Скрипт 2: Node Exporter Install
📊 Бонус: Fedya's LXC Dashboard JSON
Инсталация
Как да го използваш:
1️⃣ В мониторинг контейнера (Ubuntu LXC):
chmod +x monitoring-setup.sh
sudo ./monitoring-setup.sh2️⃣ В другите LXC контейнери, които искаш да следиш:
Използвате лекия скрипт за Node Exporter в другите контейнери!
Как работи цялата система:
📦 Контейнер 1: Мониторинг
- Prometheus + Grafana + Alertmanager
- Събира данни от всички контейнери
📦 Контейнер 2, 3, 4… (всички останали LXC контейнери)
- Само Node Exporter (минимален overhead)
- Изпраща метрики към мониторинг контейнера
🎯 Процедура за добавяне на нов контейнер:
Стъпка 1: В новия LXC контейнер
# Копирай скрипта
nano install-node-exporter.sh
# Вмъкни скрипта, запази и затвори
# Направи го изпълним
chmod +x install-node-exporter.sh
# Стартирай
sudo ./install-node-exporter.shСкриптът автоматично ще покаже IP и hostname на контейнера! ✅
Стъпка 2: В мониторинг контейнера
# Автоматично добавяне (лесен начин)
add-lxc-container 10.0.0.101 'Web Server'
# ИЛИ ръчно редактиране (ако предпочиташ)
nano /etc/prometheus/prometheus.yml
# Добави контейнера в секцията lxc-containers
systemctl restart prometheusСподелете и помогнете на други:
Ако статията ви е била полезна, споделете я с колеги, които също управляват Proxmox инфраструктура!



