Перейти к содержимому

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_stoppedguest_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_failedremote, 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. Уведомления называют соответствующий экземпляр.

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

  1. В консоли откройте Configuration → Access Control → Users и нажмите Add. Назовите учётную запись так, как указано ниже, и оставьте пароль пустым: входит токен.

    dumbmonit@pdm
  2. Всё там же, в Access Control, откройте API Tokens → Add, выберите этого пользователя и назовите токен “monitor”. Консоль показывает секрет один раз: скопируйте его сейчас.

    dumbmonit@pdm!monitor
  3. Дайте и пользователю, и токену роль Auditor на / (верх дерева, то есть вся инфраструктура). Auditor включает System.Audit, Resource.Audit и Access.Audit и ничего не может изменить. Токен никогда не имеет больше прав, чем его пользователь, поэтому разрешение выдаётся дважды: Permissions → Add → User Permission, затем снова с API Token Permission.

  4. Скопируйте идентификатор токена в поле Token ID в DumbMonit, а секрет — в поле Secret.

  5. В 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}/versionResource.Audit на /resource/{id}
GET /resources/status, GET /resources/listResource.Audit на /resource
GET /resources/subscriptionResource.Audit на /resource
GET /remotes/tasks/listResource.Audit на /resource/{remote}, по каждому экземпляру
GET /nodes/{node}/statusSystem.Audit на /system/status
GET /nodes/{node}/certificates/info, GET /nodes/{node}/subscriptionлюбой аутентифицированный пользователь
GET /nodes/{node}/apt/updateSystem.Audit; 403 допускается: нет серии node_updates_pending, ошибки сбора нет
GET /remotes/metric-collection/statusбольше, чем Auditor; 403 допускается: нет серии remote_last_collection_age_seconds, ошибки сбора нет
GET /remotes/updates/summaryResource.Modify — привилегия на запись. По этой причине выключено по умолчанию (remote_updates)

Обратите внимание, что консоль скрывает токены доступа, которые она хранит для своих экземпляров (GET /remotes/remote возвращает пустой token), а DumbMonit это поле всё равно никогда не читает: ни один секрет экземпляра не проходит ни через сборщик, ни через сохранённое представление, ни через API.

Адрес: 10.0.0.40, dc.lan, dc.lan:8443, [fd00::2] или полный URL. Схема https и порт 8443 добавляются, если отсутствуют.

КлючНазваниеПо умолчаниюСправка
portAPI port8443Используется, если в адресе не указан порт.
insecure_tlsAccept an unverifiable certificatefalseProxmox Datacenter Manager по умолчанию поставляется с самоподписанным сертификатом: включите это, если соединение отклоняется по этой причине.
request_timeout_secondsTimeout per request (seconds)20Время, отведённое на каждый вызов API, от 1 до 120. Консоль ретранслирует вызовы каждому федеративному экземпляру, поэтому один медленный сайт задерживает весь ответ.
nodeConsole node namelocalhostИмя узла, на котором работает консоль. У Datacenter Manager единственный узел, и он называется “localhost”.
task_lookback_hoursTask window (hours)24Более старые задачи не учитываются среди неудач, от 1 до 8760.
max_age_secondsAccepted cache age (seconds)60Насколько устаревшим может быть собственный инвентарь консоли, прежде чем она снова опросит федеративные экземпляры, от 0 до 3600. Ноль запрашивает свежие данные при каждом опросе, что возвращает нагрузку на каждый кластер.
remotesMonitored instances(пусто)Имена федеративных экземпляров для мониторинга через запятую. Пусто: каждый экземпляр.
max_remotesInstance version limit100Максимальное число экземпляров, у которых запрашивается версия при каждом опросе, от 1 до 1000.
versionsRead each instance versiontrueОдин вызов на федеративный экземпляр, чтобы сообщить его версию и пометить отставшие от остальных. Экземпляр, который не отвечает, считается недоступным.
tasksWatch tasks across instancestrueЧитает список задач каждого федеративного экземпляра, чтобы сообщать о неудачах.
node_statusWatch the console hosttrueЧитает CPU, память, корневую файловую систему, аптайм, сертификаты и подписку машины, на которой работает консоль.
updatesCount pending updatestrueПеречисляет пакеты, ожидающие обновления, на самой консоли.
remote_updatesCount updates on each instancefalseЧитает сводку обновлений консоли для федеративных экземпляров. По умолчанию выключено: консоль защищает этот путь привилегией Resource.Modify, на запись, которой у учётной записи мониторинга нет причин обладать.

max_age_seconds — единственная опция, которую стоит понять. Консоль хранит собственный инвентарь, обновляемый её собственным циклом сбора. Запрос свежих данных при каждом опросе заставляет консоль снова обращаться к каждому кластеру сверх её обычного ритма — ровно та нагрузка, которой единый монитор консоли должно избегать. Шестьдесят секунд — это всё равно свежее, чем интервал опроса по умолчанию.

СимптомВероятная причина
Ошибка сертификатаСамоподписанный сертификат: установите доверенный (ACME встроен в консоль) или включите insecure_tls.
Ошибка аутентификацииСекрет вставлен в Token ID (или наоборот), либо разрешение выдано пользователю, но не токену — токен никогда не имеет больше прав, чем его пользователь, а два ACL — отдельные записи.
Каждый экземпляр показан как недоступный, но собственная страница консоли в порядкеУ токена Auditor есть на пользователе, но нет на токене, либо только на /system: именно Resource.Audit на /resource позволяет консоли отвечать за её экземпляры.
Экземпляр недоступен, и в сообщении упоминается отпечаток (fingerprint)Консоль проверяет сертификат каждого управляемого ею экземпляра; исправьте это в консоли (Remotes → экземпляр), а не здесь.
Нет серии remote_last_collection_age_secondsGET /remotes/metric-collection/status требует больше, чем Auditor, и молча пропускается. Остальное не затронуто.
Нет серии remote_updates_pendingremote_updates выключено по умолчанию, потому что этот путь требует Resource.Modify. Включайте, только если готовы выдать привилегию на запись.
Нет панели хоста консолиУ токена нет System.Audit на /system/status, либо node_status выключено.
“Federated instance behind” никогда не срабатываетОно сравнивает экземпляры одного продукта друг с другом. Консоли, объединяющей единственный кластер Proxmox VE, не с чем его сравнивать.
Итоги по инфраструктуре — сплошные тиреКонсоль ответила, но ничего не насчитала — обычно потому, что все экземпляры недоступны. Строки экземпляров объясняют почему.