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

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

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

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

Шаг 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",
    "zabbix5": true
}]

где

  • 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;

  • zabbix5 – включить поддержку Zabbix 5.x.

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

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

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

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

$sudo service saymon-server restart

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

Интеграцию с Zabbix 6.0 поддерживает только сервер Центрального пульта начиная с версии 3.14.89. Более ранние версии сервера поддерживают только интеграцию с Zabbix 5.x.
Ниже приводится описание интеграции с Zabbix 6.0, запущенным из docker-контейнера.

Чтобы настроить интеграцию Центрального пульта с Zabbix 6.0, выполните следующие действия:

Шаг 1: запуск Zabbix

  1. Склонируйте репозиторий Zabbix:

    git clone https://github.com/zabbix/zabbix-docker
  2. Выберите нужный docker-файл из склонированного репозитория и запустите его, например:

    docker-compose -f ./docker-compose_v3_alpine_mysql_latest.yaml up -d

Шаг 2: настройка автоматического запуска Zabbix

Чтобы при перезапуске сервера контейнеры запускались автоматически, создайте systemd-unit, который будет запускать docker-compose файл при загрузке системы. Для этого cоздайте файл /etc/systemd/system/zabbix-compose.service и вставьте в него следующее содержимое:

[Unit]
Description=Zabbix services with docker-compose
Requires=docker.service
After=docker.service

[Service]
WorkingDirectory=/opt/zabbix-docker/
User=root
Group=docker
Type=oneshot
RemainAfterExit=yes

ExecStartPre=/usr/local/bin/docker-compose -f ./docker-compose_v3_alpine_mysql_latest.yaml down -v

# Compose up
ExecStart=/usr/local/bin/docker-compose -f ./docker-compose_v3_alpine_mysql_latest.yaml up -d

# Compose down, remove containers
ExecStop=/usr/local/bin/docker-compose -f ./docker-compose_v3_alpine_mysql_latest.yaml down

[Install]
WantedBy=multi-user.target

Для применения изменений, последовательно выполните следующие команды:

$systemctl enable zabbix-compose.service

$systemctl daemon-reload

$systemctl start zabbix-compose.service

Шаг 3: загрузка и запуск Zabbix Agent

Скачайте и установите Zabbix Agent.

Для работы с сервисом Zabbix Agent используйте указанные ниже команды.

Редактирование конфигурационного файла:

$sudo nano /etc/zabbix/zabbix_agentd.conf

Запуск сервиса:

$sudo systemctl start zabbix-agent

Проверка состояния сервиса:

$sudo systemctl status zabbix-agent

Остановка сервиса:

$sudo systemctl stop zabbix-agent

Шаг 4: подключение Zabbix Agent

  1. Выполните вход в web-интерфейс сервера Zabbix (http://host/zabbix).

    image

    По умолчанию:

    Логин: Admin

    Пароль: zabbix

  2. Укажите место установки Zabbix Agent. Для этого выполните следующее:

    В боковом меню выберите Monitoring и затем нажмите кнопку Create host в правом верхнем углу.

    image
  3. В открывшемся диалоговом окне задайте значения следующих параметров:

    • Host name – имя хоста (например, Zabbix server);

    • Host groups – группы хостов; нажмите кнопку Select и в открывшемся меню выберите Zabbix-servers);

    • В секции Interfaces нажмите кнопку Add и в открывшемся меню выберите пункт Agent;

    • В полях IP address, DNS name, Connect to и Port задайте параметры подключения агента.

      image
  4. Нажмите кнопку Add.

В результате сервер Zabbix будет получать данные с агента.

Шаг 5: создание объекта для мониторинга

Создайте новый объект (item) для мониторинга. Для этого выполните следующее:

  1. Нажмите на имя созданного сервера и в открывшемся меню выберите Items.

    image
  2. Нажмите кнопку Create item в правом верхнем углу станицы.

    image
  3. В открывшемся диалоговом окне задайте нужные параметры для item.

    image
  4. Переключитесь на вкладку Tags, задайте нужные теги и нажмите кнопку Add.

    image

Шаг 6: создание триггера

Переключитесь на вкладку Triggers и нажмите кнопку Create trigger, чтобы создать новый триггер.

В качестве примера создайте триггер (например, file-size-trigger) на размер файла более 1Б и нажмите кнопку Add. Если размер превысит 10 байт, то возникнет авария уровня HIGH.

image

Шаг 7: настройка подключения к серверу Центрального пульта

Для подключения Центрального пульта к серверу Zabbix в конфигурационном файле saymon-server.conf укажите адрес сервера Zabbix и затем перезапустите сервер Центрального пульта (подробнее см. Конфигурация сервера).

$sudo service saymon-server restart

В списке объектов Центрального пульта отобразится Zabbix-хост и его дочерние объекты.

image

Шаг 8: управление событием

Для создания аварии на хосте выполните команду:

$echo -n "create an accident" > /home/zabbix/test-file.txt

Для устранения аварии на хосте выполните команду:

$echo -n "clean" > /home/zabbix/test-file.txt

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

По умолчанию данные на сервере системы обновляются каждые 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,
   ...
   }
]