22 февраля 2022 Время чтения: 5 минут

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

Илья Калиниченко

Илья Калиниченко

DevOps-инженер

ISPSystem

Теперь можно быстро добавить VMmanager к мониторингу в Zabbix, чтобы отслеживать состояние виртуальной инфраструктуры и узлов. Для этого Zabbix добавил в свой репозиторий скрипт интеграции. Подробнее об установке читайте в статье DevOps-инженера ISPsystem Ильи Калиниченко.

В прошлый раз я рассказывал, как настроить через Zabbix мониторинг ВМ, созданных в VMmanager. Однако, такого решения не всегда достаточно. Часто нужно отслеживать не только виртуальные машины, но другие объекты инфраструктуры. У администратора могут возникать самые разные вопросы:

  • работает ли платформа VMmanager? Отвечает ли она на запросы пользователей?
  • не возникла ли ошибка при выполнении запущенной задачи, например, создание ВМ или изменение конфигурации?
  • в каком состоянии находятся узлы?
  • как работают сервисы, запущенные на узле?

Всю эту информацию можно отследить в виджетах самой платформы. Подробнее об этом можно почитать в материале «Мониторинг в VMmanager».

Другой вариант — добавить VMmanager в систему мониторинга Zabbix. Это особенно удобно, если вы уже используете Zabbix для других задач — централизованно следить за состоянием сервисов проще.

Подключить VMmanager к мониторингу достаточно просто — для этого мы написали шаблон, который Zabbix добавил в свой репозиторий. О том как его применить расскажу далее.

Добавление VMmanager в Zabbix

  • 1. Если у вас еще нет сервера Zabbix, вы можете легко развернуть его скриптом на виртуальной машине. Подробнее об этом я писал статье «Разворачиваем Zabbix за несколько минут».
  • 2. Затем, чтобы настроить мониторинг VMmanager, cкачайте файл шаблона. Открыть файл шаблона
  • 3. Добавите в Zabbix шаблон для работы с VMmanager 6. Для этого перейдите в меню Zabbix:

Configuration -> Templates -> Import -> Выбрать файл

Загрузка шаблона в Zabbix

  • 4. В разделе Пользователи в VMmanager создайте пользователя для работы с API.
Добавление пользователя в VMmanager

  • 5. Получите токен авторизации, используя Curl:

    ~ $ curl -s -X POST -H "accept: application/json" -H "Content-Type: application/json" -d '{"email":
    "api@example.com", "password": "iQ3xK6nJ2dnY"}' "https://vm6.example.com/auth/v4/public/token"
    {"id":"69","token":"69-a56c5bd9-ba6b-489e-a670-c452cbdd3b70"}
    

Подставьте свой пароль и URL в команду. Token скопируйте.


  • 6. Добавите сервер с VMmanager в Zabbix:
    • 6.1. Configuration -> Hosts -> Create Host
Добавление узла платформы в Zabbix

    • 6.2. Заполните имя, создайте новую группу. Добавьте интерфейс Agent
    • 6.3. Затем в разделе Templates прикрепите шаблон
Прикрепляем шаблон VMmanager 6 Master

    • 6.4. В разделе Macros добавьте два макроса:

{$VM6_TOKEN} — токен, который получили выше
{$VM6_URL} — https://__VM_DOMAIN__/vm/v3

Готово


  • 7. Далее необходимо установить на узлы Zabbix-agent2. Для этого добавьте Ansible скрипт в платформу. Не забудьте поменять __SERVER_IP__ на ip своего сервера).

    ---
    - name: Install zabbix-agent playbook
    hosts: all
    debugger: on_failed
    tasks:
    - name: Install zabbix-release CentOS 8
    yum:
    name: https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm
    state: present

    - name: Install zabbix-agent2 package
    package:
    name: zabbix-agent2
    state: present

    - name: Change Server IP
    lineinfile:
    path: /etc/zabbix/zabbix_agent2.conf
    regexp: 'Server=127.0.0.1'
    line: "Server=127.0.0.1,__SERVER_IP__"

    - name: Change Active Server IP
    lineinfile:
    path: /etc/zabbix/zabbix_agent2.conf
    regexp: 'ServerActive=127.0.0.1'
    line: "ServerActive=127.0.0.1,__SERVER_IP__"

    - name: Start zabbix-agent2
    service:
    name: zabbix-agent2
    state: started
    enabled: yes

    - name: Create a new sudoers file
    file:
    path: /etc/sudoers.d/zabbix
    state: touch
    mode: 0400
    owner: root

    - name: Add sudoers
    copy:
    dest: /etc/sudoers.d/zabbix
    content: |
    Defaults:zabbix !requiretty
    Cmnd_Alias ZABBIX_CMD = /usr/bin/virsh -q list, /usr/bin/virsh -q list --all
    zabbix ALL = (root) NOPASSWD: ZABBIX_CMD

    - name: Add vmmanager config to zabbix
    file:
    path: /etc/zabbix/zabbix_agent2.d/vmmanager.conf
    state: touch
    mode: 0644
    owner: root

    - name: Configure zabbix for VMmanager
    copy:
    dest: /etc/zabbix/zabbix_agent2.d/vmmanager.conf
    content: |
    UserParameter=vm.all,sudo virsh -q list --all | wc -l
    UserParameter=vm.running,sudo virsh -q list | wc -l
    

  • 8. Запустите скрипт на узлах.
  • 9. Добавьте узлы в Zabbix вручную (Configuration -> Hosts -> Create host) или автоматически. Для этого:
    • 9.1. Перейдите в Configuration -> Hosts
    • 9.2. Найдите наш VMmanager 6
    • 9.3. Зайдите в Discovery
Список узлов в Zabbix

Список узлов в Zabbix

    • 9.4. Зайдите в Host prototypes и включите Create enabled и Discover
Включение автоматического обнаружения хостов

    • 9.5. Затем перейдите в Monitoring -> Hosts, находим наш vm6, Нажмите на на названии, затем на Inventory. В строке Configuration выберите Discovery
    • 9.6. Отметьте строку «VMmanager 6 Master: Host discovery» и нажмите «Execute now»
    • 9.7. Готово — Zabbix создаст хосты, взяв ваши узлы кластера по API

  • 10. Теперь Zabbix будет следить за узлами и задачами. Осталось настроить отправку уведомлений. Для этого:
    • 10.1. В разделе Administration -> Media types включите и настройте способ отправки уведомлений, который вам больше нравится
    • 10.2. В разделе Administration -> Users в настройках своего пользователя включите свой Media
    • 10.3. В разделе Configuration -> Actions -> Trigger actions включите отправку уведомлений о событиях для всех Media

Готово — VMmanager добавлен к мониторингу в Zabbix.

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