3 Скрипте

Преглед

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

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

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

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

И за Zabbix агента и Zabbix прокси удаљене скрипте су подразумевано онемогућене. Они могу бити омогућени помоћу:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Parameter Description
Назив Јединствено име скрипте.
На пример, Clear /tmp filesystem
Опсег Опсег скрипте - операција акције, ручна акција домаћина или ручна акција догађаја. Ово подешавање одређује где се скрипта може користити - у даљинским командама акционих операција, из менија домаћина или из менија догађаја респективно.
Подешавање опсега на 'Action operation' чини скрипту доступном за све кориснике са приступом УпозораАкције.
Ако се скрипта заиста користи у акцији, њен опсег се не може променити од 'action operation'.
Подршка за макрое
Опсег утиче на опсег доступних макроа. На пример, макрои који се односе на корисника ({USER.*}) су подржани у скриптама како би се омогућило преношење информација о кориснику који је покренуо скрипту. Међутим, они нису подржани ако је опсег скрипте операција акције, пошто се акције извршавају аутоматски.
Макро {MANUALINPUT} омогућава да се наведе ручни унос у време извршавања скрипте. Подржан је за ручне акције домаћина и ручне скрипте за акције догађаја.
Да бисте сазнали који други макрои су подржани, претражите 'Trigger-based notifications and commands/Trigger-based commands', 'Manual host action scripts' и 'Manual event action scripts' у табели подржани макро. Имајте на уму да ако макро може да разреши вредност са размацима (на пример, име домаћина), не заборавите да ставите под наводнике по потреби.
Путања у менију Жељена путања менија до скрипте. На пример, Default или Default/, ће приказати скрипту у одговарајућем директоријуму. Менији могу бити угњеждени, нпр. Main menu/Sub menu1/Sub menu2. Када приступате скриптама преко менија домаћина/догађаја у секцијама за надгледање, они ће бити организовани према датим директоријумима.
Ово поље се приказује само ако је 'Manual host action' или 'Manual event action' изабрано као Опсег.
Тип Кликните на одговарајуће дугме да бисте изабрали тип скрипте:
URL, Webhook, Script, SSH, Telnet команда IPMI.
Тип URL је доступан само када је у 'Manual host action' или 'Manual event action' селектовано Scope.
Тип скрипте: URL
URL Наведите УРЛ за брзи приступ из менија домаћина или менија догађаја.
Макрои и прилагођени кориснички макрои су подржани. Подршка макроа зависи од обима скрипте (погледајте Опсег изнад).
Користите макро {MANUALINPUT} у овом пољу да бисте могли да наведете ручни унос у време извршавања скрипте, на пример:
http://{MANUALINPUT}/zabbix/zabbix.php?action=dashboard.view
Вредности макроа не смеју бити кодиране у URL-у.
Отвори у новом прозору Одређује да ли URL треба да се отвори у новој или истој картици претраживача.
Тип скрипте: Вебхук
Параметри Наведите променљиве вебхука као парове атрибут-вредност.
Погледајте и: Вебхук конфигурацију медија.
Макрои и прилагођени кориснички макрои су подржани у параметру вредности. Макро подршка зависи од обима скрипте (погледајте Опсег изнад).
Скрипта Унесите JavaScript код у модални уређивач који се отвара када кликнете на поље параметара или на икону оловке поред њега.
Подршка за макро зависи од обима скрипте (погледајте Опсег изнад).
Погледајте такође : Вебхук конфигурацију медија, Додатни Javascript објекти.
Време чекања Време чекања за извршење JavaScript-а (1-60 секунди, подразумевано 30 секунди).
Подржани су суфикси за време, на пример, 30s, 1m.
Тип скрипте: Скрипта
Извршити на Кликните на одговарајуће дугме да бисте извршили shell скрипту на:
** Zabbix агент** - скрипту ће извршити Zabbix агент (ако је ставка system.run дозвољена) на домаћину
Zabbix прокси или сервер - скрипту ће извршити Zabbix прокси или сервер - у зависности од тога да ли домаћин надгледа прокси или сервер.
Извршиће се на проксију ако га омогући EnableRemoteCommands.
Биће извршен на серверу ако су глобалне скрипте омогућене на EnableGlobalScripts параметру сервера.
** Zabbix сервер** - скрипту ће извршити само Zabbix сервер.
Ова опција неће бити доступна ако су глобалне скрипте онемогућени од стране EnableGlobalScripts параметра сервера.
Команде Унесите комплетну путању до команди које треба извршити унутар скрипте.
Подршка за макрое зависи од опсега скрипте (погледајте Опсег изнад). Подржани су прилагођени кориснички макрои.
Тип скрипте: SSH
Метод аутентификације Изаберите метод аутентификације - лозинка или јавни кључ.
Username Унесите корисничко име.
Password Унесите лозинку.
Ово поље је доступно ако је као метод аутентификације изабрано поље 'Password'.
Датотека јавног кључа Унесите путању до датотеке са јавним кључем.
Ово поље је доступно ако је као метод аутентификације изабрана 'Public key'.
Датотека приватног кључа Унесите путању до датотеке са приватним кључем.
Ово поље је доступно ако је као метод аутентификације изабрана 'Public key'.
Passphrase Унесите лозинку за кључ.
Ово поље је доступно ако је као метод аутентификације изабрано поље 'Public key'.
Порт Унесите порт.
Команде Унесите команде.
Подршка за макрое зависи од опсега скрипте (погледајте Опсег горе). Подржани су прилагођени кориснички макрои.
Тип скрипте: Telnet
Username Унесите корисничко име.
Password Унесите лозинку.
Порт Унесите порт.
Команде Унесите команде.
Подршка за макрое зависи од опсега скрипте (погледајте Опсег горе). Подржани су прилагођени кориснички макрои.
Тип скрипта: IPMI
Команда Унесите IPMI команду.
Подршка за макрое зависи од опсега скрипта (погледајте Опсег изнад). Подржани су прилагођени кориснички макрои.
Опис Унесите опис скрипте.
Група домаћина Изаберите групу домаћина за коју ће скрипта бити доступна (или Сви за све групе домаћина).
Група корисника Изаберите корисничку групу којој ће скрипта бити доступна (или Сви за све групе корисника).
Ово поље се приказује само ако је као Опсег изабран 'Manual host action' или 'Manual event action'.
Потребне дозволе домаћина Изаберите ниво дозволе за групу домаћина - Read или Write. Само корисници са потребним нивоом дозволе ће имати приступ извршењу скрипте.
Ово поље се приказује само ако је као Опсег изабрано поље 'Manual host action' или 'Manual event action'.
Напредна конфигурација Кликните на ознаку Напредна конфигурација да бисте приказали advanced configuration .
Ово поље се приказује само ако је као Опсег изабрано поље 'Manual host action' или 'Manual event action'.

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

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

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

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

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

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

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

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

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

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

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

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

Ручни унос корисника је доступан само за скрипте чији је опсег подешен на 'Manual host action' или 'Manual event action'.

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

Скрипте које покреће Zabbix сервер се извршавају редоследом описаним на страници Извршавање команде (укључујући проверу излазног кода). Резултат скрипте ће бити приказан у искачућем прозору који ће се појавити након извршавања скрипте.

Повратна вредност скрипте обухвата стандардни излаз заједно са стандардном грешком.

Повратна вредност је ограничена на 16MB (укључујући завршне белине које се одсецају); ограничења базе података такође се примењују. Када подаци морају да прођу кроз Заббик проки, они морају бити сачувани у бази података, подвргавајући их истим ограничењем базе података.

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

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.

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

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

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

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

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

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

sleep 11
       df -h

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