[comment]: # attributes: notoc

[comment]: # ({11b7940f-7da5ea1c})
# 4 Funzioni di history

Tutte le funzioni elencate qui sono supportate in:

-   [Espressioni trigger](/manual/config/triggers/expression)
-   [Item calcolati](/manual/config/items/itemtypes/calculated)
-   [Macro di espressione](/manual/config/macros/expression_macros)

Le funzioni sono elencate senza informazioni aggiuntive.
Fare clic sulla funzione per visualizzare i dettagli completi.

|Function|Description|
|--|--------|
|[change](#change)|La quantità di differenza tra il valore precedente e quello più recente.|
|[changecount](#changecount)|Il numero di variazioni tra valori adiacenti all'interno del periodo di valutazione definito.|
|[count](#count)|Il numero di valori all'interno del periodo di valutazione definito.|
|[countunique](#countunique)|Il numero di valori univoci all'interno del periodo di valutazione definito.|
|[find](#find)|Trova una corrispondenza di valore all'interno del periodo di valutazione definito.|
|[first](#first)|Il primo valore (il più vecchio) all'interno del periodo di valutazione definito.|
|[firstclock](#firstclock)|Il timestamp del primo valore (il più vecchio) all'interno del periodo di valutazione definito.|
|[fuzzytime](#fuzzytime)|Verifica di quanto il tempo dell'agent passivo differisca dal tempo del server/proxy Zabbix.|
|[last](#last)|Il valore più recente.|
|[lastclock](#lastclock)|Il timestamp dell'N-esimo valore più recente all'interno del periodo di valutazione definito.|
|[logeventid](#logeventid)|Verifica se l'ID evento dell'ultima voce di log corrisponde a un'espressione regolare.|
|[logseverity](#logseverity)|La gravità del log dell'ultima voce di log.|
|[logsource](#logsource)|Verifica se l'origine del log dell'ultima voce di log corrisponde a un'espressione regolare.|
|[logtimestamp](#logtimestamp)|Il timestamp del messaggio di log del valore dell'elemento di log N-esimo più recente.|
|[monodec](#monodec)|Verifica se si è verificata una diminuzione monotona dei valori.|
|[monoinc](#monoinc)|Verifica se si è verificato un aumento monotono dei valori.|
|[nodata](#nodata)|Verifica l'assenza di dati ricevuti.|
|[percentile](#percentile)|Il percentile P di un periodo, dove P (percentuale) è specificato dal terzo parametro.|
|[rate](#rate)|Il tasso medio per secondo dell'aumento di un contatore monotonicamente crescente all'interno del periodo di tempo definito.|

[comment]: # ({/11b7940f-7da5ea1c})

[comment]: # ({2310631d-4d343eb8})
##### Parametri comuni

-   `/host/key` è un primo parametro comune obbligatorio per le funzioni che fanno riferimento alla cronologia dell'item dell'host
-   `(sec|#num)<:time shift>` è un secondo parametro comune per le funzioni che fanno riferimento alla cronologia dell'item dell'host, dove:
    -   **sec** - periodo massimo di [valutazione](/manual/config/triggers#evaluation-period) in secondi (si possono usare i [suffissi](/manual/appendix/suffixes) di tempo), oppure
    -   **\#num** - intervallo massimo di [valutazione](/manual/config/triggers#evaluation-period) negli ultimi valori raccolti (se preceduto da un cancelletto)
    -   **time shift** (opzionale) consente di spostare all'indietro nel tempo il punto di valutazione.
    Vedi [maggiori dettagli](/manual/config/triggers/expression#time-shift) sulla specifica del time shift.

[comment]: # ({/2310631d-4d343eb8})

[comment]: # ({aa4e1bf6-8f3a0028})
### Dettagli della funzione

Alcune note generali sui parametri della funzione:

-   I parametri della funzione sono separati da una virgola
-   I parametri opzionali della funzione (o parti di parametro) sono indicati da `<` `>`
-   I parametri specifici della funzione sono descritti per ciascuna funzione
-   I parametri `/host/key` e `(sec|#num)<:time shift>` non devono mai essere racchiusi tra virgolette

[comment]: # ({/aa4e1bf6-8f3a0028})

[comment]: # ({1f93c729-4afc9a02})
##### change(/host/key) {#change}

La quantità di differenza tra il valore precedente e quello più recente.<br>
Tipi di valore supportati: *Float*, *Integer*, *String*, *Text*, *Log*.<br>
Per le stringhe restituisce: 0 - i valori sono uguali; 1 - i valori differiscono.

Parametri: vedere i [parametri comuni](#common-parameters).

Commenti:

-   La differenza numerica verrà calcolata, come mostrato nei seguenti valori di esempio in ingresso (valore 'previous' e 'latest' = differenza):<br>'1' e '5' = `+4`<br>'3' e '1' = `-2`<br>'0' e '-2.5' = `-2.5`.<br>
-   Vedi anche: [abs](/manual/appendix/functions/math#abs) per il confronto.

Esempi:

```default
change(/host/system.uptime)<0 #la variazione del tempo di attività del sistema è stata negativa dall'ultimo valore (indicando un riavvio)
change(/host/system.cpu.load[all,avg1])>2 #il carico della CPU (per un minuto) è aumentato di più di 2 rispetto all'ultimo valore
change(/host/vfs.fs.size[/,free])<-1G #lo spazio libero su disco è diminuito di più di 1 GB tra un controllo e l'altro
```

[comment]: # ({/1f93c729-4afc9a02})

[comment]: # ({56cecc56-57458a90})
##### changecount(/host/key,(sec|#num)<:time shift>,<mode>) {#changecount}

Il numero di variazioni tra valori adiacenti entro il periodo di valutazione definito.<br>
Tipi di valore supportati: *Float*, *Integer*, *String*, *Text*, *Log*.

Parametri: 

-   Vedi [parametri comuni](#common-parameters)<br>
-   **mode** (deve essere tra virgolette doppie) - valori possibili: *all* - conta tutte le variazioni (predefinito); *dec* - conta le diminuzioni; *inc* - conta gli aumenti

Per i tipi di valore non numerici, il parametro *mode* viene ignorato.

Esempi:

```default
changecount(/host/icmpping,10m)>5 #lo stato del ping è cambiato più di 5 volte in 10 minuti
changecount(/host/vfs.file.contents["/sys/class/net/eth0/operstate"],1h)>5 #lo stato operativo di eth0 è cambiato più di 5 volte in un'ora
changecount(/host/proc.num[httpd],15m)>10 #il numero di processi httpd è cambiato più di 10 volte in 15 minuti
changecount(/host/key,#10,"inc") #il numero di aumenti del valore (rispetto al valore adiacente) tra gli ultimi 10 valori
changecount(/host/key,24h,"dec") #il numero di diminuzioni del valore (rispetto al valore adiacente) nelle ultime 24 ore fino a ora
```

[comment]: # ({/56cecc56-57458a90})

[comment]: # ({1f9dc9af-f9ce5dd9})
##### count(/host/key,(sec|#num)<:time shift>,<operator>,<pattern>) {#count}

Il numero di valori entro il periodo di valutazione definito.<br>
Tipi di valore supportati: *Float*, *Integer*, *String*, *Text*, *Log*.

Parametri: 

-   Vedere i [parametri comuni](#common-parameters)<br>
-   **operator** (deve essere tra virgolette doppie)
`operator` supportati:<br>*eq* - uguale (predefinito per integer, float)<br>*ne* - diverso<br>*gt* - maggiore<br>*ge* - maggiore o uguale<br>*lt* - minore<br>*le* - minore o uguale<br>*like* (predefinito per string, text, log) - corrisponde se contiene il pattern (con distinzione tra maiuscole e minuscole)<br>*bitand* - AND bit a bit<br>*regexp* - corrispondenza con distinzione tra maiuscole e minuscole dell'espressione regolare fornita in `pattern`<br>*iregexp* - corrispondenza senza distinzione tra maiuscole e minuscole dell'espressione regolare fornita in `pattern`<br>
-   **pattern** - il pattern richiesto (gli argomenti stringa devono essere tra virgolette doppie)

Commenti:

-   I valori float corrispondono con una precisione di 2.22e-16.
-   *like* non è supportato come operator per valori integer.
-   *like* e *bitand* non sono supportati come operator per valori float.
-   Per i valori string, text e log sono supportati solo gli operator *eq*, *ne*, *like*, *regexp* e *iregexp*.
-   Con *bitand* come operator, il quarto parametro `pattern` può essere specificato come due numeri, separati da '/': **number_to_compare_with/mask**.
count() calcola l'"AND bit a bit" dal valore e dalla *mask* e confronta il risultato con *number_to_compare_with*.
Se il risultato dell'"AND bit a bit" è uguale a *number_to_compare_with*, il valore viene conteggiato.<br>Se *number_to_compare_with* e *mask* sono uguali, è necessario specificare solo *mask* (senza '/').
-   Con *regexp* o *iregexp* come operator, il quarto parametro `pattern` può essere un'espressione regolare ordinaria o [globale](/manual/regular_expressions#global-regular-expressions) (che inizia con '@').
Nel caso di espressioni regolari globali, la distinzione tra maiuscole e minuscole viene ereditata dalle impostazioni dell'espressione regolare globale.
Ai fini della corrispondenza regexp, i valori float saranno sempre rappresentati con 4 cifre decimali dopo '.'.
Si noti inoltre che, per numeri grandi, la differenza tra la rappresentazione decimale (memorizzata nel database) e quella binaria (utilizzata da Zabbix server) può influire sulla 4ª cifra decimale.

Esempi:

```default
count(/host/icmpping,30m,,"0")>5 #il ping è fallito più di 5 volte in 30 minuti
count(/host/key,10m,"like","error") #il numero di valori negli ultimi 10 minuti fino ad ora che contengono 'error'
count(/host/key,10m,,12) #il numero di valori negli ultimi 10 minuti fino ad ora uguali a '12'
count(/host/key,10m,"gt",12) #il numero di valori negli ultimi 10 minuti fino ad ora maggiori di '12'
count(/host/key,#10,"gt",12) #il numero di valori entro gli ultimi 10 valori fino ad ora maggiori di '12'
count(/host/key,10m:now-1d,"gt",12) #il numero di valori tra 24 ore e 10 minuti fa e 24 ore fa da adesso che erano maggiori di '12'
count(/host/key,10m,"bitand","6/7") #il numero di valori negli ultimi 10 minuti fino ad ora che hanno '110' (in binario) nei 3 bit meno significativi
count(/host/key,10m:now-1d) #il numero di valori tra 24 ore e 10 minuti fa e 24 ore fa da adesso
```

[comment]: # ({/1f9dc9af-f9ce5dd9})

[comment]: # ({ab6b4d74-bf8dc20c})
##### countunique(/host/key,(sec|#num)<:time shift>,<operator>,<pattern>) {#countunique}

Il numero di valori univoci nel periodo di valutazione definito.<br>
Tipi di valore supportati: *Float*, *Integer*, *String*, *Text*, *Log*.

Parametri: 

-   Vedere i [parametri comuni](#common-parameters)<br>
-   **operator** (deve essere tra doppi apici).
`operator` supportati:<br>*eq* - uguale (predefinito per integer, float)<br>*ne* - diverso<br>*gt* - maggiore<br>*ge* - maggiore o uguale<br>*lt* - minore<br>*le* - minore o uguale<br>*like* (predefinito per string, text, log) - corrisponde se contiene il pattern (con distinzione tra maiuscole e minuscole)<br>*bitand* - AND bit a bit<br>*regexp* - corrispondenza con distinzione tra maiuscole e minuscole dell'espressione regolare fornita in `pattern`<br>*iregexp* - corrispondenza senza distinzione tra maiuscole e minuscole dell'espressione regolare fornita in `pattern`<br>
-   **pattern** - il pattern richiesto (gli argomenti stringa devono essere tra doppi apici)

Commenti:

-   I item float corrispondono con una precisione di 2.22e-16.
-   *like* non è supportato come operator per valori integer.
-   *like* e *bitand* non sono supportati come operator per valori float.
-   Per valori string, text e log sono supportati solo gli operator *eq*, *ne*, *like*, *regexp* e *iregexp*.
-   Con *bitand* come operator, il quarto parametro `pattern` può essere specificato come due numeri separati da '/': **number_to_compare_with/mask**. countunique() calcola l'"AND bit a bit" dal valore e dalla *mask* e confronta il risultato con *number_to_compare_with*.
Se il risultato dell'"AND bit a bit" è uguale a *number_to_compare_with*, il valore viene conteggiato.<br>Se *number_to_compare_with* e *mask* sono uguali, è necessario specificare solo la *mask* (senza '/').
-   Con *regexp* o *iregexp* come operator, il quarto parametro `pattern` può essere un'espressione regolare normale o [globale](/manual/regular_expressions#global-regular-expressions) (che inizia con '@').
Nel caso di espressioni regolari globali, la distinzione tra maiuscole e minuscole viene ereditata dalle impostazioni globali delle espressioni regolari.
Ai fini della corrispondenza regexp, i valori float saranno sempre rappresentati con 4 cifre decimali dopo '.'.
Si noti inoltre che, per numeri grandi, la differenza tra la rappresentazione decimale (memorizzata nel database) e quella binaria (utilizzata da Zabbix server) può influire sulla quarta cifra decimale.

Esempi:

```default
countunique(/host/key,10m) #il numero di valori univoci negli ultimi 10 minuti fino ad ora
countunique(/host/key,10m,"like","error") #il numero di valori univoci negli ultimi 10 minuti fino ad ora che contengono 'error'
countunique(/host/key,10m,,12) #il numero di valori univoci negli ultimi 10 minuti fino ad ora uguali a '12'
countunique(/host/key,10m,"gt",12) #il numero di valori univoci negli ultimi 10 minuti fino ad ora maggiori di '12'
countunique(/host/key,#10,"gt",12) #il numero di valori univoci negli ultimi 10 valori fino ad ora maggiori di '12'
countunique(/host/key,10m:now-1d,"gt",12) #il numero di valori univoci tra 24 ore e 10 minuti fa e 24 ore fa rispetto ad ora che erano maggiori di '12'
countunique(/host/key,10m,"bitand","6/7") #il numero di valori univoci negli ultimi 10 minuti fino ad ora che hanno '110' (in binario) nei 3 bit meno significativi
countunique(/host/key,10m:now-1d) #il numero di valori univoci tra 24 ore e 10 minuti fa e 24 ore fa rispetto ad ora
```

[comment]: # ({/ab6b4d74-bf8dc20c})

[comment]: # ({9bb9907e-148d7d16})
##### find(/host/key,(sec|#num)<:time shift>,<operator>,<pattern>) {#find}

Trova una corrispondenza di valore entro il periodo di valutazione definito.<br>
Tipi di valore supportati: *Float*, *Integer*, *String*, *Text*, *Log*.<br>
Restituisce: 1 - trovato; 0 - altrimenti.

Parametri: 

-   Vedere i [parametri comuni](#common-parameters)<br>
-   **sec** o **#num** (opzionale) - se non specificato, per impostazione predefinita viene usato il valore più recente
-   **operator** (deve essere racchiuso tra doppi apici)
`operator` supportati:<br>*eq* - uguale (predefinito per integer, float)<br>*ne* - diverso<br>*gt* - maggiore di<br>*ge* - maggiore o uguale<br>*lt* - minore di<br>*le* - minore o uguale<br>*like* (predefinito per string, text, log) - corrisponde se contiene la stringa fornita in `pattern` (con distinzione tra maiuscole e minuscole)<br>*bitand* - AND bit a bit<br>*regexp* - corrispondenza con distinzione tra maiuscole e minuscole dell'espressione regolare fornita in `pattern`<br>*iregexp* - corrispondenza senza distinzione tra maiuscole e minuscole dell'espressione regolare fornita in `pattern`<br>
-   **pattern** - il pattern richiesto (gli argomenti stringa devono essere racchiusi tra doppi apici); espressione regolare [Perl Compatible Regular Expression](https://en.wikipedia.org/wiki/Perl_Compatible_Regular_Expressions) (PCRE) se `operator` è *regexp*, *iregexp*

Commenti:

-   Se viene elaborato più di un valore, viene restituito '1' se è presente almeno un valore corrispondente.
-   *like* non è supportato come operatore per valori integer.
-   *like* e *bitand* non sono supportati come operatori per valori float.
-   Per i valori string, text e log sono supportati solo gli operatori *eq*, *ne*, *like*, *regexp* e *iregexp*.
-   Con *regexp* o *iregexp* come operatore, il quarto parametro `pattern` può essere un'espressione regolare ordinaria o [globale](/manual/regular_expressions#global-regular-expressions) (che inizia con '@').
Nel caso di espressioni regolari globali, la distinzione tra maiuscole e minuscole viene ereditata dalle impostazioni dell'espressione regolare globale.

Esempi:

```default
find(/host/key,10m,"like","error") #trova un valore che contiene 'error' negli ultimi 10 minuti fino ad ora
find(/host/agent.version,,"like","beta")=1 #Zabbix agent ha una versione beta, deve essere aggiornato
find(/host/log[/var/log/nginx/access.log],,"regexp"," 500 ")=1 #è stato rilevato un errore interno del server web
```

[comment]: # ({/9bb9907e-148d7d16})

[comment]: # ({86057069-0ae5f587})
##### first(/host/key,sec<:time shift>) {#first}

Il primo valore (il più vecchio) entro il periodo di valutazione definito.<br>
Tipi di valore supportati: *Float*, *Integer*, *String*, *Text*, *Log*.

Parametri: 

-   Vedere [parametri comuni](#common-parameters)

Vedere anche [last()](#last).

Esempio:

```default
first(/host/key,1h) #recupera il valore più vecchio nell'ultima ora fino ad ora
```

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

[comment]: # ({f7e55e49-77c121f4})
##### firstclock(/host/key,sec<:time shift>) {#firstclock}

Il timestamp del valore più vecchio all'interno del periodo di valutazione definito.<br>
Tipi di valore supportati: *Float*, *Integer*, *String*, *Text*, *Log*.

Parametri: 

-   Vedere [parametri comuni](#common-parameters).

La funzione restituisce un errore se non sono stati raccolti dati nel periodo specificato.

Vedere anche [lastclock()](#lastclock).

Esempi:

```default
firstclock(/host/key,1h) #recupera il timestamp del valore più vecchio nell'ultima ora
firstclock(/host/key,1h:now-24h) #recupera il timestamp del valore più vecchio nell'ultima ora di un giorno fa
```

[comment]: # ({/f7e55e49-77c121f4})

[comment]: # ({96c1f032-1c3609f8})
##### fuzzytime(/host/key,sec) {#fuzzytime}

Controlla di quanto il tempo dell'agent passivo differisce dal tempo del server/proxy Zabbix.<br>
Tipi di valore supportati: *Float*, *Integer*.<br>
Restituisce: 1 - la differenza tra il valore del passive item (come timestamp) e il timestamp del server/proxy Zabbix (l'orologio della raccolta del valore) è minore o uguale a *sec* secondi; 0 - altrimenti.

Parametri: 

-   Vedi [parametri comuni](#common-parameters).

Commenti:

-   Solitamente utilizzata con l'item 'system.localtime' per verificare che l'ora locale sia sincronizzata con l'ora locale del server Zabbix.
*Nota* che 'system.localtime' deve essere configurato come [controllo passivo](/manual/appendix/items/activepassive#passive-checks) per Zabbix agent; in Zabbix agent 2 può essere configurato come controllo attivo.
-   Può essere utilizzata anche con la chiave `vfs.file.time[/path/file,modify]` per verificare che il file non sia stato aggiornato per molto tempo.
-   Questa funzione non è consigliata nelle espressioni di trigger complesse (con più item coinvolti), perché può causare risultati imprevisti (la differenza di tempo verrà misurata con la metrica più recente), ad esempio in `fuzzytime(/Host/system.localtime,60s)=0 or last(/Host/trap)<>0`.

Esempi:

```default
fuzzytime(/host/system.localtime,5m)=0 #l'ora locale del client differisce dall'ora del server/proxy Zabbix di più di 5 minuti
fuzzytime(/host/system.localtime,5m)=0 and nodata(/host/system.localtime,10m)=0 #l'ora locale del client differisce dall'ora del server/proxy Zabbix di più di 5 minuti (assicurandosi al contempo che l'item non abbia smesso di riportare dati)
```

[comment]: # ({/96c1f032-1c3609f8})

[comment]: # ({a56ae5b5-8059d345})
##### last(/host/key,<#num<:time shift>>) {#last}

Il valore più recente.<br>
Tipi di valore supportati: *Float*, *Integer*, *String*, *Text*, *Log*.

Parametri: 

-   Vedere [parametri comuni](#common-parameters)<br>
-   **#num** (opzionale) - l'N-esimo valore più recente

Commenti:

-   Si noti che un periodo di tempo con cancelletto (#N) qui funziona in modo diverso rispetto a molte altre funzioni.
Ad esempio: `last(/host/key)` è sempre uguale a `last(/host/key,#1)`; `last(/host/key,#3)` - il terzo valore più recente (*non* gli ultimi tre valori).
-   Zabbix non garantisce l'ordine esatto dei valori se nella cronologia esistono più di due valori entro un secondo.
-   Vedere anche [first()](#first).

Esempi:

```default
last(/host/key) #retrieve the last value
last(/host/key,#2) #retrieve the previous value
last(/host/key,#1)<>last(/host/key,#2) #last two values differ
```

[comment]: # ({/a56ae5b5-8059d345})

[comment]: # ({37d8627c-e2c2d8a2})
##### lastclock(/host/key,<#num<:time shift>>) {#lastclock}

Il timestamp dell'N-esimo valore più recente entro il periodo di valutazione definito.<br>
Tipi di valore supportati: *Float*, *Integer*, *String*, *Text*, *Log*.

Parametri: 

-   Vedere i [parametri comuni](#common-parameters);<br>
-   **#num** (opzionale) - l'N-esimo valore più recente.

La funzione restituisce un errore se non sono stati raccolti dati nel periodo specificato o se non è stato raccolto alcun valore N-esimo.

Vedere anche [firstclock()](#firstclock).

Esempi:

```default
lastclock(/host/key) #recupera il timestamp del valore più recente
lastclock(/host/key,#2) #recupera il timestamp del 2° valore più recente
now()-lastclock(/host/heartbeat.item)>300 #sono trascorsi più di 5 minuti dall'aggiornamento dell'item heartbeat
lastclock(/host/system.cpu.load[all,avg1])-lastclock(/host/system.cpu.load[all,avg1],#2)>300 #l'intervallo di aggiornamento tra gli ultimi due valori supera i 5 minuti
((now()-lastclock(/host/system.cpu.load[all,avg1])<120 and last(/host/system.cpu.load[all,avg1])>5)) #il valore della CPU è alto e il valore è recente (meno di 2 minuti)
```

[comment]: # ({/37d8627c-e2c2d8a2})

[comment]: # ({5cecd78d-ff5dcd5e})
##### logeventid(/host/key,<#num<:time shift>>,<pattern>) {#logeventid}

Verifica se l'ID evento dell'ultima voce di log corrisponde a un'espressione regolare.<br>
Tipi di valore supportati: *Log*.<br>
Restituisce: 0 - non corrisponde; 1 - corrisponde.

Parametri: 

-   Vedi [parametri comuni](#common-parameters)<br>
-   **#num** (opzionale) - l'N-esimo valore più recente<br>
-   **pattern** (opzionale) - l'espressione regolare che descrive il pattern richiesto, in stile [Perl Compatible Regular Expression](https://en.wikipedia.org/wiki/Perl_Compatible_Regular_Expressions) (PCRE) (gli argomenti stringa devono essere racchiusi tra virgolette doppie)

Esempi:

```default
logeventid(/host/eventlog[Security],,"^4625$")=1 #trovata una voce di log con ID corrispondente a "4625" (autenticazione non riuscita)
logeventid(/host/eventlog[System],,"^(6008|41)$")=1 #trovata una voce di log con ID corrispondente a "6008" o "41"
```

[comment]: # ({/5cecd78d-ff5dcd5e})

[comment]: # ({d3497d35-5053b990})
##### logseverity(/host/key,<#num<:time shift>>) {#logseverity}

Gravità del log dell'ultima voce di log.<br>
Tipi di valore supportati: *Log*.<br>
Restituisce: 0 - gravità predefinita; N - gravità (intero, utile per i log eventi di Windows: 1 - Informazione, 2 - Avviso, 4 - Errore, 7 - Controllo errori, 8 - Controllo riuscito, 9 - Critico, 10 - Dettagliato).

Parametri: 

-   Vedere i [parametri comuni](#common-parameters)<br>
-   **#num** (opzionale) - l'N-esimo valore più recente

Zabbix ricava la gravità del log dal campo **Information** del log eventi di Windows.

Esempi:

```default
logseverity(/host/log[/var/log/syslog],10m)>3 #a log entry with severity above "3" found
logseverity(/host/eventlog[System],10m)=4 #a log entry with severity equaling "Error" found
```

[comment]: # ({/d3497d35-5053b990})

[comment]: # ({b33d7f55-a9148f5c})
##### logsource(/host/key,<#num<:time shift>>,<pattern>) {#logsource}

Verifica se la sorgente del log dell'ultima voce di log corrisponde a un'espressione regolare.<br>
Tipi di valore supportati: *Log*.<br>
Restituisce: 0 - non corrisponde; 1 - corrisponde.

Parametri: 

-   Vedi [parametri comuni](#common-parameters)<br>
-   **#num** (opzionale) - l'N-esimo valore più recente<br>
-   **pattern** (opzionale) - l'espressione regolare che descrive il pattern richiesto, in stile [Perl Compatible Regular Expression](https://en.wikipedia.org/wiki/Perl_Compatible_Regular_Expressions) (PCRE) (gli argomenti stringa devono essere racchiusi tra virgolette doppie)

Normalmente usato per i log eventi di Windows.

Esempi:

```default
logsource(/host/eventlog[Application],,"MSSQLSERVER")=1 #trovata una voce di log con sorgente corrispondente a "MSSQLSERVER"
logsource(/host/eventlog[System],,"Service Control Manager")=1 #trovata una voce di log con sorgente corrispondente a "Service Control Manager"
logsource(/host/eventlog[System],,"Service Control Manager")=1 and logeventid(/host/eventlog[System],,"^7031$")=1 #trovata una voce di log con sorgente corrispondente a "Service Control Manager" e ID evento corrispondente a "7031"
```

[comment]: # ({/b33d7f55-a9148f5c})

[comment]: # ({64641457-49eac3d8})
##### logtimestamp(/host/key,<#num<:time shift>>) {#logtimestamp}

Il timestamp del messaggio di log dell'N-esimo valore più recente di un item di log.<br>
Tipi di valore supportati: *Log*.

Parametri: 

-   Vedi [parametri comuni](#common-parameters);<br>
-   **#num** (opzionale) - l'N-esimo valore più recente.

Commenti:

-   Il calcolo dello spostamento temporale si basa sull'orario del valore dell'item, non sul timestamp del messaggio di log;
-   La funzione restituisce un errore se:
    -   viene ricevuto un item di tipo non log;
    -   non sono stati raccolti dati nel periodo specificato;
    -   non è stato raccolto l'N-esimo valore;
    -   il messaggio di log non contiene un valore di timestamp.

Esempi:

```default
logtimestamp(/host/key) #recupera il timestamp dell'ultimo messaggio di log
logtimestamp(/host/key,#2) #recupera il timestamp del 2° messaggio di log più recente
logtimestamp(/host/key,#3:now-1d) #recupera il timestamp del 3° messaggio di log più recente di un giorno fa
```

[comment]: # ({/64641457-49eac3d8})

[comment]: # ({2b7441d8-6a63b5c8})
##### monodec(/host/key,(sec|#num)<:time shift>,<mode>) {#monodec}

Controlla se si è verificata una diminuzione monotona dei valori.<br>
Tipi di valore supportati: *Integer*.<br>
Restituisce: 1 - se tutti gli elementi nel periodo di tempo diminuiscono continuamente; 0 - altrimenti.

Parametri: 

-   Vedi [parametri comuni](#common-parameters)<br>
-   **mode** (deve essere tra virgolette doppie) - *weak* (ogni valore è minore o uguale al precedente; predefinito) oppure *strict* (ogni valore è diminuito)

Esempi:

```default
monodec(/host/system.swap.size[all,free],60s) + monodec(/host2/system.swap.size[all,free],60s) + monodec(/host3/system.swap.size[all,free],60s) #calcola in quanti host si è verificata una diminuzione della dimensione dello swap libero
monodec(/host/proc.num[nginx],10m,"strict")=1 #il numero di processi nginx è diminuito monotonamente nell'arco di 10 minuti
```

[comment]: # ({/2b7441d8-6a63b5c8})

[comment]: # ({09e06757-755c1821})
##### monoinc(/host/key,(sec|#num)<:time shift>,<mode>) {#monoinc}

Verifica se si è verificato un aumento monotono dei valori.<br>
Tipi di valore supportati: *Integer*.<br>
Restituisce: 1 - se tutti gli elementi nel periodo di tempo aumentano continuamente; 0 - altrimenti.

Parametri: 

-   Vedere i [parametri comuni](#common-parameters)<br>
-   **mode** (deve essere racchiuso tra doppi apici) - *weak* (ogni valore è maggiore o uguale al precedente; predefinito) oppure *strict* (ogni valore è aumentato)

Esempi:

```default
monoinc(/host/system.localtime,#3,"strict")=0 #l'ora locale del sistema non è aumentata in modo costante
monoinc(/host/vfs.dir.count[/mnt/data/logs],24h,"weak")=0 #trigger se il numero di file è rimasto invariato per 24 ore (si prevede che aumenti)
```

[comment]: # ({/09e06757-755c1821})

[comment]: # ({ce0040c4-178e3950})
##### nodata(/host/key,sec,<mode>) {#nodata}

Verifica che non siano stati ricevuti dati.<br>
Tipi di valore supportati: *Integer*, *Float*, *Character*, *Text*, *Log*.<br>
Restituisce: 1 - se non sono stati ricevuti dati durante il periodo di tempo definito; 0 - altrimenti.

Parametri: 

-   Vedere i [parametri comuni](#common-parameters)<br>
-   **sec** - il periodo non deve essere inferiore a 30 secondi perché il processo history syncer calcola questa funzione solo ogni 30 secondi; `nodata(/host/key,0)` non è consentito
-   **mode** - se impostato su *strict* (tra doppi apici), questa funzione sarà insensibile alla disponibilità del proxy (vedere i commenti per i dettagli)

Commenti:

-   i trigger 'nodata' monitorati dal proxy sono, per impostazione predefinita, sensibili alla disponibilità del proxy - se il proxy diventa non disponibile, i trigger 'nodata' non si attiveranno immediatamente dopo il ripristino della connessione, ma salteranno i dati per il periodo di ritardo.
Si noti che per i proxy passivi la soppressione viene attivata se la connessione viene ripristinata più di 15 secondi e non meno di 2 secondi dopo.
Per i proxy attivi la soppressione viene attivata se la connessione viene ripristinata più di 15 secondi dopo.
Per disattivare la sensibilità alla disponibilità del proxy, utilizzare il terzo parametro, ad esempio: `nodata(/host/key,5m,"strict")`; in questo caso la funzione si attiverà non appena sarà trascorso il periodo di valutazione (cinque minuti) senza dati.<br>
-   Questa funzione mostrerà un errore se, entro il periodo del 1° parametro:<br>- non ci sono dati e Zabbix server è stato riavviato<br>- non ci sono dati e la manutenzione è stata completata<br>- non ci sono dati e l'item è stato aggiunto o riabilitato.<br>
-   Gli errori sono visualizzati nella colonna *Info* nella [configurazione](/manual/web_interface/frontend_sections/data_collection/hosts/triggers) dei trigger.<br>
-   Questa funzione potrebbe non funzionare correttamente se ci sono differenze di orario tra Zabbix server, proxy e agent.
Vedere anche: [Requisito di sincronizzazione dell'ora](/manual/installation/requirements#time-synchronization).

Esempio:

```default
nodata(/host/agent.ping,5m)=1 #trigger if no data has been received from Zabbix agent for 5 minutes
```

[comment]: # ({/ce0040c4-178e3950})

[comment]: # ({8fe0ae58-e8041c00})
##### percentile(/host/key,(sec|#num)<:time shift>,percentage) {#percentile}

Il percentile P-esimo di un periodo, dove P (percentage) è specificato dal terzo parametro.<br>
Tipi di valore supportati: *Float*, *Integer*.

Parametri: 

-   Vedere i [parametri comuni](#common-parameters)<br>
-   **percentage** - un numero in virgola mobile compreso tra 0 e 100 (inclusi) con fino a 4 cifre dopo il separatore decimale

Esempi:

```default
percentile(/host/net.if.in[eth0,bytes],1h,95)>1000000 #il 95° percentile dell'input di rete (byte/sec) nell'arco di 1 ora ha superato una soglia (ad esempio, 1 MB/s)
percentile(/host/system.cpu.util,5m,95)>80 #il 95° percentile della percentuale di utilizzo CPU in user-time ha superato 80
percentile(/host/icmppingsec[192.168.0.2],15m,95)>0.15 #la maggior parte delle misurazioni di latenza è inferiore a 150 ms, ma la coda superiore (top 5%) indica lag regolare
percentile(/host/net.if.in[eth0,bytes],1h,50) #calcola il 50° percentile (il valore mediano) del traffico di rete in ingresso per un'ora; questo produce un risultato diverso da avg() (la media), poiché percentile non considera i valori anomali
(percentile(/host/net.if.in[eth0,bytes],1h,50)+percentile(/host/net.if.in[eth0,bytes],1h,51))/2 #calcola il valore mediano preciso con un numero pari di valori per un'ora
```

[comment]: # ({/8fe0ae58-e8041c00})

[comment]: # ({0e6c5369-3b1de601})
##### rate(/host/key,sec<:time shift>) {#rate}

La media per secondo del tasso di incremento di un contatore monotonicamente crescente nell'intervallo di tempo definito.<br>
Tipi di valore supportati: *Float*, *Integer*.

Parametri: 

-   Vedi [parametri comuni](#common-parameters)

Corrisponde funzionalmente a '[rate](https://prometheus.io/docs/prometheus/latest/querying/functions/#rate)' di PromQL.

Esempi:

```default
rate(/host/key,30s) #se l'aumento monotono in 30 secondi è 20, questa funzione restituisce 0.67.
rate(/host/net.if.in[eth0,bytes],5m)>500000 #il tasso di traffico in ingresso dell'interfaccia su eth0 ha superato 500 KB/s negli ultimi 5 minuti
rate(/host/app.requests.count,1m)>100 #il contatore del numero di richieste è aumentato a >100 richieste al secondo nell'ultimo minuto
```

[comment]: # ({/0e6c5369-3b1de601})

[comment]: # ({ba59dd3a-ce01d749})
Vedi [tutte le funzioni supportate](/manual/appendix/functions).

[comment]: # ({/ba59dd3a-ce01d749})
