Macro utente
Panoramica
Le macro utente sono supportate in Zabbix per offrire maggiore flessibilità, oltre alle macro supportate già disponibili out-of-the-box.
Le macro utente possono essere definite a livello globale, di template e di host. Queste macro hanno una sintassi speciale:
{$MACRO}
Zabbix risolve le macro secondo la seguente precedenza:
- Macro a livello di host (verificate per prime).
- Macro definite per i template di primo livello dell'host (cioè i template collegati direttamente all'host), ordinate per ID del template.
- Macro definite per i template di secondo livello dell'host, ordinate per ID del template.
- Macro definite per i template di terzo livello dell'host, ordinate per ID del template, e così via.
- Macro globali (verificate per ultime).
In altre parole, se una macro non esiste per un host, Zabbix tenterà di trovarla nei template dell'host con profondità crescente. Se ancora non viene trovata, verrà usata una macro globale, se esiste.
Se una macro con lo stesso nome esiste in più template collegati dello stesso livello, verrà usata la macro del template con l'ID più basso. Pertanto, avere macro con lo stesso nome in più template rappresenta un rischio di configurazione.
Se Zabbix non riesce a trovare una macro, la macro non verrà risolta.
Le macro (incluse le macro utente) vengono lasciate non risolte nella sezione Configurazione (ad esempio, nell'elenco dei trigger) per scelta progettuale, al fine di rendere più trasparente la configurazione complessa.
Le macro utente possono essere usate in:
- nome dell'item
- parametro della chiave dell'item
- intervalli di aggiornamento dell'item e intervalli flessibili
- nome e descrizione del trigger
- parametri ed costanti dell'espressione del trigger (vedi esempi)
- molte altre posizioni - vedi l'elenco completo
Casi d'uso comuni delle macro globali e del host
- utilizzare una macro globale in più posizioni; quindi modificare il valore della macro e applicare le modifiche di configurazione a tutte le posizioni con un clic
- sfruttare i template con attributi specifici del host: password, numeri di porta, nomi di file, espressioni regolari, ecc.
Si consiglia di usare le macro dell'host invece delle macro globali, perché l'aggiunta, l'aggiornamento o l'eliminazione delle macro globali impone un aggiornamento incrementale della configurazione per tutti gli host. Per ulteriori informazioni, vedere Passive and active agent checks.
Configurazione
Per definire macro utente, vai alla posizione corrispondente nel frontend:
- Per le macro globali, visita Amministrazione > Macro.
- Per le macro a livello di host e template, apri le proprietà dell'host o del template e cerca la scheda Macro.
Una macro utente ha i seguenti attributi:

| Parameter | Description |
|---|---|
| Macro | Nome della macro. Il nome deve essere racchiuso tra parentesi graffe e iniziare con il simbolo del dollaro. Esempio: {$FRONTEND_URL}. Nei nomi delle macro sono consentiti i seguenti caratteri: A-Z (solo maiuscole) , 0-9 , _ , . |
| Value | Valore della macro. Sono supportati tre tipi di valore: Text (predefinito) - valore in testo semplice Secret text - il valore viene mascherato con asterischi Vault secret - il valore contiene un percorso/query verso un vault secret. Per modificare il tipo di valore, fai clic sul pulsante alla fine del campo di input del valore. La lunghezza massima del valore di una macro utente è di 2048 caratteri. |
| Description | Campo di testo usato per fornire ulteriori informazioni su questa macro. |
Quando configuri le macro utente, nota i seguenti comportamenti specifici in base al contesto:
- se le macro utente vengono usate negli item o nei trigger del template, considera di aggiungere tali macro anche al template (anche se sono definite globalmente); in questo modo, le macro di tipo Text funzioneranno come previsto dopo l'esportazione del template in XML e l'importazione in un altro sistema (i valori delle secret macro non vengono esportati)
- se le macro utente vengono usate nelle espressioni dei trigger, tali macro verranno risolte solo se fanno riferimento a un parametro o a una costante; NON verranno risolte se fanno riferimento a un host, a una chiave item, a una funzione, a un operatore o a un'altra espressione di trigger (le secret macro non possono essere usate nelle espressioni dei trigger)
- se le macro utente vengono usate su un host che ha una regola di discovery a basso livello con host prototype, gli host scoperti erediteranno tutte le macro utente definite su quell'host
Esempi
Esempio 1
Uso di una macro a livello di host nella chiave dell'item "Status of SSH daemon":
net.tcp.service[ssh,,{$SSH_PORT}]
Questo item può essere assegnato a più host, a condizione che il valore di
{$SSH_PORT} sia definito su tali host.
Esempio 2
Uso di una macro a livello di host nel trigger "CPU load is too high":
last(/ca_001/system.cpu.load[,avg1])>{$MAX_CPULOAD}
Un trigger di questo tipo verrebbe creato nel template, non modificato nei singoli host.
Se si desidera usare il numero di valori come parametro della funzione (ad esempio, max(/host/key,#3)), includere il simbolo cancelletto nella definizione della macro in questo modo: SOME_PERIOD => #3
Esempio 3
Uso di due macro nel trigger "CPU load is too high":
min(/ca_001/system.cpu.load[,avg1],{$CPULOAD_PERIOD})>{$MAX_CPULOAD}
Si noti che una macro può essere utilizzata come parametro di una funzione del trigger, in questo esempio la funzione min().
Esempio 4
Sincronizzare la condizione di indisponibilità dell'agent con l'intervallo di aggiornamento dell'item:
- definire la macro {$INTERVAL} e utilizzarla nell'intervallo di aggiornamento dell'item;
- utilizzare {$INTERVAL} come parametro del trigger di indisponibilità dell'agent:
nodata(/ca_001/agent.ping,{$INTERVAL})=1
Esempio 5
Centralizzare la configurazione dell'orario di lavoro:
- creare una macro globale
{$WORKING_HOURS}uguale a1-5,09:00-18:00; - usarla nel campo Working time in Administration > General > GUI;
- usarla nel campo When active in Users > Users, scheda Media di un utente;
- usarla per configurare un polling degli item più frequente durante l'orario di lavoro:

- usarla nella condizione di azione Time period;
- modificare l'orario di lavoro in Administration > Macros, se necessario.
Esempio 6
Utilizzare la macro del prototipo di host per configurare gli item per gli host rilevati:
- in un prototipo di host definire la macro utente {$SNMPVALUE} con la macro di low-level discovery} come valore:

- assegnare il template Generic SNMPv2 al prototipo di host;
- utilizzare {$SNMPVALUE} nel campo SNMP OID degli item del template Generic SNMPv2.