Zabbix — это система мониторинга с открытым исходным кодом. С помощью Zabbix вы можете настроить мониторинг виртуальных машин и других сущностей платформы.

Основные компоненты Zabbix:

  • сервер — компонент для управления сетевыми сервисами, хранения данных мониторинга, оповещения администратора о проблемах с оборудованием. Вы можете использовать собственный сервер Zabbix или создать ВМ для выполнения этих функций;
  • прокси — промежуточный сервис, который собирает данные с ВМ и передаёт на сервер. Необязательный компонент. Прокси следует использовать, чтобы сократить нагрузку на сервер или если ВМ не имеют прямого доступа к серверу. Вы можете создать одну или несколько ВМ, выполняющую роль прокси;
  • агент — программное обеспечение, устанавливаемое на ВМ или узел кластера. Агент собирает данные мониторинга и передаёт на сервер или прокси.

Подробнее о Zabbix см. в официальной документации.

Установка компонентов Zabbix


Установка Zabbix на ВМ производится с помощью скриптов из репозитория ISPsystem. Доступны для установки версии 5.0 LTS, 6.0 LTS и 6.4. Скрипты могут быть запущены как при создании ВМ, так и после создания. Подробнее см. в статье Запуск скриптов на ВМ.

Для установки Zabbix на узел кластера потребуется создать Ansible-скрипт установки. Подробнее см. в статье Создание скрипта для узла.

Сервер

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

Чтобы установить на ВМ сервер Zabbix:

  • версии 5.0:
    1. Cоздайте ВМ с ОС CentOS 7, Ubuntu 20.04 или Debian 10.
    2. Запустите на ВМ скрипт Zabbix server. Выберите версию 5.0.
  • версии 6.0 или 6.4:
    1. Cоздайте ВМ с ОС AlmaLinux 8, Ubuntu 22.04 или Debian 12.
    2. Запустите на ВМ скрипт Zabbix server. Выберите нужную версию.

Веб-интерфейс сервера будет доступен по URL http://<IP созданной ВМ>:8080. Например, http://192.168.100.100:8080. Для авторизации используйте:

  • имя пользователя — Admin;
  • пароль — zabbix.

Прокси

Чтобы установить на ВМ прокси Zabbix:

  • версии 5.0:
    1. Cоздайте ВМ с ОС CentOS 7, Ubuntu 20.04 или Debian 10.
    2. Запустите на ВМ скрипт Zabbix server. В параметрах укажите IP-адрес сервера Zabbix и выберите версию 5.0.
  • версии 6.0 или 6.4:
    1. Cоздайте ВМ с ОС AlmaLinux 8, Ubuntu 22.04 или Debian 12.
    2. Запустите на ВМ скрипт Zabbix proxy. В параметрах укажите IP-адрес сервера Zabbix и выберите нужную версию.

Агент

Чтобы установить на ВМ агенты Zabbix:

  1. Запустите на ВМ:
    • с ОС семейства Linux — скрипт Zabbix agent2 linux;
    • с ОС Windows — скрипт Zabbix agent2 windows.
  2. Укажите в параметре ZABBIX_SERVER:
    • если вы используете прокси — IP-адрес прокси Zabbix;
    • если вы не используете прокси — IP-адрес сервера Zabbix.
  3. Выберите Версию Zabbix server.

Чтобы установить агенты Zabbix на узлах кластера:

  1. Перейдите в Скрипты Для узлов Создать скрипт.
  2. Создайте Ansible-скрипт и укажите в нём IP-адрес сервера Zabbix вместо фрагмента <zabbix_server> в секциях Change Server IP и Change Active Server IP:

    ---
    - name: Install zabbix-agent playbook
      hosts: all
      debugger: on_failed
      tasks:
        - name: Install zabbix-release AlmaLinux 8
          yum:         
            name: https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-4.el8.noarch.rpm
            state: present
            disable_gpg_check: yes
            validate_certs: no
          when: ansible_os_family == "RedHat" and ansible_distribution_major_version == "8"
    
        - name: Install zabbix-release CentOS 7
          yum:
            name: https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-4.el7.noarch.rpm
            state: present
          when: ansible_os_family == "RedHat" and ansible_distribution_major_version == "7"
    
        - name: Install zabbix release package
          apt:
            deb: https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-1+focal_all.deb
          when: ansible_distribution == 'Ubuntu'
    
        - 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,<zabbix_server>"
    
        - name: Change Active Server IP
          lineinfile:
            path: /etc/zabbix/zabbix_agent2.conf
            regexp: 'ServerActive=127.0.0.1'
            line: "ServerActive=127.0.0.1,<zabbix_server>"
    
        - name: Stop zabbix-agent
          service:
            name: zabbix-agent
            state: stopped
            enabled: no
          ignore_errors: yes
    
    
        - 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
    
    
    YML
  3. Запустите скрипт на узлах кластера.

Настройка сервера Zabbix


Добавление конфигурации прокси

  1. Перейдите в AdministrationProxiesCreate proxy.
  2. Укажите настройки прокси:
    1. Proxy name — произвольное имя прокси.
    2. Proxy mode — режим работы прокси. Выберите Passive.
    3. IP address — IP-адрес прокси.
    4. DNS name — имя DNS-сервера. Оставьте значение по умолчанию — localhost.
    5. Connect to — тип подключения. Выберите IP.
    6. Port — порт подключения. Оставьте значение по умолчанию — 10051.
    7. Description — произвольный комментарий к прокси.
  3. Нажмите Add.

Добавление мониторинга платформы

  1. Если на сервере не установлена утилита curl, установите её: 
    dnf install curl || apt install curl
    BASH
  2. Создайте токен для авторизации в платформе:

    curl -k -X POST -H "accept: application/json" -H "Content-Type: application/json" 'https://domain.com/api/auth/v4/public/token' -d '{"email": "admin_email", "password": "admin_pass"}'
    CODE

    domain.com — доменное имя или IP-адрес сервера с платформой

    admin_email — email администратора платформы

    admin_pass — пароль администратора платформы

    В ответ придёт сообщение вида:

    Пример ответа в JSON

    {
      "confirmed": true,
      "expires_at": null,
      "id": "6",
      "token": "4-e9726dd9-61d9-2940-add3-914851d2cb8a"
    }
    CODE

    Сохраните полученное значение параметра token — токен авторизации.

  3. Создайте токен с увеличенным сроком действия:

    curl -k -X POST -d '{"description": "Integration with Zabbix", "expires_at": "<expire_time>"}' -H  "accept: application/json" -H "Content-Type: application/json" -H "x-xsrf-token: <token>" "https://domain.com/auth/v4/token"
    BASH

    <expire_time> — время окончания действия в формате YYYY-MM-DD HH:MM:SS. Например, 2025-01-01 00:00:00

    <token> — токен авторизации

    domain.com — доменное имя или IP-адрес сервера с платформой

    В ответ придёт сообщение вида: 

    Пример ответа в JSON

    {
      "confirmed": true,
      "expires_at":"2025-01-01 00:00:00",
      "id": "7346",
      "token": "14626-897fd91a-5787-4874-8b26"
    }
    CODE

    Сохраните полученное значение параметра token — токен авторизации с увеличенным сроком действия.

  4. Скачайте шаблоны из репозитория Zabbix:

  5. Импортируйте загруженные шаблоны в Zabbix: ConfigurationTemplates Import → выберите файл шаблона → ImportImport.
  6. Включите мониторинг сервера с VMmanager в Zabbix:
    1. Перейдите в ConfigurationHostsCreate host.
    2. Укажите параметры сервера:
      1. Host name — произвольное имя для обозначения сервера в базе данных Zabbix.
      2. Visible name — произвольное имя для отображения сервера в интерфейсе Zabbix.
      3. Groups — группа объектов. Выберите VMmanager 6.
      4. Interfaces — сетевые интерфейсы. Нажмите AddAgent.
      5. IP address — IP-адрес сервера c платформой.
      6. DNS name — имя DNS-сервера. Оставьте пустое значение по умолчанию.
      7. Connect to — тип подключения. Выберите IP.
      8. Port — порт подключения. Оставьте значение по умолчанию — 10050.
      9. Description — произвольный комментарий.
      10. Monitored by proxy — используемый прокси. Выберите имя прокси, если вы его используете.
      11. Enabled — включите опцию, чтобы активировать мониторинг платформы.
    3. Перейдите на вкладку Templates и введите в поле Link new templates: Template VMmanager 6 Master.
    4. Перейдите на вкладку Macros и добавьте макросы:
      1. {$VM6_TOKEN} — токен авторизации с увеличенным сроком действия.
      2. {$VM6_URL} — URL сервера с платформой в формате https://vm6.example.com/vm/v3, где vm6.example.com — доменное имя или IP-адрес сервера с платформой.

    5. Нажмите Add.
  7. Включите мониторинг узлов кластера в Zabbix:
    1. Перейдите в ConfigurationHosts → выберите сервер с платформой → Discovery.
    2. В разделе Discovery Rules в строке Template VMmanager 6 Master: Host discovery нажмите Host prototypes.

    3. В разделе Host Prototypes включите для сервера опции Create enabled и Discover.
    4. Перейдите в Monitoring Hosts → выберите сервер с платформой → Inventory.

    5. В разделе Host Inventory нажмите Discovery.

    6. Выделите строку VMmanager 6 Master: Host discoveryExecute now.

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

Добавление отдельных ВМ для мониторинга

  1. Перейдите в ConfigurationHostsCreate host.
  2. Добавьте настройки ВМ:
    1. Host name — произвольное имя для обозначения ВМ в базе данных Zabbix.
    2. Visible name — произвольное имя для отображения ВМ в интерфейсе Zabbix.
    3. Groups — группа объектов. Выберите Virtual machines.
    4. Interfaces — сетевые интерфейсы. Нажмите AddAgent.
    5. IP address — IP-адрес ВМ.
    6. DNS name — имя DNS-сервера. Оставьте пустое значение по умолчанию.
    7. Connect to — тип подключения. Выберите IP.
    8. Port — порт подключения. Оставьте значение по умолчанию — 10050.
    9. Description — произвольный комментарий к ВМ.
    10. Monitored by proxy — используемый прокси. Выберите имя прокси, если вы его используете.
    11. Enabled — включите опцию, чтобы активировать мониторинг этой ВМ.
  3. Перейдите на вкладку Templates и выберите в поле Link new templates шаблон для мониторинга ВМ:
    • с ОС семейства Linux — Template OS Linux by Zabbix agent;
    • с ОС Windows — Template OS Windows by Zabbix agent.
  4. Нажмите Add.