Pulse для Proxmox: установка мониторинга за 15 минут

Pulse для Proxmox: установка мониторинга за 15 минут

Поднял кластер Proxmox. Три ноды, десяток VM, бэкапы на PBS. И ноль видимости — что происходит внутри, узнаёшь только когда пользователи пишут «у нас всё лежит». Знакомо? Мониторинг Proxmox через Pulse закрывает эту дыру одной командой в терминале, без Zabbix, без агентов на каждой ноде, без недели настройки.

Эта статья написана как рабочий рецепт, а не как обзор функций с сайта разработчика. Разберём три способа установки, создание безопасного read-only токена, подключение алертов и реальные ошибки, с которыми сталкиваются при первом запуске — включая ту самую 401, из-за которой половина issue-трекера проекта на GitHub.

Быстрый ответ
Pulse — это бесплатный self-hosted мониторинг для Proxmox VE, PBS и PMG с веб-дашбордом в реальном времени. Разворачивается за один Docker-контейнер или LXC-скрипт, не требует агентов на нодах Proxmox — работает через штатный API. Показывает CPU, RAM, диски, статус бэкапов, ZFS/Ceph и умеет слать алерты в Telegram, Discord, Slack и почту. Ставится за 10-15 минут, конфиг — три файла.

1. Диагноз: почему штатных средств Proxmox не хватает

Веб-интерфейс Proxmox показывает состояние ноды, на которой ты сейчас сидишь. Хочешь глянуть кластер целиком — открывай пять вкладок. Хочешь узнать, что бэкап на PBS не отработал третью ночь подряд — иди и смотри логи руками. Никаких алертов из коробки, никакой истории метрик дольше суток, никакого единого экрана на все ноды.

Штатный график RRD в Proxmox хранит точки с шагом в минуту только за последний час, дальше идёт усреднение, и разовый скачок нагрузки в 3 часа ночи ты просто не увидишь на графике за неделю. А именно ночные скачки и роняют продакшн — днём кто-то что-то поменял, ночью оно выстрелило, и виноватого искать по памяти.

Тут в игру входит поведенческий момент, который касается не только SEO, но и реальной эксплуатации: чем позже ты узнал о проблеме, тем дороже её решение. Алерт в Telegram за 20 минут до полного отказа диска — это плановая замена. Тот же диск, найденный постфактум по жалобам пользователей — это восстановление из бэкапа и разбор полётов с начальством.

Из практики: кластер на три ноды, ZFS-пул на одной из них незаметно уходил в DEGRADED почти неделю. Никто не смотрел — зачем, всё же работает. Работало ровно до момента, пока не отвалился второй диск в зеркале, и тогда работать перестало резко и полностью. Пять минут настройки алерта на статус пула сэкономили бы сутки восстановления из бэкапа. Такие истории и есть причина, почему мониторинг ставят не «когда будет время», а сразу после установки гипервизора.

Дальше в статье:

  • что Pulse умеет и чем отличается от Zabbix и Checkmk
  • три способа установки — LXC-скрипт, Docker, ручной install.sh
  • настройка мониторинг-пользователя и API-токена в Proxmox без лишних прав
  • подключение алертов и push-режима для изолированного PBS
  • разбор реальных ошибок 401/403 при подключении токена
  • чем закрыть мониторинг Docker и Kubernetes рядом с Proxmox

Время на установку — 15 минут. Время на полную настройку с алертами и бэкапом конфига — час, если не отвлекаться на кофе. Хотя кофе всё равно налей, разговор долгий.

2. Причины взяться за Pulse, а не городить Zabbix ради трёх нод

Причина Почему это важно
Нет агентов на гипервизоре Pulse ходит в штатный API Proxmox (порт 8006), ничего не ставится на сами ноды — меньше риска что-то сломать на проде
Установка за одну команду Docker-контейнер или готовый LXC-скрипт из community-scripts — не нужен отдельный сервер под мониторинг-стек
Ресурсы почти не расходует Опрос останавливается, когда нет открытых вкладок с дашбордом — в отличие от Zabbix, который крутится постоянно
Понимает специфику Proxmox Видит кластерное членство, Ceph MON/MGR, статус бэкапов PBS, ZFS-пулы — общий SNMP-мониторинг это либо не покажет, либо покажет криво
Push-режим для изолированного PBS Если PBS сидит за файрволом без входящих соединений, Pulse умеет получать метрики от него, а не только опрашивать
Живое сообщество и частые релизы Проект активно развивается, баги вроде проблем с токенами закрываются за недели, а не годами как в мёртвых форках

Есть нюанс. Pulse — это соло-проект одного разработчика (Richard Courtman), MIT-лицензия, бесплатный self-hosted тир полнофункционален для базового мониторинга. Платный Pulse Pro добавляет AI-патрули и авто-фиксы — для домашнего кластера или небольшого прода это не обязательно.

По цифрам из практики пользователей проекта: инстанс Pulse в LXC на 2 ядрах и полсотни отслеживаемых устройств держится в единицах процентов CPU в простое, рост нагрузки заметен только при большом количестве одновременно открытых вкладок дашборда у разных людей. Для сравнения, Zabbix-сервер с СУБД под капотом на том же количестве хостов обычно требует отдельную VM с 2+ ГБ RAM только под сам сервер, не считая агентов.

Как это устроено изнутри

Бэкенд написан на Go, фронтенд — на SolidJS. Это не праздное любопытство: связка даёт низкое потребление памяти и быстрый холодный старт контейнера — секунды, а не десятки секунд как у стека на Java. Каждая нода Proxmox опрашивается в своей горутине через штатный REST API, без блокировки друг друга: упала связь с одной нодой — остальные продолжают опрашиваться штатно.

Для Docker, Kubernetes и TrueNAS в версии 6 добавили отдельный механизм — лёгкие агенты сами отправляют метрики на Pulse POST-запросом, а не ждут, пока их опросят. Для Proxmox это не нужно: штатного API достаточно, агент на гипервизор ставить не придётся вообще.

Сравнение с ближайшими конкурентами

Критерий Pulse Zabbix Checkmk Grafana+Prometheus
Время на первую установку 10-15 минут 1-2 часа 1-2 часа 2-4 часа
Агент на нодах Proxmox Не нужен, API-only Нужен или SNMP Нужен или API-плагин Нужен exporter
Понимание специфики Proxmox (Ceph, ZFS, PBS) Из коробки Через шаблоны сообщества Через плагины Через сторонний pve-exporter
Ресурсы под сам сервер мониторинга ~512 МБ RAM 2+ ГБ RAM, СУБД отдельно 2+ ГБ RAM 2+ ГБ RAM на три компонента
Мониторинг за пределами Proxmox (Docker, K8s) Есть в v6 Есть, универсальный Есть, универсальный Есть, универсальный
Лицензия / стоимость MIT, бесплатно, Pro — платно Бесплатно (GPL) Есть бесплатная и Enterprise Бесплатно

Ну и запросы у вас — сказала бы база данных Zabbix, если бы её пытались поднять ради мониторинга трёх нод в домашней лаборатории. Для этого масштаба — явный перебор.

Итог по выбору простой. Три-пятнадцать нод, только Proxmox-экосистема, хочется результат за вечер — Pulse. Смешанная инфраструктура с сетевым оборудованием, принтерами и серверами на других гипервизорах вперемешку — универсальный инструмент вроде Zabbix или Checkmk отработает свои деньги и время на внедрение.

3. Рецепт: разворачиваем Pulse и подключаем Proxmox

3.1. Что нужно до старта

Компонент Минимальная версия Комментарий
Proxmox VE 7.0+ Для PBS — версия 2.0+
ОС для самого Pulse Debian 11+ / Ubuntu 22.04+ Подходит отдельная LXC на 512 МБ RAM
Docker (если выбираешь этот способ) 20.10+ Docker Compose — опционально
Сеть Доступ до портов 8006 (PVE API) и 8007 (PBS API)

На момент публикации актуальна версия Pulse v6.1.2. Перед установкой проверь свежие релизы на странице GitHub — проект обновляется часто, и в v6 добавили унифицированный мониторинг Docker, Kubernetes и TrueNAS в одном окне.

Таблица портов

Порт Протокол Назначение Доступен снаружи?
7655 HTTP/HTTPS Веб-интерфейс Pulse Нет, только из локальной сети или через VPN
8006 HTTPS API Proxmox VE, который опрашивает Pulse Нет, только для хоста с Pulse
8007 HTTPS API Proxmox Backup Server Нет, только для хоста с Pulse (или push-режим в обратную сторону)

3.2. Способ A — LXC-контейнер (самый быстрый)

Если у тебя уже есть Proxmox-хост и не хочется поднимать отдельную VM — запускай прямо из консоли Proxmox. Скрипт из community-scripts создаст LXC, поставит Pulse и сразу подскажет следующий шаг.


bash -c "$(wget -qLO - https://github.com/community-scripts/ProxmoxVE/raw/main/ct/pulse.sh)"

Результат: новая LXC-контейнер с работающим Pulse на порту 7655. Скрипт спросит про диск, RAM и CPU — для мониторинга 3-10 нод хватит 1 vCPU и 512 МБ RAM.

3.3. Способ B — Docker (если уже есть Docker-хост)

Не перепутай образ — официальный называется rcourtman/pulse, без кириллицы и лишних форков.


docker run -d \
  --name pulse \
  -p 7655:7655 \
  -v pulse_data:/data \
  --restart unless-stopped \
  rcourtman/pulse:latest

Хочешь сразу задать логин и пароль без экрана первичной настройки — добавь переменные окружения:


docker run -d \
  --name pulse \
  -p 7655:7655 \
  -v pulse_data:/data \
  -e PULSE_AUTH_USER="admin" \
  -e PULSE_AUTH_PASS="СложныйПароль123" \
  --restart unless-stopped \
  rcourtman/pulse:latest

Результат: контейнер поднят, docker ps показывает статус Up, порт 7655 слушает.

Если предпочитаешь Docker Compose — не переписывай команду руками каждый раз при обновлении, держи конфиг в файле:


services:
  pulse:
    image: rcourtman/pulse:latest
    container_name: pulse
    restart: unless-stopped
    ports:
      - "7655:7655"
    volumes:
      - pulse_data:/data
    environment:
      - PULSE_AUTH_USER=admin
      - PULSE_AUTH_PASS=СложныйПароль123

volumes:
  pulse_data:

docker compose up -d

Результат: та же одна строка в логах при старте, но обновление теперь — это docker compose pull && docker compose up -d, без переписывания флагов вручную.

3.4. Способ C — ручная установка (для существующей VM/LXC)


curl -fsSL https://raw.githubusercontent.com/rcourtman/Pulse/main/install.sh | sudo bash

Скрипт сам определит систему, поставит systemd-юнит и запустит сервис. Дальше открывай http://IP-сервера:7655 в браузере — увидишь мастер первичной настройки.

Этот способ выбирай, если у тебя уже есть выделенная VM или LXC под служебные сервисы и не хочется тащить туда Docker ради одного контейнера. Из минусов — обновления придётся гонять тем же install.sh вручную, Docker в этом смысле немного удобнее для CI/CD-подхода к апдейтам.

Какой из трёх способов выбрать? Если Proxmox один и мониторинг нужен «здесь и сейчас» — LXC-скрипт из способа A. Если уже есть Docker-хост под другие сервисы — способ B, туда же в Compose. Способ C — для тех, кто принципиально не любит контейнеры и держит всё голыми systemd-юнитами.

3.5. Создаём отдельного пользователя для мониторинга в Proxmox

Вот тут важно не полениться. Root-токен с полным доступом — это удобно ровно до первого инцидента с утечкой конфига. Заводи отдельного read-only пользователя.


# Пользователь в realm pve (не pam - чтобы не плодить системных юзеров)
pveum user add pulse-monitor@pve --comment "Read-only monitoring for Pulse"

# Роль на основе PVEAuditor - Pulse хватает только чтения
pveum aclmod / -user pulse-monitor@pve -role PVEAuditor

# Токен БЕЗ privilege separation - иначе токен получит пустые права
pveum user token add pulse-monitor@pve pulse-token --privsep 0

Результат последней команды — вывод с полем value, это и есть секрет токена. Скопируй сразу, второй раз Proxmox его не покажет.

Не перепутай privsep
Самая частая причина ошибки 401 при первом подключении — токен создан с privilege separation по умолчанию. У токена тогда свой пустой набор прав, независимый от прав пользователя. Флаг —privsep 0 обязателен, если не настраиваешь права на токен отдельно.

Почему именно PVEAuditor, а не что-то шире? Роль даёт доступ на чтение ко всему, что нужно мониторингу: статусы нод, VM, контейнеров, хранилищ, задач бэкапа. Прав на запуск, остановку или изменение конфигурации у неё нет физически — даже если токен утечёт, максимум что получит атакующий это список твоей инфраструктуры, а не рычаг для её поломки. Для мониторинга это ровно тот минимум привилегий, который нужен и не больше.

3.6. Подключаем ноду Proxmox в веб-интерфейсе Pulse

Открывай Pulse → Settings → Add Node → Proxmox VE и заполняй поля: адрес хоста с портом 8006, имя пользователя в формате pulse-monitor@pve!pulse-token, и значение токена. Отдельно — если ноды в кластере, Pulse обнаружит остальные автоматически после подключения первой.

%%{init: {
  'theme': 'base',
  'themeVariables': {
    'primaryColor': '#ffffff',
    'primaryTextColor': '#1e293b',
    'primaryBorderColor': '#94a3b8',
    'lineColor': '#64748b',
    'fontSize': '15px',
    'fontFamily': 'ui-sans-serif, system-ui, sans-serif'
  },
  'flowchart': {'curve': 'linear', 'nodeSpacing': 50, 'rankSpacing': 50}
}}%%
flowchart TD
    A["Proxmox VE нода"] --> B["API порт 8006"]
    C["Proxmox Backup Server"] --> D["API порт 8007"]
    B --> E["Pulse сервер"]
    D --> E
    E --> F["Веб-дашборд 7655"]
    E --> G["Алерты Telegram Discord Email"]
    style A fill:#f8fafc,stroke:#3b82f6,stroke-width:2px,color:#1e40af
    style C fill:#f8fafc,stroke:#3b82f6,stroke-width:2px,color:#1e40af
    style E fill:#f8fafc,stroke:#22c55e,stroke-width:2px,color:#15803d
    style G fill:#f8fafc,stroke:#f97316,stroke-width:2px,color:#c2410c

Для изолированного PBS без входящих соединений есть push-режим: PBS сам присылает метрики на Pulse по расписанию, входящий доступ на 8007 не нужен вообще. Настраивается отдельным ключом в разделе PBS → Push Mode документации проекта.

Вот как выглядит цикл опроса на уровне протокола — полезно держать в голове, когда разбираешь логи и не понимаешь, откуда взялась задержка в дашборде:

%%{init: {
  'theme': 'base',
  'themeVariables': {
    'primaryColor': '#f8fafc',
    'primaryTextColor': '#1e293b',
    'primaryBorderColor': '#94a3b8',
    'noteBkgColor': '#fefce8',
    'noteTextColor': '#713f12',
    'noteBorderColor': '#fbbf24',
    'actorBkg': '#f8fafc',
    'actorBorder': '#94a3b8',
    'actorTextColor': '#1e293b',
    'fontSize': '15px',
    'fontFamily': 'ui-sans-serif, system-ui, sans-serif'
  },
  'sequence': {
    'mirrorActors': false,
    'messageAlign': 'center',
    'actorMargin': 120,
    'width': 160,
    'noteMargin': 12
  }
}}%%
sequenceDiagram
    participant U as Браузер
    participant P as Pulse сервер
    participant N as Proxmox нода
    U->>P: Открыл дашборд
    P->>N: Запрос по API токену
    N->>P: JSON со статусом и метриками
    P->>U: Обновление графиков
    Note over P,N: Опрос останавливается без открытых вкладок

Что появится на дашборде после подключения

Сразу после первого успешного опроса на главном экране Pulse появляются карточки по каждой ноде: загрузка CPU, использование RAM, состояние дисков и уже смонтированных хранилищ. Отдельная вкладка сводит все VM и LXC-контейнеры кластера в один список с фильтром по статусу — running, stopped, paused — и по ноде, на которой они крутятся.

Вкладка Storage показывает не только процент заполнения, но и тип хранилища — ZFS, LVM-thin, директория — с отдельным индикатором для ZFS-пулов: ONLINE, DEGRADED, FAULTED. Именно этот индикатор и не даст повторить историю про неделю в DEGRADED из раздела диагноза выше.

Вкладка Backups подтягивает задачи из PBS или встроенного vzdump и показывает время последнего успешного запуска по каждой VM отдельно. Если бэкап конкретной машины не отрабатывал дольше заданного порога — карточка подсвечивается, и по ней же настраивается алерт из раздела про уведомления ниже.

Вкладка дашборда Что показывает На что смотреть в первую очередь
Nodes CPU, RAM, load average, температура (если доступна) Устойчивый рост load average без соответствующего роста CPU — признак I/O-ожидания
Guests (VM/LXC) Статус, потребление ресурсов, нода размещения Гости в статусе paused дольше нескольких минут — обычно забытая миграция
Storage Заполнение, тип, состояние ZFS/Ceph Статус DEGRADED или заполнение выше 85%
Backups Время последнего успешного/неуспешного job Возраст последнего успешного бэкапа больше суток

3.7. HTTPS через reverse proxy

Штатный веб-интерфейс Pulse отдаёт HTTP на 7655. Если планируешь заходить не только из локальной сети — повесь nginx с сертификатом впереди, не открывай 7655 напрямую наружу.


server {
    listen 443 ssl;
    server_name pulse.example.local;

    ssl_certificate     /etc/letsencrypt/live/pulse.example.local/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/pulse.example.local/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:7655;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

Заголовки Upgrade и Connection нужны обязательно — дашборд Pulse держит вебсокет для живого обновления метрик, без них графики будут замирать и обновляться только по F5.

3.8. Тюнинг интервала опроса и хранения истории

По умолчанию Pulse опрашивает ноды каждые несколько секунд, пока открыт хотя бы один клиент дашборда. Для трёх-пяти нод это ни на что не влияет. Для кластера в 20+ нод с сотнями VM разумно увеличить интервал и ограничить глубину хранения истории — иначе диск под /data начнёт расти быстрее, чем ты успеешь настроить ротацию.


# Settings -> General -> Polling & Storage
polling_interval_seconds: 15
metrics_retention_days: 30

Результат: меньше нагрузка на API Proxmox от постоянных запросов, дашборд обновляется чуть реже, зато сервер под Pulse не упирается в диск через месяц эксплуатации. Баланс простой: чем крупнее кластер, тем длиннее интервал — секундная точность нужна на пяти нодах, а не на пятидесяти.

3.9. Настройка алертов

Settings → Notifications → добавляешь канал. Поддерживаются Telegram, Discord, Slack, email и вебхуки. Порог по CPU/RAM/диску задаётся в процентах, порог по бэкапам — в часах с момента последнего успешного job.


# Пример настройки алерта в конфиге Pulse (Settings -> Alerts)
threshold_cpu_percent: 90
threshold_memory_percent: 85
threshold_disk_percent: 90
backup_stale_hours: 26
notify_channels: [telegram, email]

4. Проверка: убеждаемся что мониторинг реально работает


# Статус сервиса при ручной установке
systemctl status pulse

# Статус контейнера при установке через Docker
docker ps --filter name=pulse

# Логи, если что-то не так
docker logs -f pulse
# или
journalctl -u pulse -f

# Проверка что API Proxmox отвечает на токен
curl -k -H "Authorization: PVEAPIToken=pulse-monitor@pve!pulse-token=ТВОЙ-СЕКРЕТ" \
  https://IP-ноды:8006/api2/json/nodes

Если последняя команда вернула JSON со списком нод, а не ошибку — токен рабочий, дальше проблема если что уже на стороне Pulse, не Proxmox. Открой дашборд, нода должна появиться в списке за 10-30 секунд после первого опроса.

5. Осложнения: разбор реальных ошибок

Ошибка Причина Решение
401 Unauthorized при добавлении ноды Токен создан с privilege separation, у него пустые права Пересоздай токен с флагом —privsep 0, либо назначь права токену отдельно через ACL
403 Permission check failed на /nodes/…/status Роль назначена не на корневой путь /, а на конкретный узел без propagate Выполни pveum aclmod / -user pulse-monitor@pve -role PVEAuditor на корень дерева
Нода «unreachable» в логах Pulse Файрвол блокирует порт 8006 между хостом Pulse и Proxmox Проверь curl -k https://IP:8006 с хоста Pulse, открой порт в UFW/iptables
Самоподписанный сертификат рвёт соединение Proxmox по умолчанию ставит self-signed сертификат В настройках ноды в Pulse включи «Skip TLS verification» или подставь свой сертификат
Высокая нагрузка CPU от Pulse на слабом хосте Открыто много вкладок дашборда, включён polling с коротким интервалом Увеличь интервал опроса в Settings → Polling, закрывай неиспользуемые вкладки
Pulse спамит системный лог Proxmox Известное поведение при частом опросе API — фиксируется в syslog каждой ноды Обнови до последней стабильной версии, за последние релизы это заметно поправили
Токен для одного кластера не работает на другом Каждая независимая установка Proxmox требует свой токен Создавай отдельный токен под каждый кластер, для нод внутри одного кластера токен реплицируется сам
Графики в дашборде не двигаются без перезагрузки страницы Reverse proxy не пробрасывает вебсокет-заголовки Upgrade/Connection Добавь proxy_set_header Upgrade и Connection «upgrade» в конфиг nginx, как в примере выше
После обновления Pulse не стартует, в логах ошибка миграции данных Обновление пропустило промежуточную мажорную версию Ставь версии по порядку через —version в install.sh, не перепрыгивай через v5 сразу на v6, если долго не обновлялся
Автоустановочный скрипт токена падает с «400 too many arguments Известный баг мастера быстрой настройки в некоторых версиях при автогенерации токена Создай пользователя и токен вручную через pveum, как показано в разделе 3.5, и вбей значения в форму Pulse руками

Восстановление после сбоя

Если хост с Pulse умер целиком — подними новый контейнер или LXC той же версии, разверни туда volume/каталог /data из бэкапа и запусти сервис. Настройки нод, токены и история алертов восстановятся, повторно вводить токены Proxmox не придётся.


# Восстановление volume из архива для Docker-инсталляции
docker volume create pulse_data
docker run --rm -v pulse_data:/data -v $(pwd):/backup alpine \
  tar xzf /backup/pulse-backup-2026-07-30.tar.gz -C /data
docker compose up -d

Бэкап, который ни разу не восстанавливали — это не бэкап, это красивый файл на диске, в существование которого ты веришь на слово. Раз в квартал подними тестовый контейнер на отдельном порту и разверни в него архив — убедишься, что восстановление реально работает, а не просто складывается в архив годами без проверки.

Для домашней лаборатории есть отдельный вариант установки — аддон Home Assistant. Если у тебя уже крутится Home Assistant рядом с Proxmox, Pulse Server и Pulse Agent можно поднять как его аддоны, без отдельной VM или LXC под мониторинг. Для прод-окружения такой вариант не рекомендую — изоляция и обновления аддонов Home Assistant устроены не так строго, как у отдельного сервиса.

Всё не так плохо как кажется по этой таблице. На практике 90% проблем — это privsep у токена. Один флаг чинит почти всё.

6. Альтернативы: когда Pulse — не твой вариант

  • Zabbix — тяжелее в настройке, зато мониторит вообще всё в инфраструктуре, не только Proxmox. Бери, если у тебя уже есть Zabbix-сервер и нужно добавить пару нод, а не разворачивать отдельный стек.
  • Checkmk — похожая история: избыточен для трёх нод, но силён если нужен единый мониторинг на сотни хостов вперемешку с сетевым оборудованием.
  • Grafana + Prometheus + pve-exporter — гибче по визуализации и хранению истории, но собирать стек из трёх компонентов ради красивых графиков оправдано только если Grafana у тебя и так стоит под другие задачи.
  • Proxmox Datacenter Manager (PDM) — официальный инструмент от самого Proxmox для управления несколькими кластерами. Хорош как замена веб-интерфейса и умеет удалённо управлять нодами разных кластеров из одной точки, но алертов и глубины метрик как в Pulse там пока меньше — это скорее панель управления, чем система наблюдения.
  • Netdata — если хочется мониторить не только Proxmox, а метрики ОС на глубоком уровне на каждой ноде: контекст-свитчи, интерапты, детальную разбивку по процессам. Но это агент на каждый хост, а не read-only через API, и придётся ставить его на каждую ноду отдельно, включая гипервизор.

Ничто не мешает совмещать инструменты: Pulse — как быстрый обзорный дашборд и источник алертов по инфраструктуре Proxmox, а Zabbix или Grafana — как единая точка мониторинга для всей компании, куда Pulse при желании прокидывает метрики через вебхук. Так делают, когда мониторинг уже был построен под другие системы, а Proxmox добавился в инфраструктуру позже.

Если кластер маленький, а API Proxmox — твой единственный источник данных, Pulse выигрывает по соотношению «сколько времени потратил — сколько пользы получил». Для энтерпрайза с сотней хостов разного типа — смотри в сторону Zabbix или Checkmk.

Отдельно скажу про встроенный Proxmox Backup Server. Он и сам умеет слать уведомления о неудачных задачах — но только про себя, и только по email. Если тебе нужен единый экран с состоянием нод, VM и бэкапов одновременно, штатных писем PBS недостаточно — придётся всё равно смотреть в отдельный дашборд.

Free-тир Pulse против Pulse Pro

Функция Self-hosted (бесплатно) Pulse Pro
Мониторинг PVE/PBS/PMG в реальном времени Да Да
Алерты в Telegram/Discord/Slack/Email Да Да
Push-режим для изолированного PBS Да Да
Мониторинг Docker/Kubernetes/TrueNAS/vSphere Да Да
AI-патрули (Pulse Patrol) и автофиксы Ограничено / через собственный ключ провайдера Расширенный анализ и Auto-Fix
Долгая история метрик и продвинутая аналитика Базовая Расширенная

Для домашней лаборатории или небольшого прода бесплатного тира хватает с запасом. Pro имеет смысл там, где мониторинг превращается в отдельную задачу с SLA и нужен автоматический разбор инцидентов без участия человека.

7. Профилактика: чтобы не чинить это в 3 ночи

Мониторинг самого Pulse

Да, тому кто мониторит — тоже нужен мониторинг. Добавь Pulse в проверку через cron или внешний uptime-сервис: пинг на порт 7655 раз в 5 минут.


# Простая проверка доступности, кидай в cron
curl -sf http://127.0.0.1:7655/api/health || echo "Pulse недоступен" | mail -s "ALERT: Pulse down" ты@почта.ru

Резервное копирование конфига

Что бэкапить Как часто Куда
Каталог /data (Docker volume pulse_data) Раз в сутки Отдельное хранилище, не тот же диск что у Pulse
Список токенов и учётных данных После каждого изменения Менеджер паролей, не текстовый файл на рабочем столе
Конфиг алертов (Settings → Export) Раз в неделю или перед апдейтом Git-репозиторий или S3-бакет

# Бэкап volume для Docker-инсталляции
docker run --rm -v pulse_data:/data -v $(pwd):/backup alpine \
  tar czf /backup/pulse-backup-$(date +%F).tar.gz -C /data .

Автозапуск

При Docker — флаг --restart unless-stopped уже в команде установки выше, этого достаточно. При ручной установке через install.sh проверь что юнит включён:


systemctl enable pulse
systemctl is-enabled pulse

Безопасность

Мониторинг сам по себе — привлекательная цель для атаки: он видит всю инфраструктуру сразу, и токен от него потенциально открывает read-доступ ко всему кластеру. Относись к хосту с Pulse так же серьёзно, как к самим гипервизорам.

  • UFW — открывай 7655 только для доверенной подсети, наружу не публикуй без VPN или reverse-proxy с аутентификацией
  • fail2ban — если веб-интерфейс всё же смотрит наружу, повесь jail на форму логина, чтобы перебор пароля упирался в бан по IP после нескольких попыток
  • SSH hardening на хосте с Pulse — отключи пароль-логин, оставь только ключи, поменяй порт если это единственная линия обороны от automated-сканеров
  • Отдельный read-only пользователь в Proxmox для каждого источника мониторинга, никогда не root-токен — роль PVEAuditor физически не может ничего сломать, даже если токен утечёт
  • Резервные копии токенов и конфига — вынесены за пределы самого хоста Pulse, иначе потеряешь и данные, и способ их восстановить одним и тем же инцидентом
  • Ограничение по IP на уровне файрвола Proxmox для порта 8006, если Pulse сидит на статическом адресе — лишний барьер даже при утечке валидного токена

# Пример правила UFW: пускать 7655 только из локальной подсети
ufw allow from 192.168.1.0/24 to any port 7655 proto tcp
ufw deny 7655

Капля никотина убивает лошадь. Один открытый наружу дашборд мониторинга без пароля — весь периметр компании.

Обновление


# Docker
docker pull rcourtman/pulse:latest
docker stop pulse && docker rm pulse
# дальше повторяешь docker run с теми же volume и переменными

# Ручная установка / LXC
curl -fsSL https://raw.githubusercontent.com/rcourtman/Pulse/main/install.sh | bash

Перед обновлением — бэкап volume/данных, описанный выше. Откатиться при неудаче: для Docker поднять контейнер со старым тегом версии из Releases, для ручной установки — переустановить конкретную версию флагом --version у install.sh.

8. FAQ

Почему Pulse не подключается к Proxmox после настройки?

В девяти случаях из десяти дело в токене — либо включена privilege separation и у токена пустые права, либо роль назначена не на корневой путь /. Проверь оба пункта командой pveum acl list и пересоздай токен с —privsep 0.

Как проверить что мониторинг Proxmox через Pulse работает правильно?

Открой дашборд Pulse — нода должна показывать актуальные CPU, RAM и статус за последние 30 секунд. Дополнительно проверь через curl с ручным запросом к API Proxmox с тем же токеном — если JSON приходит, проблема не в правах, а в самом Pulse.

Что делать если Pulse грузит CPU на слабом сервере?

Увеличь интервал опроса в настройках, закрой лишние открытые вкладки дашборда — Pulse снижает частоту polling, когда нет активных клиентов, но при постоянно открытых вкладках в нескольких браузерах нагрузка растёт пропорционально.

Чем Pulse отличается от Zabbix для мониторинга Proxmox?

Pulse заточен именно под Proxmox-экосистему — понимает Ceph, ZFS, статус бэкапов PBS из коробки и разворачивается за одну команду. Zabbix универсальнее и мониторит любую инфраструктуру, но требует отдельного сервера, базы данных и куда больше настройки под задачу с нуля.

Можно ли мониторить несколько кластеров Proxmox одним Pulse?

Да, добавляй ноды каждого кластера отдельно через Settings → Add Node, у каждого независимого кластера свой токен. Внутри одного кластера достаточно подключить одну ноду — остальные Pulse обнаружит сам через членство в кластере.

Нужен ли агент на нодах Proxmox для работы Pulse?

Нет, для мониторинга самого Proxmox VE и PBS агент не требуется — Pulse ходит через штатный REST API по токену. Агенты нужны только если дополнительно подключаешь Docker-хосты, Kubernetes или хочешь снять данные SMART/температуры изнутри гостевых систем.

Можно ли использовать Pulse бесплатно для коммерческого проекта?

Да, self-hosted версия распространяется по лицензии MIT и полнофункциональна для базового мониторинга без ограничений по количеству нод. Платный Pulse Pro — это отдельный слой AI-функций и расширенной аналитики, а не условие для коммерческого использования базовой версии.

Как перенести настройки Pulse на новый сервер?

Забэкапь каталог /data (или Docker volume pulse_data) как описано в разделе профилактики, разверни Pulse той же версии на новом хосте, распакуй архив в volume и запусти сервис — токены нод и конфиг алертов подтянутся автоматически, повторно вводить ничего не придётся.

Как часто выходят обновления Pulse и обязательно ли их ставить сразу?

Проект развивается активно, патч-релизы выходят с интервалом в недели. Ставить в день релиза не обязательно, но раз в месяц-два проверять changelog стоит — там же закрывают проблемы вроде избыточного спама в syslog нод и уточняют работу с API-токенами, о которых шла речь в разделе про ошибки.

8.1. Отдельно про Proxmox Mail Gateway

Если в инфраструктуре крутится ещё и PMG — Pulse подключает его тем же способом, что и PVE: read-only пользователь, токен без privilege separation, добавление ноды через тот же мастер в Settings. На дашборде PMG появится отдельной вкладкой с очередью писем, статистикой спам-фильтра и статусом самого сервиса — не нужно заводить для почтового шлюза отдельный инструмент мониторинга только потому, что это не гипервизор.

9. Прогноз

После установки у тебя есть живой дашборд по всем нодам Proxmox, алерты в Telegram при падении бэкапа или переполнении диска, и история метрик вместо разовых снимков. Больше не нужно открывать пять вкладок веб-интерфейса, чтобы понять что происходит в кластере целиком.

Дальше — дело техники: подключи PBS через push-режим если он изолирован, настрой пороги под свою нагрузку и не забывай про бэкап конфига перед каждым апдейтом. Кластер вырастет с трёх нод до тридцати — Pulse тот же самый, меняется только интервал опроса и глубина хранения истории, архитектуру переделывать не придётся.

Если рядом с Proxmox крутится ещё и Docker-хост или кластер Kubernetes — не плоди отдельные системы мониторинга под каждый тип инфраструктуры, версия 6 сводит всё в один дашборд. Меньше вкладок в браузере — меньше шанс пропустить алерт среди вкладок с котиками.

Рождённый в домашней лаборатории — продакшна не боится. Проверено на кластерах от трёх нод в гараже до полусотни на арендованных стойках: рецепт из этой статьи один и тот же, разница только в интервале опроса и количестве кофе, выпитого во время настройки. Если что-то не завелось — пиши в комментарии, разберёмся.

Андрей А.
Author: Андрей А.

Руководитель ИТ / Кризис-менеджер 25 лет в IT: от инженера в МегаФоне до руководителя отдела. Знаю, как выглядит бардак: нестабильные сети, устаревшая инфраструктура, конфликты в команде, раздутые сроки. Помогаю бизнесу выходить из кризиса: навожу порядок в легаси, стабилизирую то, что разваливается, выстраиваю прогнозируемые процессы. Не раз возвращал к жизни ИТ-структуры — знаю цену хаосу. 📍 Ищу проект для полной реорганизации / стабилизации. 📬 Telegram: @over_dude ✉️ mail@it-apteka.com

Оставайтесь на связи

Рецепты от IT-боли. Без воды, без рекламы, без маркетинговой шелухи.

Подписаться на IT-Аптеку →

Мы ВКонтакте

IT-Аптека — советы, новости и помощь рядом.

Вступить в группу ВКонтакте →
Поделитесь:

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх