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

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

  • сервер — компонент для управления сетевыми сервисами, хранения данных мониторинга, оповещения администратора о проблемах с оборудованием;
  • агент — программное обеспечение, устанавливаемое на платформу и серверы-локации. Агент собирает данные мониторинга и передаёт на сервер.

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

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


Сервер

Для установки используйте отдельный физический или виртуальный сервер. Если вы используете платформу VMmanager, вы можете создать виртуальную машину с сервером Zabbix по инструкциям из документации к платформе.

Обратите внимание!

Для обеспечения стабильной работы DCImanager 6 не рекомендуем устанавливать сервер Zabbix на одном сервере с платформой или локацией.

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

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

Агент

Рекомендуем установить агенты Zabbix с помощью Ansible:

  1. Установите Ansible по инструкциям из официальной документации.
  2. Создайте Ansible-script zabbix_agent.yml

    ---
    - name: Install Zabbix agent 2
      hosts: all
      debugger: on_failed
      tasks:
    
        - name: Install zabbix-release CentOS 8
          yum:
            name: https://repo.zabbix.com/zabbix/5.4/rhel/8/x86_64/zabbix-release-5.4-1.el8.noarch.rpm
            state: present
          when: ansible_os_family == "RedHat" and ansible_distribution_major_version == "8"
    
        - name: Install zabbix-release CentOS 7
          yum:
            name: https://repo.zabbix.com/zabbix/5.4/rhel/7/x86_64/zabbix-release-5.4-1.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/5.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.4-1+ubuntu20.04_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,X.X.X.X"
    
        - name: Change Active Server IP
          lineinfile:
            path: /etc/zabbix/zabbix_agent2.conf
            regexp: 'ServerActive=127.0.0.1'
            line: "ServerActive=127.0.0.1,X.X.X.X"
    
        - name: Stop zabbix-agent2
          service:
            name: zabbix-agent2
            state: stopped
            enabled: no
          ignore_errors: yes
    
    
        - name: Start zabbix-agent2
          service:
            name: zabbix-agent2
            state: started
            enabled: yes
    YML
  3. Замените выражения "X.X.X.X" в файле zabbix_agent.yml на IP-адрес сервера Zabbix.
  4. Добавьте в файл /etc/ansible/hosts IP-адреса сервера с платформой и серверов-локаций: 

    Пример настройки

    host1 ansible_host=192.168.2.1 ansible_user=root
    host2 ansible_host=192.168.2.2 ansible_user=root
    host3 ansible_host=192.168.2.3 ansible_user=root
    CODE

    192.168.2.1, 192.168.2.2, 192.168.2.3 — IP-адреса сервера с платформой и серверов-локаций

  5. Создайте SSH-ключ и скопируйте открытую часть ключа на сервер с платформой и серверы-локации: 

    Пример команды

    ssh-keygen -t rsa -b 4096 && ssh-copy-id -i ~/.ssh/id_rsa.pub root@<IP>
    BASH

    <IP> — IP-адрес сервера

  6. Запустите установку: 

    ansible-playbook zabbix_agent.yml
    BASH
  7. На сервере с платформой и серверах-локациях разрешите подключения на порт 10050/TCP для агента Zabbix: 

    firewall-cmd --add-port=10050/tcp
    CODE

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


Добавление шаблона

Чтобы добавить шаблон Zabbix:

  1. Создайте файл dci_template.yaml

    zabbix_export:
      version: '5.4'
      date: '2022-02-25T03:01:40Z'
      groups:
        -
          uuid: dc579cd7a1a34222933f24f52a68bcd8
          name: 'Linux servers'
      templates:
        -
          uuid: a5ec933fdf8c41a5845bbb529a6a0f46
          template: 'Template DCImanager 6'
          name: 'Template DCImanager 6'
          description: '2022-02-25 Monitoring of DCImanager 6 server and location servers by Zabbix agent'
          templates:
            -
              name: 'Linux by Zabbix agent'
          groups:
            -
              name: 'Linux servers'
          discovery_rules:
            -
              uuid: 40a0d2d3b69245a1bb151b7d28679c9b
              name: 'Location discovery'
              type: HTTP_AGENT
              key: location.discovery
              delay: 1d
              host_prototypes:
                -
                  uuid: ce1aa235528b4b32b34eeaf6cfca4a8c
                  host: 'DCImanager 6 Location {#LOCATION_NAME}'
                  name: 'DCImanager 6 Location {#LOCATION_NAME}'
                  group_links:
                    -
                      group:
                        name: 'Linux servers'
                  templates:
                    -
                      name: 'Linux by Zabbix agent'
                  custom_interfaces: 'YES'
                  interfaces:
                    -
                      ip: '{#LOCATION_IP}'
              url: '{$DCI_URL}/api/dci/v3/location'
              headers:
                -
                  name: isp-box-instance
                  value: 'true'
                -
                  name: x-xsrf-token
                  value: '{$DCI_TOKEN}'
              lld_macro_paths:
                -
                  lld_macro: '{#LOCATION_IP}'
                  path: $.ssh_address
                -
                  lld_macro: '{#LOCATION_NAME}'
                  path: $.name
              preprocessing:
                -
                  type: JSONPATH
                  parameters:
                    - $.list
          macros:
            -
              macro: '{$DCI_TOKEN}'
              value: __TOKEN__
              description: 'Auth token of admin in DCImanager 6'
            -
              macro: '{$DCI_URL}'
              value: 'https://__DCI_URL__'
              description: 'URL of DCImanager 6 instance'
    YML
  2. Создайте токен для авторизации в платформе:

    curl -s -X POST -H  "accept: application/json" -H  "Content-Type: application/json" -d '{"email": "admin@example.com", "password": "admin_pass"}' "https://dci6.example.com/auth/v4/public/token" -k
    BASH

    admin@example.com — имя пользователя DCImanager 6 с правами администратора

    admin_pass — пароль пользователя

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

    Сохраните значение token из ответа:

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

    {"id":"69","token":"69-a56c5bd9-ba6b-489e-a670-c452cbdd3b70"}
    CODE
  3. В интерфейсе Zabbix:
    1. Перейдите в ConfigurationTemplatesImport.
    2. Загрузите файл dci_template.yaml и нажмите Import:
       
    3. Перейдите в ConfigurationHostsCreate host.
    4. Укажите настройки:
      1. Host name — произвольное имя для обозначения сервера в базе данных Zabbix. Например, DCI6.
      2. Visible name — произвольное имя для отображения сервера в интерфейсе Zabbix.
      3. Template — выберите шаблон Template DCImanager 6.
      4. Groups — выберите группы объектов для мониторинга. Например, Discovered hosts, Linux servers, Templates/Operating systems.
      5. Interfaces — сетевые интерфейсы. Нажмите AddAgent.
      6. IP address — IP-адрес сервера c платформой.
      7. DNS name — имя DNS-сервера. Оставьте пустое значение по умолчанию.
      8. Connect to — тип подключения. Выберите IP.
      9. Port — порт подключения. Оставьте значение по умолчанию — 10050.
      10. Description — произвольный комментарий.
      11. Monitored by proxy — используемый прокси. Выберите (no proxy).
      12. Enabled — включите опцию, чтобы активировать мониторинг платформы.
    5. Перейдите на вкладку Macros и добавьте макросы:
      1. {$DCI_TOKEN} — токен для авторизации в платформе.
      2. {$DCI_URL} — URL сервера с платформой в формате https://dci6.example.com где dci6.example.com — доменное имя или IP-адрес сервера с платформой.
    6. Нажмите Add.

Изменение интервала опроса

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

  1. Перейдите в ConfigurationTemplates → выберите шаблон Template DCImanager 6Discovery.
  2. В открывшемся списке нажмите Location discovery.

  3. Укажите значение интервала в параметре Update interval.
  4. Нажмите Update.

Создание дашборда

Дашборд Zabbix — это информационная панель, на которую вы можете добавить нужные графики.

Пример дашборда


Чтобы создать дашборд:

  1. Перейдите в MonitoringDashboardCreate dashboard.
  2. Укажите произвольное название дашборда в поле Name.
  3. Нажмите Apply.
  4. Чтобы добавить график на дашборд:
    1. Нажмите в любое свободное место.
    2. В поле Type выберите Graph.
    3. Нажмите Select справа от поля host pattern и выберите сервер для мониторинга.
    4. Нажмите Select справа от поля item pattern и выберите параметр для построения графика.
    5. Нажмите Add.