1 Esempi di trigger

Questa pagina è una raccolta di esempi di trigger.

Gli esempi sono ordinati per caso d'uso:

Rilevare host non disponibile
max(/host/zabbix[host,agent,available],5m)=0

Questo trigger si attiva se lo Zabbix agent sul host non è stato disponibile per 5 minuti.
Funzione: max
Item di dati: zabbix[host,agent,available]

Alternativa:

nodata(/host/agent.ping,5m)=1

Questo trigger si attiva se non sono stati ricevuti dati dallo Zabbix agent per 5 minuti.
Funzione: nodata
Item di dati: agent.ping

Rilevare proxy non disponibile
fuzzytime(/host/zabbix[proxy,{$PROXY_NAME},lastaccess],1m)=0

Questo trigger si attiva se i dati del proxy Zabbix sono in ritardo rispetto all'ora del server Zabbix di 1 minuto.
Funzione: fuzzytime
Item di dati: zabbix[proxy,{$PROXY_NAME},lastaccess]

Rilevare un cluster SMTP non disponibile
last(/smtp1.example.com/net.tcp.service[smtp])=0 and last(/smtp2.example.com/net.tcp.service[smtp])=0

Questo trigger si attiva se entrambi i server SMTP non sono disponibili.
Funzione: last
Item di dati: net.tcp.service

Rilevare host non raggiungibile
count(/host/icmpping,30m,,"0")>5

Questo trigger si attiva se l'host non è raggiungibile tramite ping per più di 5 volte negli ultimi 30 minuti.
Funzione: count
Item di dati: icmpping

Rilevare un riavvio imprevisto
change(/host/system.uptime)<0

Questo trigger si attiva se viene rilevata una variazione negativa nel valore del tempo di attività del sistema (indicando un riavvio).
Funzione: change
Item di dati: system.uptime

Rilevare modifiche in file importanti
last(/host/vfs.file.cksum[/etc/passwd],#1)<>last(/host/vfs.file.cksum[/etc/passwd],#2)

Questo trigger si attiva se /etc/passwd è stato modificato. L'espressione è vera quando il checksum precedente di /etc/passwd differisce da quello più recente. Espressioni simili possono essere utili per monitorare le modifiche in file importanti, come /etc/passwd, /etc/inetd.conf, /kernel, ecc.
Funzione: last
item di dati: vfs.file.cksum

Rilevare modifiche nella query DNS
last(/Zabbix server/net.dns.record[192.0.2.0,{$WEBSITE_NAME},{$DNS_RESOURCE_RECORD_TYPE},2,1])<>"{$WEBSITE_NAME}           {$DNS_RESOURCE_RECORD_TYPE}       0 mail.{$WEBSITE_NAME}"

Notare le virgolette attorno al secondo operando.

Questo trigger si attiva se il risultato della query non è uguale a quello che normalmente restituisce:

example.com           MX       0 mail.example.com

Funzione: last
Item di dati: net.dns.record[192.0.2.0,{$WEBSITE_NAME},{$DNS_RESOURCE_RECORD_TYPE},2,1], con le macro definite come segue:

{$WEBSITE_NAME} = example.com
{$DNS_RESOURCE_RECORD_TYPE} = MX
Rilevare software non corrispondente su host diversi
last(/host/vfs.file.contents[/etc/os-release])<>last(/host2/vfs.file.contents[/etc/os-release])

Questo trigger si attiva se la versione di Ubuntu è diversa su host differenti. Si noti che qui gli operandi sono funzioni che restituiscono stringhe.
Funzione: last
Item di dati: vfs.file.contents

Rilevare orologi non sincronizzati
fuzzytime(/host/system.localtime,10s)=0

Il trigger si attiva se l'ora locale del client e l'ora del server Zabbix differiscono di più di 10 secondi.
Funzione: fuzzytime
Item di dati: system.localtime

Si noti che system.localtime deve essere configurato come controllo passivo per Zabbix agent; in Zabbix agent 2 può essere configurato come controllo attivo.

Rilevare agent obsoleto
find(/host/agent.version,,"like","beta")=1

Questo trigger si attiva se Zabbix agent ha una versione beta. Zabbix agent deve essere aggiornato.
Funzione: find
Item di dati: agent.version

Rilevare un'interfaccia instabile
changecount(/host/vfs.file.contents["/sys/class/net/eth0/operstate"],1h)>5 

Questo trigger si attiva se lo stato operativo (up/down/unknown) di eth0 è cambiato più di 5 volte in un'ora.
Funzione: changecount
Item di dati: vfs.file.contents

Rileva traffico in ingresso elevato
min(/host/net.if.in[eth0,bytes],5m)>100K

Questo trigger si attiva se il numero di byte ricevuti su eth0 negli ultimi cinque minuti è stato sempre superiore a 100 kilobyte. Probabilmente qualcuno sta scaricando un file di grandi dimensioni.
Funzione: min
Item di dati: net.if.in[eth0,bytes]

Rilevare spazio su disco insufficiente
max(/host/vfs.fs.size[/,free],5m)<10G

Il trigger si attiva se lo spazio libero su disco è costantemente (per 5 minuti) inferiore a 10 GB.

È anche possibile definire un'espressione di ripristino:

min(/host/vfs.fs.size[/,free],10m)>40G

Il problema viene risolto solo quando lo spazio libero su disco è costantemente (per 10 minuti) superiore a 40 GB.
Funzione: min
Item di dati: vfs.fs.size

Rilevare spazio su disco insufficiente (soglia dinamica)
last(/template/hrStorageFree[{#SNMPVALUE}])<last(/template/hrStorageSize[{#SNMPVALUE}])*0.1

Il trigger si attiva se lo spazio di archiviazione libero (in unità di allocazione) scende al di sotto del 10 percento. Si noti il valore di un altro item utilizzato per ottenere una soglia del trigger adattiva, applicabile allo spazio di archiviazione individuato di varie dimensioni. Funzione: last

Rilevare un carico elevato della CPU
last(/host/system.cpu.load[all,avg1])>5

Il trigger si attiva quando il carico medio del processore è stato superiore a 5 per un minuto.

Varianti:

min(/host/system.cpu.load[all,avg1],5m)>2 and time()<060000
min(/host/system.cpu.load[all,avg1],5m)>2 and not (dayofweek()=7 and time()>230000) and not (dayofweek()=1 and time()<010000)

Tali trigger analizzano 5 minuti di dati e si attivano solo se il carico della CPU non scende mai sotto 2. Inoltre, questi trigger si attivano:

  • solo durante le ore notturne (00:00-06:00)
  • in qualsiasi momento tranne che per 2 ore nel cambio di settimana (domenica, 23:00 - lunedì, 01:00)
(last(/host/system.cpu.load[all,avg1])>5) + (last(/host2/system.cpu.load[all,avg1])>5) + (last(/host3/system.cpu.load[all,avg1])>5)>=2

Questo trigger si attiva se il carico del processore è troppo elevato su almeno due dei tre host.
Funzioni: last, min, dayofweek, time
Item di dati: system.cpu.load

Confronta i carichi della CPU
avg(/Zabbix server/system.cpu.load,1h)/avg(/Zabbix server/system.cpu.load,1h:now-1d)>2

Il trigger si attiva se il carico medio di oggi supera di oltre due volte il carico medio della stessa ora di ieri (utilizzando lo spostamento temporale now-1d).
Funzione: avg
Item di dati: system.cpu.load

Confrontare i carichi CPU a lungo termine
trendavg(/host/system.cpu.load,1M:now/M)>1.1*trendavg(/host/system.cpu.load,1M:now/M-1M)

Questo trigger si attiva se il carico della CPU sul host è aumentato di oltre il 10% nell'ultimo mese
Funzione: trendavg
Item di dati: system.cpu.load

È inoltre possibile utilizzare il campo Nome evento nella configurazione del trigger per creare un messaggio di avviso significativo, ad esempio per ricevere qualcosa come

"Il carico del server Exchange è aumentato del 24% in luglio (0.69) rispetto a giugno (0.56)"

il nome dell'evento deve essere definito come:

Load of {HOST.HOST} server increased by {{?100*trendavg(//system.cpu.load,1M:now/M)/trendavg(//system.cpu.load,1M:now/M-1M)}.fmtnum(0)}% in {{TIME}.fmttime(%B,-1M)} ({{?trendavg(//system.cpu.load,1M:now/M)}.fmtnum(2)}) comparing to {{TIME}.fmttime(%B,-2M)} ({{?trendavg(//system.cpu.load,1M:now/M-1M)}.fmtnum(2)})

È inoltre utile consentire la chiusura manuale nella configurazione del trigger per questo tipo di problema.

Rilevare una stringa contenente caratteri speciali
last(/host/vfs.file.contents[/tmp/hello])={$HELLO_MACRO}

Il trigger si attiva se il contenuto di /tmp/hello è uguale alla stringa definita in {$HELLO_MACRO}:

{$HELLO_MACRO} = \" //hello ?\"

In alternativa, è possibile confrontarlo direttamente con la stringa:

last(/Zabbix server/vfs.file.contents[/tmp/hello])="\\\" //hello ?\\\""

Si noti come i caratteri speciali (\\ e ") vengano sottoposti a escape quando la stringa viene confrontata direttamente.

Funzione: last
Item di dati: vfs.file.contents

Hai un esempio di espressione trigger che altri potrebbero trovare utile?
Invia il tuo esempio (includendo sia l'espressione che il contesto) utilizzando il nostro modulo di suggerimento per inviarlo agli sviluppatori di Zabbix.