This is a translation of the original English documentation page. Help us make it better.

3 Скрипте

Преглед

У одељку Упозорења → Скрипте могу се конфигурисати и одржавати кориснички дефинисане глобалне скрипте.

Глобалне скрипте, у зависности од конфигурисаног опсега и корисничких дозвола, доступне су за извршавање:

  • из менија домаћина на различитим локацијама на корисничком интерфејсу (Контролна табла, Проблеми, Најновији подаци, Мапе, итд.)
  • из менија догађаја
  • могу се покренути као акциона операција

Скрипте се извршавају само на Zabbix агенту, Zabbix серверу (прокси) или Zabbix серверу.

Погледајте такође Извршавање команди.

И на Zabbix агенту и на Zabbix проксију, удаљене скрипте су подразумевано онемогућене. Могу се омогућити на следећи начин:

  • За удаљене команде извршне на Zabbix агенту:
  • додавањем параметра AllowKey=system.run[<команда>,*] за сваку дозвољену команду у конфигурацији агента, * означава режим чекања и без чекања;
  • За удаљене команде извршне на Zabbix проксију:
  • Упозорење: Није потребно омогућити удаљене команде на Zabbix проксију ако се удаљене команде извршавају на Zabbix агенту који прати Zabbix прокси. Међутим, ако је потребно извршити удаљене команде на Zabbix проксију, поставите параметар EnableRemoteCommands на '1' у конфигурацији проксија.

Глобално извршавање скрипти на Zabbix серверу може се онемогућити подешавањем EnableGlobalScripts=0 у конфигурацији сервера. За нове инсталације, од Zabbix 7.0, глобално извршавање скрипти на Zabbix серверу је подразумевано онемогућено.

Приказује се листа постојећих скрипти са њиховим детаљима.

Приказани подаци:

Column Description
Назив Назив скрипте. Кликом на назив скрипте отвара се [форма за конфигурацију] скрипте (scripts#configuring_a_global_script).
Опсег Опсег скрипте - операција акције, ручна акција хоста или ручна акција догађаја. Ово подешавање одређује где је скрипта доступна.
Користи се у акцијама Приказују се све акције где се скрипта користи, а претходи им укупан број тих акција.
Кликом на назив акције отвара се формулар за конфигурацију акције. Ако корисник нема дозволе за акцију, назив није кликабилан.
Тип Приказује се тип скрипте - URL, Webhook, Script, SSH, Telnet или IPMI команда.
Изврши на Приказује се да ли ће се скрипта извршити на Zabbix агенту, Zabbix проксију или серверу, или само на Zabbix серверу.
Команде Приказују се све команде које треба извршити унутар скрипте.
Овде се ништа не приказује за вебхукове.
Група корисника Приказује се група корисника којој је скрипта доступна (или Сви за све групе корисника).
Група домаћина Приказује се група домаћина за коју је скрипта доступна (или Сви за све групе домаћина).
Приступ домаћина Приказује се ниво дозвола за групу домаћина - Читање или Писање. Само корисници са потребним нивоом дозвола имаће приступ извршавању скрипте.

Да бисте конфигурисали нову скрипту, кликните на дугме Креирај скрипту у горњем десном углу.

Опције масовног уређивања

Дугме испод листе нуди једну опцију масовног уређивања:

  • Избриши - брисање скрипте

Да бисте користили ову опцију, означите поља за потврду испред одговарајућих скрипти и кликните на Избриши.

Коришћење филтера

Можете користити филтер да прикажете само скрипте које вас занимају. За боље перформансе претраге, подаци се претражују помоћу неразрешених макроа.

Веза Филтер доступна је изнад листе скрипти. Ако кликнете на њу, постаје доступан филтер где можете да филтрирате скрипте по имену и обиму.

Конфигурисање глобалне скрипта

Атрибути скрипте:

Parameter Description
Name Јединствено име скрипте.
E.g. Clear /tmp filesystem
Scope Обим скрипте - акциона операција, ручна акција домаћина или ручна акција догађаја. Ово подешавање одређује где се скрипта може користити - у удаљеним командама акционих операција, од host menu или од event menu респективно.
Постављање опсега на 'Action operation' чини скрипту доступном свим корисницима са приступом УпозорењаРадње.
Ако се скрипта заправо користи у акцији, њен опсег се не може променити ван 'action operation'.
Macro support
Опсег утиче на распон доступних макроа. На пример, макрои везани за кориснике ({USER.*}) су подржане у скриптама како би се омогућило прослеђивање информација о кориснику који је покренуо скрипту. Међутим, нису подржане ако је опсег скрипте акциона операција, јер се акционе операције извршавају аутоматски.
A {MANUALINPUT} Макро омогућава ручно навођење уноса у време извршавања скрипте. Подржан је за скрипте за ручне акције домаћина и ручне акције догађаја.
Да бисте сазнали који су други макрои подржани, претражите 'Trigger-based notifications and commands/Trigger-based commands', 'Manual host action scripts' и 'Manual event action scripts' у supported macro табела. Имајте на уму да ако макро може да се реши као вредност са размацима (на пример, име домаћина), не заборавите да га по потреби ставите под наводнике.
Menu path Жељена путања менија до скрипте. На пример, Default или Default/, ће приказати скрипту у одговарајућем директоријуму. Менији могу бити угнежђени, нпр. Main menu/Sub menu1/Sub menu2. Приликом приступа скриптама преко менија домаћина/догађај у одељцима за праћење, оне ће бити организоване према датим директоријумима.
Ово поље се приказује само ако 'Manual host action' или 'Manual event action' је изабран као Scope.
Type Кликните на одговарајуће дугме да бисте изабрали тип скрипте:
URL, Webhook, Script, SSH, Telnet или IPMI команде.
Тип URL је доступно само када 'Manual host action' или 'Manual event action' је изабран као Scope.
Тип скрипте: URL
URL Наведите URL адресу за брзи приступ са host menu или event menu.
Macros и прилагођено user macros су подржани. Подршка за макрое зависи од обима скрипте (видети Scope изнад).
Користите {MANUALINPUT} макро у овом пољу да би се могао навести ручни унос у време извршавања скрипте, на пример:
http://{MANUALINPUT}/zabbix/zabbix.php?action=dashboard.view
Вредности макроа не смеју бити URL кодиране.
Open in new window Одређује да ли URL треба отворити у новој или истој картици прегледача.
Тип скрипте: Webhook
Parameters Наведите променљиве вебхука као парове атрибут-вредност.
Погледајте такође: Webhook конфигурација медија.
Macros и прилагођено user macros су подржани у вредностима параметара. Подршка за макрое зависи од обима скрипте (видети Scope изнад).
Script Унесите JavaScript код у блок који се појављује када кликнете на поље за параметре (или на дугме за преглед/уређивање поред њега).
Подршка за макрое зависи од обима скрипте (видети Scope изнад).
Видети и: Webhook конфигурација медија, Additional Javascript objects.
Timeout JavaScript време чекања за извршење (1-60s, подраѕумевано 30s).
Временски суфикси су подржани, нпр. 30s, 1m.
Тип скрипте: Script
Execute on Кликните на одговарајуће дугме да бисте извршили шел скрипту на:
Zabbix agent - Скрипту ће извршити Zabbix агент (ако је system.run ставка је allowed) на домаћину
Zabbix proxy or server -скрипта ће бити извршена од стране Zabbix проксија или сервера - у зависности од тога да ли домаћин надгледа прокси или сервер.
Биће извршено на проксију ако је то омогућено од стране EnableRemoteCommands.
Биће извршено на серверу ако су глобални скриптови омогућени од стране EnableGlobalScripts сервер параметар.
Zabbix server - скрипту ће извршити само Zabbix сервер.
Ова опција неће бити доступна ако су глобални скриптови онемогућени од стране EnableGlobalScripts параметар сервера.
Commands Унесите пуну путању до команди које треба извршити у скрипти.
Подршка за макрое зависи од обима скрипте (погледајте Scope изнад). Прилагођено user macros су подржани.
Тип скрипте: SSH
Authentication method Изаберите метод аутентификације - лозинку или јавни кључ.
Username Унесите корисничко име.
Password Унесите лозинку.
Ово поље је доступно ако 'Password' је изабран као метод аутентификације.
Public key file Унесите путању до датотеке јавног кључа.
Ово поље је доступно ако 'Public key' је изабран као метод аутентификације.
Private key file Унесите путању до датотеке приватног кључа.
Ово поље је доступно ако 'Public key' је изабран као метод аутентификације.
Passphrase Унесите лозинку.
Ово поље је доступно ако 'Public key' је изабран као метод аутентификације.
Port Уђите у луку.
Commands Унесите команде.
Подршка за макрое зависи од обима скрипте (видети Scope изнад). Прилагођено user macros су подржани.
Тип скрипте: Telnet
Username Унесите корисничко име.
Password Унесите лозинку.
Port Унесите порт.
Commands Унесите команде.
Подршка за макрое зависи од обима скрипте (видети Scope изнад). Прилагођено user macros су подржани.
Тип скрипте: IPMI
Command Унесите IPMI команду.
Подршка за макрое зависи од обима скрипте (видети Scope изнад). Прилагођено user macros је подржано.
Description Унесите опис скрипте.
Host group Изаберите групу хостова за коју ће скрипта бити доступна (или All за све групе домаћина).
User group Изаберите корисничку групу којој ће скрипта бити доступна (или All ѕа све групе корисника).
Ово поље се приказује само ако 'Manual host action' или 'Manual event action' је изабран као Scope.
Required host permissions Изаберите ниво дозвола за групу домаћина - Read или Write. Само корисници са потребним нивоом дозвола имаће приступ извршавању скрипте.
Ово поље се приказује само ако 'Manual host action' или 'Manual event action' је изабран као Scope.
Advanced configuration Кликните на Advanced configuration ознака за приказ advanced configuration опције.
Ово поље се приказује само ако 'Manual host action' или 'Manual event action' је изабран као Scope.

Напредна конфигурација

Напредне опције конфигурације су доступне у одељку Напредна конфигурација који се може склопити:

Parameter Description
Омогући кориснички унос Означите поље за потврду да бисте омогућили ручни кориснички унос пре извршавања скрипте.
Ручни кориснички унос ће заменити вредност макроа {MANUALINPUT} у скрипти.
Погледајте такође: Ручни кориснички унос.
Упит за унос Унесите прилагођени текст који захтева прилагођени кориснички унос. Овај текст ће бити приказан изнад поља за унос у искачућем прозору Ручни унос.
Да бисте видели преглед искачућег прозора Ручни унос, кликните на Тестирај кориснички унос. Преглед такође омогућава тестирање да ли је улазни стринг у складу са правилом валидације уноса (погледајте параметре испод).
Подршка за макрое и корисничке макрое зависи од опсега скрипте (погледајте Опсег у општим параметрима конфигурације скрипте).
Тип уноса Изаберите тип ручног уноса:
Стринг - један стринг;
Падајући мени - вредност се бира из више падајућих опција.
Опције падајућег менија Унесите јединствене вредности за падајући мени за кориснички унос у листи раздвојеној зарезима.
Да бисте укључили празну опцију у падајући мени, додајте додатни зарез на почетку, средини или крају листе.
Ово поље се приказује само ако је 'Падајући мени' изабрано као Тип уноса.
Подразумевани стринг за унос Унесите подразумевани стринг за кориснички унос (или ниједан).
Ово поље ће бити валидирано у односу на регуларни израз наведен у пољу Правило валидације уноса.
Вредност унета овде ће бити приказана подразумевано у искачућем прозору Ручни унос.
Ово поље се приказује само ако је 'Стринг' изабрано као Тип уноса.
Правило валидације уноса Унесите регуларни израз да бисте валидирали стринг корисничког уноса.
Подржани су глобални регуларни изрази.
Ово поље се приказује само ако је 'Стринг' изабрано као Тип уноса.
Омогући потврду Означите поље за потврду да бисте приказали поруку потврде пре извршавања скрипте. Ова функција може бити посебно корисна код потенцијално опасних операција (као што је скрипта за поновно покретање) или оних које могу трајати дуго.
Текст потврде Унесите прилагођени текст потврде за искачући прозор потврде омогућен помоћу горњег поља за потврду (на пример, Удаљени систем ће бити поново покренут. Да ли сте сигурни?). Да бисте видели како ће текст изгледати, кликните на Тест потврде поред поља.
Подржани су Макрои и прилагођени кориснички макрои.
Напомена: макрои се неће проширити приликом тестирања поруке потврде.

Ако су конфигурисани и ручни унос корисника и порука потврде, биће приказани у узастопним искачућим прозорима.

Ручни унос корисника

Ручни унос корисника омогућава додавање прилагођеног параметра при сваком извршавању скрипте. Ово штеди потребу за креирањем више сличних корисничких скрипти са само једном разликом у параметру.

На пример, можда ћете желети да додате другачији цео број или другачију URL адресу скрипти током извршавања.

Да бисте омогућили ручни унос корисника:

  • користите макро {MANUALINPUT} у скрипти (командe, скрипта, параметар скрипте) где је потребно; или у пољу URL URL скрипти;
  • у напредна конфигурација скрипте, омогућите ручни унос корисника и конфигуришите опције уноса.

Када је омогућен унос корисника, пре извршавања скрипте, кориснику ће се појавити искачући прозор Ручни унос са захтевом да унесе прилагођену вредност. Унета вредност ће заменити {MANUALINPUT} у скрипти.

У зависности од конфигурације, од корисника ће се тражити да унесе вредност типа стринг:

Или изаберите вредност из падајућег менија са унапред одређеним опцијама:

Ручни унос корисника је доступан само за скрипте где је опсег 'Ручна акција домаћина' или 'Ручна акција догађаја'.

Извршавање скрипте и резултат

Скрипте које покреће Zabbix сервер извршавају се редоследом описаним на страници за извршавање команди.

Резултат скрипте се приказује у искачућем прозору који се појављује након покретања скрипте. Повратна вредност скрипте је стандардни излаз:

  • Ако се скрипта успешно заврши (излазни код 0), повратна вредност је ограничена на 16MB (укључујући скраћени размак на крају).
  • Ако се скрипта заврши са грешком (излазни код који није нула), повратна вредност је стандардна грешка ограничена на 2KB.

Zabbix подразумевано не чува проширени излаз скрипте. Да бисте сачували све детаље излаза, можете имплементирати евидентирање унутар саме скрипте (нпр. преусмерити излаз у локалну датотеку дневника).

Имајте на уму да се за скрипте извршне на Zabbix серверу или Zabbix проксију такође примењују ограничења базе података.

Испод је пример скрипте и прозор са резултатима:

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

Резултат скрипте не приказује саму скрипту.

Време истека скрипте

Zabbix агент

Може се десити да дође до истека времена при извршавању скрипте.

Погледајте пример скрипте која се покреће на Zabbix агенту и прозор са резултатима испод:

sleep 5 df -h

Порука о грешци, у овом случају, је следећа:

Истек времена при извршавању shell скрипте.

Да бисте избегли такве ситуације, препоручује се оптимизација саме скрипте (у горњем примеру, "5") уместо подешавања параметра Timeout у Конфигурација Zabbix агента и Конфигурација Zabbix сервера. Међутим, за Zabbix агента у активном режиму, параметар Timeout у Конфигурација Zabbix сервера треба да буде барем неколико секунди дужи од параметра RefreshActiveChecks у Конфигурација Zabbix агента. Ово осигурава да сервер има довољно времена да прими резултате активне провере од агента. Имајте на уму да је извршавање скрипте на активном агенту подржано од Zabbix агента 7.0.

У случају да је параметар Timeout промењен у Конфигурација Zabbix агента, појавиће се следећа порука о грешци:

Get value from agent failed: ZBX_TCP_READ() timeout.

То значи да је измена направљена у конфигурацији Zabbix агента, али је потребно изменити и параметар Timeout у конфигурацији Zabbix сервера.

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

Погледајте пример скрипте која се покреће на Zabbix серверу и прозор са резултатима испод:

sleep 11 df -h

Такође се препоручује оптимизација саме скрипте (уместо подешавања параметра TrapperTimeout на одговарајућу вредност (у нашем случају, > '11') изменом конфигурације Zabbix сервера).