У одељку Упозорења → Скрипте могу се конфигурисати и одржавати кориснички дефинисане глобалне скрипте.
Глобалне скрипте, у зависности од конфигурисаног опсега и корисничких дозвола, доступне су за извршавање:
Скрипте се извршавају само на Zabbix агенту, Zabbix серверу (прокси) или Zabbix серверу.
Погледајте такође Извршавање команди.
И на Zabbix агенту и на Zabbix проксију, удаљене скрипте су подразумевано онемогућене. Могу се омогућити на следећи начин:
Глобално извршавање скрипти на 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} у скрипти.
У зависности од конфигурације, од корисника ће се тражити да унесе вредност типа стринг:
Или изаберите вредност из падајућег менија са унапред одређеним опцијама:
Ручни унос корисника је доступан само за скрипте где је опсег 'Ручна акција домаћина' или 'Ручна акција догађаја'.
Скрипте које покреће Zabbix сервер извршавају се редоследом описаним на страници за извршавање команди.
Резултат скрипте се приказује у искачућем прозору који се појављује након покретања скрипте. Повратна вредност скрипте је стандардни излаз:
0
), повратна вредност је ограничена на 16MB (укључујући скраћени размак на крају).Zabbix подразумевано не чува проширени излаз скрипте. Да бисте сачували све детаље излаза, можете имплементирати евидентирање унутар саме скрипте (нпр. преусмерити излаз у локалну датотеку дневника).
Имајте на уму да се за скрипте извршне на Zabbix серверу или Zabbix проксију такође примењују ограничења базе података.
Испод је пример скрипте и прозор са резултатима:
uname -v /tmp/non_existing_script.sh echo "This script was started by {USER.USERNAME}"
Резултат скрипте не приказује саму скрипту.
Може се десити да дође до истека времена при извршавању скрипте.
Погледајте пример скрипте која се покреће на 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 серверу и прозор са резултатима испод:
sleep 11 df -h
Такође се препоручује оптимизација саме скрипте (уместо подешавања параметра TrapperTimeout
на одговарајућу вредност (у нашем случају, > '11') изменом конфигурације Zabbix сервера).