8. Скрипты

Обзор

В разделе Администрирование → Скрипты можно настраивать и поддерживать пользовательские глобальные скрипты.

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

  • из меню узлов сети в различных местах веб-интерфейса (Панель, Проблемы, Последние данные, Карты сетей и т.д.)
  • из меню события
  • могут быть запущены в качестве операции действия

Скрипты выполняются на Zabbix агенте, Zabbix сервере (прокси) или только Zabbix сервере. Смотрите также Выполнение команд.

Как на Zabbix агенте, так и на Zabbix прокси удалённые скрипты по умолчанию запрещены. Их можно разрешить следующим образом:

  • Для удалённых команд, выполняемых на агенте Zabbix:
    • путём добавления в конфигурацию агента параметра AllowKey=system.run[<command>,*] для каждой разрешаемой команды, * означает режимы как wait, так и nowait.
  • Для удалённых команд, выполняемых на Zabbix прокси:
    • Предупреждение: Не требуется включать удалённые команды на Zabbix прокси, если удалённые команды выполняются на агенте Zabbix, который контролируется Zabbix прокси сервером. Однако, если требуется выполнять удалённые команды на Zabbix прокси, то в конфигурации прокси установите параметр EnableRemoteCommands в «1» .

Здесь отображается список существующих скриптов с подробной информацией о них.

Отображаемые данные:

Столбец Описание
Имя (Name) Имя скрипта. При нажатии на имя скрипта откроется диалог настройки этого скрипта.
Область (Scope) Область действия скрипта — операция действия, действие вручную над узлом сети или действие вручную над событиями. Этот параметр определяет, где доступен скрипт.
Использование в действия
(Used in actions)
Отображаются действия, где используется скрипт.
Тип (Type) Отображается тип скрипта — Webhook, Скрипт, SSH, Telnet или команда IPMI.
Выполнение на
(Execute on)
Отображается, будет ли скрипт выполняться на Zabbix агенте, Zabbix сервере (прокси) или только на Zabbix сервере.
Команды (Commands) Отображаются все команды, выполняемые скриптом.
Группа пользователей
(User group)
Отображается группа пользователей, которой доступен этот скрипт (или Все при всех группах пользователей).
Группа узлов сети
(Host group)
Отображается группа узлов сети, которой доступен этот скрипт (или Все при всех группах узлов сети).
Доступ к узлам сети
(Host access)
Отображается уровень прав доступа к группе узлов сети — Чтение или Запись. Только пользователи с требуемым уровнем прав доступа смогут иметь доступ к выполнению скрипта.

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

Опции массового редактирования

Кнопки ниже списка предлагают некоторые опции массового редактирования:

  • Удалить — удалить скрипты

Для использования этой опции отметьте флажки перед соответствующими скриптами и нажмите на кнопку Удалить.

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

Для отображения только интересующих вас скриптов вы можете использовать фильтр. Для лучшей эффективности поиска данные ищутся с нераскрытыми макросами.

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

Настройка глобального скрипта

Атрибуты скрипта:

Параметр Описание
Имя
(Name)
Уникальное имя скрипта.
Например: Очистить файловую систему /tmp
Область
(Scope)
Область действия скрипта — операция действия, действие вручную над узлом сети или действие вручную над событиями. Этот параметр определяет, где может использоваться скрипт - в удалённых командах операций действия, из меню узлов сети или из меню события соответственно.
Если область действия выставить в значение «Операция действия», то скрипт станет доступным всем пользователям, имеющим права доступа к НастройкаДействия.
Если скрипт реально используется в каком-либо действии, значение его области действия «Операция действия» нельзя поменять на что-то другое.
Поддержка макросов
Область действия влияет на набор доступных макросов. Например, относящиеся к пользователю макросы ({USER.*}) поддерживаются в скриптах, чтобы позволить передать информацию о том пользователе, который запустил скрипт. Однако, если область действия скрипта - операция действия, то эти макросы не поддерживаются, поскольку операции действия выполняются автоматически.
Чтобы найти, какие макросы поддерживаются, выполните поиск по фразам «Оповещения и команды на события триггеров/Команды на события триггеров», «Скрипты действий вручную над узлом сети» и «Скрипты действий вручную над событиями» в таблице поддерживаемых макросов. Обратите внимание, что если макрос может раскрыться в значение, содержащее пробелы (например, имя узла сети), не забудьте заключить его в кавычки при необходимости.
Путь в меню
(Menu path)
Желаемый путь к скрипту в меню. Например, Default или Default/ будет отображать скрипт в соответствующей папке. Меню могут быть вложенными, например: Главное меню/Вложенное меню1/Вложенное меню2. При доступе к скриптам через меню узла сети или события в разделах мониторинга, они будут организованы в соответствии с данными папками.
Это поле отображается, только если для параметра Область выбраны значения «Действие вручную над узлом сети» или «Действие вручную над событиями».
Тип
(Type)
Нажмите на соответствующую кнопку для выбора типа скрипта:
Webhook, Скрипт, SSH, Telnet или команда IPMI.
Тип скрипта: Webhook
Параметры
(Parameters)
Укажите переменные вебхука в виде пар атрибут-значение.
Смотрите также: настройка способа оповещения Вебхук.
В значениях параметров поддерживаются макросы и настраиваемые пользовательские макросы. Поддержка макросов зависит от области действия скрипта (см. Область выше).
Скрипт
(Script)
Введите код JavaScript в блоке, который появляется при нажатии на поле параметра (или на кнопку просмотра/изменения рядом с ним).
Поддержка макросов зависит от области действия скрипта (см. Область выше).
Смотрите также: настройка способа оповещения Вебхук, Дополнительные объекты JavaScript.
Время ожидания
(Timeout)
Тайм-аут выполнения JavaScript (1-60s, по умолчанию 30s).
Поддерживаются суффиксы времени, например: 30s, 1m.
Тип скрипта: Скрипт
Выполнение на
(Execute on)
Нажмите на соответствующую кнопку для выполнения скрипта оболочки на:
Zabbix агент — скрипт будет выполняться агентом Zabbix (если элемент данных system.run разрешён) на узле сети
Zabbix сервер (прокси) — скрипт будет выполняться Zabbix сервером или прокси (если разрешено параметром EnableRemoteCommands) — в зависимости от того, контролируется ли узел сети сервером или прокси
Zabbix сервер — скрипт будет выполняться только сервером Zabbix
Команды
(Commands)
Введите полный путь к командам, которые будут выполняться в скрипте.
Поддержка макросов зависит от области действия скрипта (см. Область выше). Также поддерживаются настраиваемые пользовательские макросы.
Тип скрипта: SSH
Метод аутентификации
(Authentication method)
Выберите метод аутентификации — пароль или публичный ключ.
Имя пользователя
(Username)
Введите имя пользователя.
Пароль
(Password)
Введите пароль.
Это поле доступно, если в качестве метода аутентификации выбрано «Пароль».
Файл публичного ключа
(Public key file)
Введите путь к файлу с открытым ключом (public key file).
Это поле доступно, если в качестве метода аутентификации выбрано «Публичный ключ».
Файл приватного ключа
(Private key file)
Введите путь к файлу с закрытым ключом (private key file).
Это поле доступно, если в качестве метода аутентификации выбрано «Публичный ключ».
Фраза-пароль ключа
(Passphrase)
Введите парольную фразу (passphrase).
Это поле доступно, если в качестве метода аутентификации выбрано «Публичный ключ».
Порт
(Port)
Введите порт.
Команды
(Commands)
Введите команды.
Поддержка макросов зависит от области действия скрипта (см. Область выше). Также поддерживаются настраиваемые пользовательские макросы.
Тип скрипта: Telnet
Имя пользователя
(Username)
Введите имя пользователя.
Пароль
(Password)
Введите пароль.
Порт
(Port)
Введите порт.
Команды
(Commands)
Введите команды.
Поддержка макросов зависит от области действия скрипта (см. Область выше). Также поддерживаются настраиваемые пользовательские макросы.
Тип скрипта: IPMI
Команды
(Command)
Введите команды IPMI.
Поддержка макросов зависит от области действия скрипта (см. Область выше). Также поддерживаются настраиваемые пользовательские макросы.
Описание
(Description)
Введите описание для скрипта.
Группа узлов сети
(Host group)
Выберите группу узлов сети, которой будет доступен этот скрипт (или Все для всех групп узлов сети).
Группа пользователей
(User group)
Выберите группу пользователей, которой будет доступен этот скрипт (или Все для всех групп пользователей).
Это поле отображается, только если для параметра Область выбраны значения «Действие вручную над узлом сети» или «Действие вручную над событиями».
Требуемые права доступа к узлам сети
(Required host permissions)
Выберите уровень прав доступа к группе узлов сети — Чтение или Запись. Только пользователи с требуемым уровнем прав доступа будут иметь доступ на выполнение скрипта.
Это поле отображается, только если для параметра Область выбраны значения «Действие вручную над узлом сети» или «Действие вручную над событиями».
Включить подтверждение
(Enable confirmation)
Отметьте эту опцию, чтобы перед выполнением скрипта отображалось сообщение подтверждения. Эта возможность может быть особенно полезна при потенциально опасных операциях (таких как скрипт перезагрузки) или при операциях, которые могут занять продолжительное время.
Это поле отображается, только если для параметра Область выбраны значения «Действие вручную над узлом сети» или «Действие вручную над событиями».
Текст подтверждения
(Confirmation text)
Введите текст подтверждения, если всплывающее окно подтверждения было включено выше (например: Удалённая система будет перезагружена. Вы уверены?). Для просмотра того, как этот текст будет выглядеть, нажмите на Тест подтверждения после поля ввода.
Поддерживаются макросы {HOST.*} и {USER.*}. Поддерживаются настраиваемые [пользовательские макросы].
Предупреждение: Макросы не будут раскрыты при тестировании сообщений подтверждения.
Это поле отображается, только если для параметра Область выбраны значения «Действие вручную над узлом сети» или «Действие вручную над событиями».

Выполнение скрипта и результат

Скрипты, запускаемые Zabbix сервером, выполняются в порядке, описанном на странице Выполнение команд (включая проверку кода завершения). Результат выполнения скрипта будет отображён во всплывающем окне, которое появится после запуска скрипта.

Возвращаемым значением скрипта является стандартный вывод вместе со стандартным выводом ошибок.

Возвращаемое значение ограничено 16 МБ (включая конечные пробелы, которые усекаются); также применяются ограничения базы данных. Когда данные должны проходить через Zabbix прокси, они должны сохраняться в его базе данных, поэтому к ним применимы те же ограничения базы данных.

Смотрите пример скрипта и окно с результатом ниже:

uname -v
       /tmp/non_existing_script.sh
       echo "This script was started by {USER.USERNAME}"

Результат скрипта не отображает текст самого скрипта.

Время ожидания выполнения скриптов

Zabbix агент

Вы можете столкнуться с ситуацией, когда при выполнении скрипта произойдёт превышение времени ожидания.

Посмотрите ниже пример скрипта, запускаемого на Zabbix агенте, и окно с результатом:

sleep 5
       df -h

Сообщение об ошибке в этом случае будет следующим:

Превышено время ожидания при выполнении скрипта командной строки.
       (Timeout while executing a shell script).

Чтобы избежать подобной ситуации, рекомендуется выполнить оптимизацию самого скрипта (вместо изменения параметра Timeout до соответствующего значения (в нашем случае, > ‘5’) в конфигурации Zabbix агента и конфигурации Zabbix сервера).

В случае, если параметр Timeout изменён в конфигурации Zabbix агента, всё ещё появляется следующее сообщение об ошибке:

Get value from agent failed: ZBX_TCP_READ() timed out.

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

Zabbix сервер/прокси

Посмотрите ниже пример запуска скрипта на Zabbix сервере и окно с результатом:

sleep 11
       df -h

Также рекомендуется выполнить оптимизацию самого скрипта (вместо изменения параметра TrapperTimeout до соответствующего значения (в нашем случае, > ‘11’) в конфигурации Zabbix сервера).