2 Macro utente
Panoramica
Le macro utente sono supportate in Zabbix per una maggiore flessibilità, oltre alle macro supportate 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 il seguente ordine di precedenza:
- macro a livello di host (controllate 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 (controllate per ultime)
In altre parole, se una macro non esiste per un host, Zabbix proverà a trovarla nei template dell'host con profondità crescente. Se ancora non viene trovata, verrà utilizzata una macro globale, se esiste.
Se una macro con lo stesso nome esiste in più template collegati dello stesso livello, verrà utilizzata 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 è in grado di trovare una macro, la macro non verrà risolta.
Le macro (incluse le macro utente) vengono lasciate non risolte nella sezione Configuration (ad esempio, nell'elenco dei trigger) per scelta progettuale, così da rendere più trasparente la configurazione complessa.
Le macro utente possono essere utilizzate in:
- nome item
- parametro della chiave item
- intervalli di aggiornamento item e intervalli flessibili
- nome e descrizione del trigger
- parametri e costanti dell'espressione del trigger (vedere gli esempi)
- molte altre posizioni - vedere 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 utilizzare le macro host invece delle macro globali, perché l'aggiunta, l'aggiornamento o l'eliminazione delle macro globali forza un aggiornamento incrementale della configurazione per tutti gli host. Per ulteriori informazioni, vedere Controlli agent passivi e attivi.
Configurazione
Per definire le macro utente, vai alla posizione corrispondente nel frontend:
- per le macro globali, vai in Administration → Macros
- per le macro a livello di host e template, apri le proprietà dell'host o del template e cerca la scheda Macros
Una macro utente ha i seguenti attributi:

| Parametro | Descrizione |
|---|---|
| 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 è mascherato con asterischi Vault secret - il valore contiene un percorso/query a 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 utilizzato per fornire maggiori informazioni su questa macro. |
Quando configuri le macro utente, nota i seguenti comportamenti specifici del contesto:
- se le macro utente sono utilizzate in item o trigger di template, valuta di aggiungere tali macro anche al template stesso (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 macro segrete non vengono esportati)
- se le macro utente sono utilizzate 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 macro segrete non possono essere utilizzate nelle espressioni dei trigger)
- se le macro utente sono utilizzate su un host che dispone di una regola di low-level discovery con prototipi di host, gli host rilevati erediteranno tutte le macro utente definite su quell'host
Esempi
Esempio 1
Uso della macro a livello di host nella chiave 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 a
1-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 impostare un polling degli item più frequente durante l'orario di lavoro:

- usarla nella condizione dell'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.