Мониторинг Proxmox через Zabbix

Если в вашей инфраструктуре много объектов различной степени важности, то без хотя бы системы мониторинга в минимальной конфигурации будет очень сложно следить за состоянием здоровья ваших сервисов и оборудования. В этой публикации я покажу, как можно настроить мониторинг Proxmox через Zabbix.

Для настройки мониторинга я буду использовать вот это решение с официального сайта Zabbix. Тем более, что в Zabbix, по крайней мере версии 6.2, этот шаблон уже доступен “из коробки”.

О том, как выполнить установку Proxmox или установку Zabbix я уже писал.

Предварительные требования

Шаблон очень просто в настройке. Однако, нам потребуется создать токен доступа для системной учетной записи, который мы выдадим только необходимые разрешения.

Приступим:

1. Сначала создадим пользователя в Proxmox:

pveum user add zabbix@pam

2. Затем создадим роль с теми разрешениями, что указаны в документации:

pveum role add ZabbixMonitoring --privs "Sys.Audit VM.Audit Datastore.Audit"

3. Назначаем роль на пользователя:

pveum acl modify / -user zabbix@pam -role ZabbixMonitoring

4. И самым последним шагом нужно сгенерировать токен доступа:

Скопируйте значения из окна “Toker Secret”, т.к. после закрытия этого окна узнать секрет уже не получится. Только генерировать новый.

Настройка шаблона

Приступим:

1. Теперь переключимся на сервер Zabbix и добавим сервер Proxmox в хосты (если он еще не добавлен).

Имя хоста и группа хоста вы можете указать любые – на ваше усмотрение. В секции с типом интерфейса выбираем тип “Agent” и подключает хост с Proxmox либо по IP, либо по DNS имени. Но вот что важно – так это в поле Template указать шаблон “Proxmox VE by HTTP”.

2. Второй важный момент – необходимо указать токен доступа и секрет на вкладке “Macros”:

Указываем Token ID и Secret в макросах {$PVE.TOKEN.ID} и {$PVE.TOKEN.SECRET}.

3. Сохраняем внесенные изменения.

4. Перейдем к просмотру последних данных:

В том случае, если мы не допустили никаких ошибок при конфигурации, то мы с вами должны увидеть некий набор данных – все зависит от конфигурации и рабочей нагрузки на ваш сервер Proxmox.

Примеры собранных данных

Если какие-то из контейнеров или виртуальных машин не запущены, то Zabbix предупредит об этом (можно отключить для каких-то ВМ или контейнеров).

Примеры графиков:

Настройка мониторинга Proxmox через Zabbix завершена.

Мониторинг Proxmox через Zabbix: 45 комментариев

  1. Все круто, спасибо за описание, но Вы не написали куда ставить Zabbix в итоге, на саму систему, где Proxmox, на виртуальную систему в Proxmox или на отдельную вовсе.

    1. Добрый день! Сервер Zabbix предварительно устанавливается либо на ВМ на самом Proxmox, либо на любой другой платформе виртуализации или физическом хосте.

  2. Учтите – есть опечатки – если не исправить работать не будет.

    1. Добрый день! Благодарю за обратную связь и внимательное чтение! Я всегда стараюсь предварительно вычитывать материал, но, к сожалению, иногда “глаз замыливается”. Я перепроверил текст. Да, действительно, роль я изначально хотел обозвать как “ZabbixMonitoring”, но опечатался и назвал “ZabbiMonitoring”. Но если выполнять все команды, как они приведены в публикации, то мониторинг работает – проверил на стенде. Название роли скорректировал.

  3. Все сделал, но zbx не активно. В “последние данные” нет информации о узлах гипервизора, что может быть не так? Агента же на Proxmox ставить не надо?

    1. Добрый день! Агента ставить не нужно. Скорее всего либо какой-то шаг пропущен, либо где-то опечатка. Попробуйте перепровить конфигурацию со стороны Zabbix и Proxmox. Еще вариант – трафик может фильтроваться каким-то промежуточным сетевым оборудованием.
      Буквально пару дней назад по этой же инструкции настраивал мониторинг – все получилось.

        1. Для проксмокса “zbx” не будет подсвечиваться. Но данные должны быть в разделе последних данных.

    1. Если честно, то я не помню какие разрешения назначены этой роли. Я создавал отдельную роль, как указано в статье.

  4. почему в поле token.secret после самого секрета еще следом прописан id token

    1. Вот здесь соглашусь, в поле token.secret нужен только секрет без id токена. Кривой скрин – прошу прощения 🙁

  5. Как мониторить проксмокс шаблоном Smart by Zabbix agent, как получить доступ, если токен нельзя указать в данном шаблоне

    1. Добрый день! В документации (https://www.zabbix.com/ru/integrations/smart) указано, что нужно установить дополнительный пакет и скорректировать разрешения в sudoers:

      sudo dnf install smartmontools
      sudo visudo
      “zabbix ALL=(ALL) NOPASSWD:/usr/sbin/smartctl”

      Предварительно нужно будет установить Zabbix агент на сервер Proxmox

      1. smartctl установлен. Не пойму эти строки :
        sudo visudo
        “zabbix ALL=(ALL) NOPASSWD:/usr/sbin/smartctl”
        что это, поподробнее. в какой файл это записывается

        1. 1. Запускаете в консоле коману:
          sudo visudo

          2. Добавляете в файл строчку (только проверьте имя пользователя от которого запускается агент Zabbix и расположение бинарника для smartctl):
          zabbix ALL=(ALL) NOPASSWD:/usr/sbin/smartctl
          3. Сохраняете текстовый файл и выходите из него.

          visudo – это утилита для редактирования файла /etc/sudoers. В этом файле указывается кому из пользователей или групп разрешено запускать определенные команды через sudo.

  6. Есть еще один обязательный макрос который вы не указали: {$PVE.URL.HOST} – ip proxmox.
    Без него у меня не завелось.

    1. Добрый день! Возможно, но зависит от ситауации. У меня подключенго несколько Proxmox серверов в Zabbix. Макрос {$PVE.URL.HOST} я не указывал при их подключении.

    1. Добрый день! Тогда вам нужно создавать в Zabbix два объекта с серверами Proxmox + на каждом сервере Proxmox генерировать Token ID и Secret. Потом вы просто для каждого объекта в Zabbix прописываете свой Token ID и Secret.

  7. Что делать при ошибке API service not available?

    Пробовал менять токен несколько раз

    1. Добрый день! Я бы начал с того, что убедился, что API Proxmox доступен с сервера Zabbix – по имени или по IP-адресу, в зависимости от того, как вы подключаетесь.

  8. Спасибо за инструкцию!!!

    Сразу не заработало, добавил как в официальной инструкции еще макросы {$PVE.URL.PORT} и {$PVE.URL.HOST} , еще раз перезапустил агента и всё заработало.

    1. Добрый день! Я еще раз перепроверил свою конифгурацию – на обоих Proxmox серверах я не указывал макросы {$PVE.URL.PORT} и {$PVE.URL.HOST}. Я просто на вкладке “Hosts” указал IP-адрес сервера. Возможно, если вы хотели указать имя сервера для подключения, то на вкладке “Host” нужно заполнить поле “DNS name”. Но это только мое предположение.

  9. Каким образом заббих должен подкл к 10050 порту? Если он коннектится по http и агент не нужен? Из комменто понятно что ошибок ппц, автор просто на отвались написал

    1. На вкладке “Hosts” нужно указать или IP-адрес для подключения (Interfaces – IP address) или указать имя для подключениия (Interfaces – DNS name), а затем выбрать соответствующий переключатель.

  10. у меня не подключается в этой инструкции, пишет ошибку API service not available
    как исправить

    1. Добрый день! Коллеги в комментариях писали, что кому-то помогает определние макроса {$PVE.URL.HOST}. Попробуйте, воможно, что это вам поможет.

    2. Нежно использовать макросы {$PVE.URL.PORT} и {$PVE.URL.HOST}. В настройке шаблона пункт 1 не нужно использовать zabbix agent. Zabbix 7.0.7, работает.

  11. Приветствую
    Статья прекрасно подходит для мониторинга одиночного сервера Proxmox
    НО как быть с кластером? При добавлении всех узлов кластера в мониторинг приходят данные о событии на любой ноде от всех серверов кластера
    В результате появляется куча событий. Например у меня 6 ног и в случае любого события отображается 6 алармов

    1. Добрый день! С кластером я не тестировал мониторинг, но судя по документации, такой сценарий поддерживается – https://www.zabbix.com/ru/integrations/proxmox. Например, есть Cluster discovery.

      Попробуйте добавлять не все 6 узлов, а в {$PVE.URL.HOST} указать один из серверов, т.к., насколь я вчитался, то с любого сервера по API можно забрать информацию по статуса и состоянию всего кластера. Либо попробовать зарегистрировать общее DNS имя для 6-ти IP-адресов узлов. Но такой сценарий тестировать нужно – возможно с Proxmox не зараотает.

      1. Cluster discovery действительно есть и казалось бы при такой настройке все работает как надо, за исключением того что при падении этой ноды отгадывает весь мониторинг кластера

        1. Я не тестировал, но добавьте в Zabbix один объект хоста и в разделе интерфейсов указать все шесть IP-адресов узлов. Возможно он будет опрашивать любой доступный IP-адрес, но считать все шесть узлов одним объектом мониторинга.

    1. Добрый день! Если вы обращаетесь к Proxmox по DNS-имени, то убедитесь, что это имя разрешается в нужный IP-адрес с Zabbix сервера. Также нужно убедиться, что с сервера Zabbix доступен порт 8006/TCP на сервере Proxmox.

Добавить комментарий

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