Интеграция с Zabbix

Система позволяет подключаться к нескольким серверам Zabbix и импортировать информацию о мониторящихся хостах.

Настройка подключения

Для настройки подключения необходимо выполнить несколько шагов.

Шаг 1: проверить доступ от сервера системы до сервера Zabbix

Для проверки доступности Zabbix API необходимо выполнить следующую команду в терминале на сервере системы, заменив http://192.168.1.215 на адрес файла api_jsonrpc.php вашей инсталляции Zabbix:

$curl -H "Content-Type: application/json" -X POST -d '{"jsonrpc":"2.0","method":"apiinfo.version","id":1,"auth":null,"params":{}}' http://192.168.1.215/zabbix/api_jsonrpc.php

При наличии доступа сервер Zabbix ответит похожим сообщением:

{"jsonrpc":"2.0","result":"3.2.1","id":1}

Шаг 2: добавить пользователя в Zabbix

Добавить в Zabbix пользователя с правами на чтение хостов или групп хостов, данные с которых необходимо импортировать. Имя и пароль данного пользователя будут использоваться для импорта данных на шаге 4.

Шаг 3: создать объект для импорта данных

На сервере системы нужно создать объект, в который будут импортироваться данные о хостах из Zabbix, и запомнить его ID, указанный в секции Параметров, для использования на шаге 4.

Шаг 4: включить импорт данных на сервере системы

Добавить раздел Zabbix в конфигурационный файл сервера /etc/saymon/saymon-server.conf и внести в него следующую информацию:

"zabbix" : [{
    "url" : "http://192.168.1.215/zabbix/api_jsonrpc.php",
    "user" : "saymon",
    "password" : "saymon_user_password",
    "parent_id" : "58b586d5c3a2f96642e25537"
}]

где

  • url - адрес файла api_jsonrpc.php вашей инсталляции Zabbix, который был использован на шаге 1, например, http://192.168.1.215/zabbix/api_jsonrpc.php;

  • user - имя пользователя, добавленного в Zabbix на шаге 2;

  • password - пароль пользователя, добавленного в Zabbix на шаге 2;

  • parent_id - id объекта, созданного на шаге 3.

Для каждого дополнительного сервера Zabbix нужно добавить новый JSON-документ с его данными в массив следующим образом:

"zabbix" : [
    {
    "url" : "http://192.168.1.215/zabbix/api_jsonrpc.php",
    "user" : "saymon",
    "password" : "saymon_user_password",
    "parent_id" : "58b586d5c3a2f96642e12345"
    },
    {
    "url" : "http://192.168.1.180:8020/zabbix/api_jsonrpc.php",
    "user" : "saymon",
    "password" : "saymon_user_password",
    "parent_id" : "58b586d5c3a2f966427abcde"
    }
]

Шаг 5: применить настройки

Для применения настроек подключения к серверу Zabbix необходимо перезапустить сервер Центрального Пульта:

$sudo service saymon-server restart

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

По умолчанию данные на сервере системы обновляются каждые 2 минуты.

Для изменения периода обновления данных необходимо в раздел Zabbix конфигурационного файл сервера /etc/saymon/saymon-server.conf добавить параметр polling_period со значением периода обновления данных в миллисекундах. Например:

"zabbix" : [{
    "url" : "http://192.168.1.215/zabbix/api_jsonrpc.php",
    "user" : "saymon",
    "password" : "saymon_user_password",
    "parent_id" : "58b586d5c3a2f96642e25537",
    "polling_period": 30000
}]

Для применения настроек необходимо перезапустить сервер Центрального Пульта:

$sudo service saymon-server restart

Изменение стандартных опций в запросах Zabbix

Возможно изменять опции для запросов

  • хостов (hosts),

  • триггеров (triggers),

  • данных (data).

Все возможные поля фильтров представлены в документации по Zabbix API:

"zabbix" : [{
...
       "request_options": {
          "hosts": {
            "filter":  {
               ...
            }
          },
          "triggers": {
            "filter": {
                ...
             }
           },
           "data": {
            "filter": {
                ...
             }
           }
        }
...
}]

Чтобы убрать фильтр из опции запроса, необходимо указать параметру filter значение null.

Пример (убрать поле filter из опций запроса триггеров Zabbix):

"zabbix" : [{
...
     "triggers": {
         "filter": null
     }
...
}]

Корреляция класса создаваемых объектов с их именами

Обнаруженным объектам по умолчанию присваивается класс INFO. Чтобы присвоить новым объектам другие классы, необходимо задать массив zabbix.classes в конфигурационном файле сервера /etc/saymon/saymon-server.conf и указать в нём соответствия идентификаторов классов и имён объектов:

"zabbix" : [{
...
        "classes" : {
            "4" : "CPU",
            "619503be0ffb595aebe22222" : "Memory|General"
         },
...
}]

Порядок применения правил привязки не гарантируется.

Если назначить двум разным классам одинаковые регулярные выражения или использовать выражение "."* (любой текст), то нет гарантии, что сначала будет применено правило, указанное выше в списке.

Для каждого Zabbix-подключения массив настраивается индивидуально. Регулярное выражение по имени объекта нечувствительно к регистру символов.

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

Пример:

"619503be0ffb595aebe22222": "Memory|General"

Логирование

Чтобы выводить параметры и результаты запросов в лог, необходимо задать параметр zabbix.debug со значением true:

"zabbix" : [{
   ...
   "debug": true,
   ...
   }
]