Proxmox Datacenter Manager
Консоль, объединяющая несколько кластеров Proxmox VE и серверов Proxmox Backup Server: до каких экземпляров она дотягивается, вся инфраструктура с первого взгляда, задачи, завершившиеся ошибкой где бы то ни было, и состояние самой консоли.
Один монитор на всю инфраструктуру или по монитору на кластер?
Заголовок раздела «Один монитор на всю инфраструктуру или по монитору на кластер?»Монитор Datacenter Manager не заменяет мониторы Proxmox VE и Proxmox Backup Server. Он отвечает на другой вопрос.
| Монитор Datacenter Manager | Один монитор на кластер и на сервер резервного копирования | |
|---|---|---|
| Мониторов для создания | один | по одному на кластер, по одному на сервер резервного копирования |
| Учётных данных для управления | один токен, на консоли | по одному токену на экземпляр |
| Нагрузка на каждый кластер | нулевая с нашей стороны: мы читаем собственный кэш консоли | один опрос за интервал на кластер |
| Что вы получаете | доступность, версия, количество гостей и узлов, итоги по CPU, памяти и хранилищу, неудачные задачи | всё это плюс гости по отдельности, снапшоты, задания резервного копирования, HA, Ceph, репликация, диски и SMART, пулы ZFS, 30-дневный календарь резервных копий |
| Чего вы не получите | серии по каждому гостю, детали по каждому хранилищу данных, диски, снапшоты, логи задач | единый итог по всей инфраструктуре |
| Главный отказ | консоль не может достучаться до экземпляра | кластер не отвечает нам |
Наша рекомендация. Добавляйте монитор Datacenter Manager, когда у вас уже есть консоль и нужна одна страница, которая говорит, цела ли инфраструктура — это самый дешёвый способ заметить, что удалённая площадка отвалилась, и он ничего не стоит кластерам. Добавляйте отдельный монитор для каждого кластера и сервера резервного копирования, которыми вы действительно управляете: именно там глубина, и именно он скажет, какая ВМ остановилась или какая резервная копия не удалась. Они пересекаются, но не конфликтуют; неудачная резервная копия тогда вызывает одно оповещение от монитора PBS (с логом задачи) и одно от консоли (с названием экземпляра). Отключите правило консоли для задач, если считаете это избыточным, или ограничьте его экземплярами, для которых у вас нет отдельного монитора.
Если консоли у вас нет вообще, не устанавливайте её только ради мониторинга: отдельные мониторы видят строго больше.
Страница монитора
Заголовок раздела «Страница монитора»Помимо общих графиков, монитор Datacenter Manager показывает три панели, которые читаются из сохранённых опросом данных — открытие страницы не обращается ни к консоли, ни к управляемым ею кластерам:
- Federated instances — полоса итогов по инфраструктуре (экземпляры, узлы онлайн, гости запущенные и остановленные, ядра, память, хранилище), затем одна строка на каждый федеративный экземпляр. Сначала идут экземпляры, до которых консоль не дотягивается, затем с неудачными задачами, затем отстающие по версии. Каждая строка содержит продукт (Proxmox VE или Backup Server), версию, количество узлов и гостей, использование памяти и хранилища, состояние подписки, настроенный адрес, когда консоль последний раз собирала с него данные — и, при ошибке, сообщение, полученное самой консолью. Это сообщение — единственное, что объясняет сбой, поэтому оно показывается дословно.
- Failures — каждая задача, завершившаяся ошибкой по всей инфраструктуре за последние 14 дней, сначала новые, с экземпляром, на котором она выполнялась, типом задачи, временем запуска, длительностью и сообщением об ошибке. Сам лог задачи остаётся на экземпляре: откройте его там или добавьте этот кластер как отдельный монитор, где Show log его загружает.
- Console host — машина, на которой работает консоль: CPU, память, корневая
файловая система, аптайм и ядро, её сертификаты с числом дней до истечения,
пакеты, ожидающие обновления, и статус подписки управляемых узлов. Вся панель
необязательна: токен без
Sys.Auditничего из этого не прочитает, и панель сообщит об этом, а не покажет нули.
История задач хранится в SQLite (pdm_task_history, 19 дней, не более 5000
задач на монитор), поэтому список неудач переживает перезапуски, хотя каждый
опрос смотрит только на окно задач.
Что отслеживается
Заголовок раздела «Что отслеживается»Все метрики имеют префикс dumbmonit_pdm_.
| Семейство | Метрики | Метки |
|---|---|---|
| Инфраструктура | remotes_total, remotes_failed, nodes_online, nodes_offline, cpu_used_cores, cpu_total_cores, memory_used_bytes, memory_total_bytes, memory_used_percent, storage_used_bytes, storage_total_bytes, storage_used_percent, datastores_total | |
| Гости инфраструктуры | guests_running, guests_stopped | guest_type (qemu, lxc) |
| Экземпляры | remote_reachable (1 — консоль получила ответ, 0 — нет), remote_version_info (серия присутствия, метка version), remote_version_behind, remote_nodes_online, remote_nodes_offline, remote_guests_running, remote_guests_stopped, remote_cpu_used_cores, remote_cpu_total_cores, remote_cpu_used_percent, remote_memory_used_bytes, remote_memory_total_bytes, remote_memory_used_percent, remote_storage_used_bytes, remote_storage_total_bytes, remote_storage_used_percent, remote_datastores, remote_subscription_active, remote_updates_pending, remote_last_collection_age_seconds, remote_tasks_failed | remote, type (pve, pbs) |
| Задачи в окне | tasks_total, tasks_failed, tasks_running | |
| Хост консоли | node_cpu_percent, node_cpu_count, node_iowait_percent, node_load1, node_memory_used_bytes, node_memory_total_bytes, node_memory_used_percent, node_swap_used_bytes, node_swap_total_bytes, node_rootfs_used_bytes, node_rootfs_total_bytes, node_rootfs_percent, node_uptime_seconds, node_kernel_info, node_updates_pending, version_info | |
| Сертификаты консоли | node_certificate_expiry_days (отрицательное значение после истечения) | file (proxy.pem) |
| Подписка | subscription_active (метка status), subscription_active_nodes, subscription_total_nodes | |
| Сбор | up, scrape_errors, scrape_duration_seconds |
Задача, завершившаяся с WARNINGS: n, считается успешной. Весь опрос
признаётся неудачным, только если не удался GET /version; любой другой
неудавшийся вызов учитывается в scrape_errors, а экземпляр, до которого
консоль не дотягивается, — это измерение (remote_reachable = 0), а не ошибка
сбора.
remote_version_behind сравнивает федеративные экземпляры друг с другом,
продукт за продуктом: значение 1, когда другой кластер Proxmox VE — или другой
сервер резервного копирования — в той же инфраструктуре работает на более новой
версии. Это не сравнение с тем, что публикует Proxmox; опросу незачем выходить в
интернет. Серия существует только для экземпляра, версия которого была
прочитана, поэтому недоступный экземпляр никогда не сойдёт за обновлённый.
Итоги по хранилищам считают каждое имя хранилища один раз на экземпляр: хранилище, общее для пяти узлов кластера, считается один раз, а не пять.
Применяемые встроенные правила: Monitor unreachable, Federated instance unreachable, Federated instance behind, Task failed on a federated instance, Datacenter console disk almost full, Datacenter console certificate expiring, Datacenter console updates pending. Уведомления называют соответствующий экземпляр.
Что подготовить в Proxmox Datacenter Manager
Заголовок раздела «Что подготовить в Proxmox Datacenter Manager»Приведённые ниже шаги совпадают с теми, что показывает уведомление рядом с формой. Принцип: пользователь, выделенный для мониторинга, токен с ролью только для чтения — никогда не та учётная запись, под которой вы входите.
-
В консоли откройте Configuration → Access Control → Users и нажмите Add. Назовите учётную запись так, как указано ниже, и оставьте пароль пустым: входит токен.
dumbmonit@pdm -
Всё там же, в Access Control, откройте API Tokens → Add, выберите этого пользователя и назовите токен “monitor”. Консоль показывает секрет один раз: скопируйте его сейчас.
dumbmonit@pdm!monitor -
Дайте и пользователю, и токену роль
Auditorна/(верх дерева, то есть вся инфраструктура).AuditorвключаетSystem.Audit,Resource.AuditиAccess.Auditи ничего не может изменить. Токен никогда не имеет больше прав, чем его пользователь, поэтому разрешение выдаётся дважды: Permissions → Add → User Permission, затем снова с API Token Permission. -
Скопируйте идентификатор токена в поле Token ID в DumbMonit, а секрет — в поле Secret.
-
В DumbMonit введите адрес консоли, например “dc.lan” или “dc.lan:8443”.
Предпочитаете командную строку? proxmox-datacenter-manager-admin управляет
удалёнными экземплярами (remotes), а не пользователями; создайте учётную запись,
токен и два разрешения в веб-интерфейсе.
Учётные данные
Заголовок раздела «Учётные данные»| Учётные данные | Поля |
|---|---|
| Токен API (рекомендуется) | Token ID: пользователь, realm и имя токена в том виде, как их показывает консоль, dumbmonit@pdm!monitor. Secret: UUID, показанный один раз при создании токена. DumbMonit отправляет их в заголовке PDMAPIToken=user@pdm!name:secret, которого ожидает консоль. |
Варианта с именем пользователя и паролем нет, и это сделано намеренно: с первого
выпуска консоль возвращает свой билет сессии только в cookie HttpOnly — тело
JSON содержит непригодный ticket-info. Вход ничего не дал бы по сравнению с
токеном, но открывал бы залогиненную сессию при каждом опросе. Токены в любом
случае рекомендуются Proxmox для автоматизации.
Права, только чтение. Проще всего и достаточно: встроенная роль Auditor на
/, выданная пользователю и токену. По конечным точкам:
| Endpoint | Требуется |
|---|---|
GET /version | любой аутентифицированный пользователь |
GET /remotes/remote | возвращает экземпляры, которые вызывающий может проверять |
GET /remotes/remote/{id}/version | Resource.Audit на /resource/{id} |
GET /resources/status, GET /resources/list | Resource.Audit на /resource |
GET /resources/subscription | Resource.Audit на /resource |
GET /remotes/tasks/list | Resource.Audit на /resource/{remote}, по каждому экземпляру |
GET /nodes/{node}/status | System.Audit на /system/status |
GET /nodes/{node}/certificates/info, GET /nodes/{node}/subscription | любой аутентифицированный пользователь |
GET /nodes/{node}/apt/update | System.Audit; 403 допускается: нет серии node_updates_pending, ошибки сбора нет |
GET /remotes/metric-collection/status | больше, чем Auditor; 403 допускается: нет серии remote_last_collection_age_seconds, ошибки сбора нет |
GET /remotes/updates/summary | Resource.Modify — привилегия на запись. По этой причине выключено по умолчанию (remote_updates) |
Обратите внимание, что консоль скрывает токены доступа, которые она хранит для
своих экземпляров (GET /remotes/remote возвращает пустой token), а DumbMonit
это поле всё равно никогда не читает: ни один секрет экземпляра не проходит ни
через сборщик, ни через сохранённое представление, ни через API.
Адрес: 10.0.0.40, dc.lan, dc.lan:8443, [fd00::2] или полный URL. Схема
https и порт 8443 добавляются, если отсутствуют.
| Ключ | Название | По умолчанию | Справка |
|---|---|---|---|
port | API port | 8443 | Используется, если в адресе не указан порт. |
insecure_tls | Accept an unverifiable certificate | false | Proxmox Datacenter Manager по умолчанию поставляется с самоподписанным сертификатом: включите это, если соединение отклоняется по этой причине. |
request_timeout_seconds | Timeout per request (seconds) | 20 | Время, отведённое на каждый вызов API, от 1 до 120. Консоль ретранслирует вызовы каждому федеративному экземпляру, поэтому один медленный сайт задерживает весь ответ. |
node | Console node name | localhost | Имя узла, на котором работает консоль. У Datacenter Manager единственный узел, и он называется “localhost”. |
task_lookback_hours | Task window (hours) | 24 | Более старые задачи не учитываются среди неудач, от 1 до 8760. |
max_age_seconds | Accepted cache age (seconds) | 60 | Насколько устаревшим может быть собственный инвентарь консоли, прежде чем она снова опросит федеративные экземпляры, от 0 до 3600. Ноль запрашивает свежие данные при каждом опросе, что возвращает нагрузку на каждый кластер. |
remotes | Monitored instances | (пусто) | Имена федеративных экземпляров для мониторинга через запятую. Пусто: каждый экземпляр. |
max_remotes | Instance version limit | 100 | Максимальное число экземпляров, у которых запрашивается версия при каждом опросе, от 1 до 1000. |
versions | Read each instance version | true | Один вызов на федеративный экземпляр, чтобы сообщить его версию и пометить отставшие от остальных. Экземпляр, который не отвечает, считается недоступным. |
tasks | Watch tasks across instances | true | Читает список задач каждого федеративного экземпляра, чтобы сообщать о неудачах. |
node_status | Watch the console host | true | Читает CPU, память, корневую файловую систему, аптайм, сертификаты и подписку машины, на которой работает консоль. |
updates | Count pending updates | true | Перечисляет пакеты, ожидающие обновления, на самой консоли. |
remote_updates | Count updates on each instance | false | Читает сводку обновлений консоли для федеративных экземпляров. По умолчанию выключено: консоль защищает этот путь привилегией Resource.Modify, на запись, которой у учётной записи мониторинга нет причин обладать. |
max_age_seconds — единственная опция, которую стоит понять. Консоль хранит
собственный инвентарь, обновляемый её собственным циклом сбора. Запрос свежих
данных при каждом опросе заставляет консоль снова обращаться к каждому кластеру
сверх её обычного ритма — ровно та нагрузка, которой единый монитор консоли
должно избегать. Шестьдесят секунд — это всё равно свежее, чем интервал опроса
по умолчанию.
Типичные ошибки
Заголовок раздела «Типичные ошибки»| Симптом | Вероятная причина |
|---|---|
| Ошибка сертификата | Самоподписанный сертификат: установите доверенный (ACME встроен в консоль) или включите insecure_tls. |
| Ошибка аутентификации | Секрет вставлен в Token ID (или наоборот), либо разрешение выдано пользователю, но не токену — токен никогда не имеет больше прав, чем его пользователь, а два ACL — отдельные записи. |
| Каждый экземпляр показан как недоступный, но собственная страница консоли в порядке | У токена Auditor есть на пользователе, но нет на токене, либо только на /system: именно Resource.Audit на /resource позволяет консоли отвечать за её экземпляры. |
| Экземпляр недоступен, и в сообщении упоминается отпечаток (fingerprint) | Консоль проверяет сертификат каждого управляемого ею экземпляра; исправьте это в консоли (Remotes → экземпляр), а не здесь. |
Нет серии remote_last_collection_age_seconds | GET /remotes/metric-collection/status требует больше, чем Auditor, и молча пропускается. Остальное не затронуто. |
Нет серии remote_updates_pending | remote_updates выключено по умолчанию, потому что этот путь требует Resource.Modify. Включайте, только если готовы выдать привилегию на запись. |
| Нет панели хоста консоли | У токена нет System.Audit на /system/status, либо node_status выключено. |
| “Federated instance behind” никогда не срабатывает | Оно сравнивает экземпляры одного продукта друг с другом. Консоли, объединяющей единственный кластер Proxmox VE, не с чем его сравнивать. |
| Итоги по инфраструктуре — сплошные тире | Консоль ответила, но ничего не насчитала — обычно потому, что все экземпляры недоступны. Строки экземпляров объясняют почему. |