[comment]: # ({d30dc182-d30dc182})
# 2 Кориснички макрои

[comment]: # ({/d30dc182-d30dc182})

[comment]: # ({c282a934-3e220640})
#### Преглед

Кориснички макрои су подржани у Zabbix-у ради веће флексибилности, поред
макроа [подржаних](/manual/appendix/macros/supported_by_location)
уграђених одмах.

Кориснички макрои могу бити дефинисани на глобалном нивоу, нивоу шаблона и домаћина. Ови
макрои имају посебну синтаксу:

{$MACRO}

Zabbix решава макрое према следећем приоритету:

1.  макрои нивоа домаћина (први се проверавају)
2.  макрои дефинисани за шаблоне првог нивоа домаћина (тј., шаблони директно повезани са домаћином), сортирани по ID-у шаблона
3.  макрои дефинисани за шаблоне другог нивоа домаћина, сортирани по ID-у шаблона
4.  макрои дефинисани за шаблоне трећег нивоа домаћина, сортирани по ID-у шаблона, итд.
5.  глобални макрои (последњи се проверавају)

Другим речима, ако макро не постоји за домаћина, Zabbix ће покушати да га
пронађе у шаблонима домаћина све веће дубине. Ако се и даље не пронађе, користиће се
глобални макро, ако постоји.

::: notewarning
Ако макро са **истим именом** постоји на више
повезаних шаблона истог нивоа, користиће се макро из шаблона са
најнижим ID-јем. Стога, присуство макроа са истим именом у
више шаблона представља ризик за конфигурацију.
:::

Ако Zabbix не може да пронађе макро, макро неће бити решен.

::: noteimportant
Макрои (укључујући корисничке макрое) остају нерешени
у одељку Конфигурација (на пример, на листи окидача)
како би сложена конфигурација била транспарентнија.
:::

Кориснички макрои се могу користити у:

-  називу ставке
-  параметру кључа ставке
-  интервалима ажурирања ставке и флексибилним интервалима
-  називу и опису окидача
-  параметрима и константама израза окидача (видети
[примери](#примери))
-  многим другим локацијама - погледајте [комплетну листу](/manual/appendix/macros/supported_by_location_user)

[comment]: # ({/c282a934-3e220640})

[comment]: # ({e3755145-e3755145})
##### Уобичајени случајеви употребе глобалних и домаћин макроа

-  користите глобални макро на неколико локација; затим промените вредност макроа
    и примените промене конфигурације на све локације једним кликом
-  искористите предности шаблона са атрибутима специфичним за домаћина:
    лозинке, бројеви портова, имена датотека, регуларни изрази итд.

[comment]: # ({/e3755145-e3755145})

[comment]: # ({6b1da1a4-60e46db2})
::: notetip
Препоручљиво је користити домаћине макрое уместо глобалних макроа јер додавање, ажурирање или брисање глобалних макроа доводи до инкременталног ажурирања конфигурације за све домаћине. За више информација погледајте [Провере пасивних и активних агената](/manual/appendix/items/activepassive#active-checks).
:::

[comment]: # ({/6b1da1a4-60e46db2})

[comment]: # ({f66c4949-561314a3})
#### Конфигурација

Да бисте дефинисали корисничке макрое, идите на одговарајућу локацију у кориснички интерфејс:

- за глобалне макрое посетите *Администрација → Макрои*
- за макрое на нивоу домаћина и шаблона, отворите својства домаћина или шаблона
и потражите картицу *Макрои*

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

![](../../../../assets/en/manual/config/macros/user_macros.png){width="600"}

|Parameter|Description|
|--|--------|
|*Макро*|Назив макроа. Назив мора бити у витичастим заградама и почети знаком долара.<br>Пример: {$FRONTEND\_URL}. Следећи знакови су дозвољени у називима макроа: **A-Z** (само велика слова) , **0-9** , **\_** , **.**|
|*Вредност*|Вредност макроа. Подржана су три типа вредности:<br>**Текст** (подразумевано) - вредност обичног текста<br>**[Тајни текст](/manual/config/macros/secret_macros#secret_text)** - вредност је маскирана звездицама<br> **[Тајна трезора](/manual/config/macros/secret_macros#vault_secret)** - вредност садржи путању/упит до [тајне трезора](/manual/config/secrets). <br><br>Да бисте променили тип вредности, кликните на дугме на крају поља за унос вредности.<br><br>Максимална дужина вредности корисничког макроа је 2048 знакова.|
|*Опис*|Текстуално поље које се користи за пружање више информација о овом макроу.|

Приликом конфигурисања корисничких макроа, **имајте у виду** следећа понашања специфична за контекст:

-  ако се кориснички макрои користе у ставкама шаблона или окидачима, размислите о додавању тих макроа и у шаблон (чак и ако су дефинисани глобално); На тај начин, макрои типа *Текст* ће радити како се очекује након извоза шаблона у XML и увоза у други систем (тајне вредности макроа се не [извозе](/manual/xml_export_import))
-  ако се кориснички макрои користе у изразима окидача, ти макрои ће се решити само ако референцирају параметар или константу; НЕЋЕ се решити ако референцирају домаћина, кључ ставке, функцију, оператор или други израз окидача (тајни макрои се не могу користити у изразима окидача)
-  ако се кориснички макрои користе на домаћину који има правило откривања ниског нивоа са прототиповима домаћина, [откривени домаћини](/manual/discovery/low_level_discovery/host_prototypes#discovered-hosts) ће наследити све корисничке макрое дефинисане на том домаћину

[comment]: # ({/f66c4949-561314a3})

[comment]: # ({4c860844-4c860844})
#### Примери

[comment]: # ({/4c860844-4c860844})

[comment]: # ({b9cf8f56-b9cf8f56})
##### Пример 1

Употреба макроа на нивоу домаћина у кључу ставке "Статус SSH демона":

`net.tcp.service[ssh,,{$SSH_PORT}]`

Ова ставка се може доделити вишеструким домаћинима, под условом да је вредност од
**{$SSH\_PORT}** је дефинисан на тим домаћинима.

[comment]: # ({/b9cf8f56-b9cf8f56})

[comment]: # ({0fa7cf4a-0fa7cf4a})
##### Пример 2

Употреба макроа на нивоу домаћина у покретачу "оптерећење процесора је превисоко":

`last(/ca_001/system.cpu.load[,avg1])>{$MAX_CPULOAD}`

Такав окидач би био креиран на шаблону, а не уређиван у њему
појединачни домаћини.

::: notetip
Ако желите да користите количину вредности као функцију
параметар (на пример, **max(/host/key,\#3)**), укључите хеш знак у
дефиниција макроа овако: SOME\_PERIOD => \#3
:::

[comment]: # ({/0fa7cf4a-0fa7cf4a})

[comment]: # ({36dc94ca-36dc94ca})
##### Пример 3

Употреба два макроа у покретачу "оптерећење процесора је превисоко":

`min(/ca_001/system.cpu.load[,avg1],{$CPULOAD_PERIOD})>{$MAX_CPULOAD}`

Имајте на уму да се макро може користити као параметар функције окидача, у
овај пример функције **min()**.

[comment]: # ({/36dc94ca-36dc94ca})

[comment]: # ({0dabfae5-0dabfae5})
##### Пример 4

Синхронизујте услов недоступности агента са ажурирањем ставке
интервал:

-  дефинисати {$INTERVAL} макро и користити га у интервалу ажурирања ставке;
-  користите {$INTERVAL} као параметар покретача недоступности агента:

`nodata(/ca_001/agent.ping,{$INTERVAL})=1`

[comment]: # ({/0dabfae5-0dabfae5})

[comment]: # ({2d346656-0f8052f1})
##### Пример 5

Централизујте конфигурацију радног времена:

-  креирајте глобални макро {$WORKING\_HOURS} једнак `1-5,09:00-18:00`;
-  користите га у пољу *Радно време* у *Администрација* → *Опште* →
    *GUI*;
-  користите га у пољу *Када је активан* у *Корисници* → *Корисници*, *Медији* на картици корисника;
-  користите га да подесите чешће испитивање ставки током радног времена:

![](../../../../assets/en/manual/config/macros/usermacro_example5.png)

-  користите га у стању акције *Временски период*;
-  подесите радно време у *Администрација* → *Макрои*,
    ако је потребно.

[comment]: # ({/2d346656-0f8052f1})

[comment]: # ({3c2ac944-3c2ac944})
##### Пример 6

Користите макро прототип домаћина да бисте конфигурисали ставке за откривене домаћине:

-  на прототипу домаћина дефинисати кориснички макро {$SNMPVALUE} са
    {\#SNMPVALUE} [ниског нивоа
    откривања](/manual/config/macros/lld_macros) макро као вредност:

![](../../../../assets/en/manual/config/macros/usermacro_example6.png)

-  доделити *Генерички SNMPv2* шаблон прототипу домаћина;
-  користите {$SNMPVALUE} у пољу *SNMP OID* *Генерички SNMPv2*
    ставке шаблона.

[comment]: # ({/3c2ac944-3c2ac944})

[comment]: # ({44ca625a-44ca625a})
#### Контекст макроа корисника

Погледајте [кориснички макрои са
контекст](/manual/config/macros/user_macros_context).

[comment]: # ({/44ca625a-44ca625a})
