[comment]: # attributes: notoc

[comment]: # ({11b7940f-7da5ea1c})
# 4 Функции истории

Все функции, перечисленные здесь, поддерживаются в:

-   [выражениях триггеров](/manual/config/triggers/expression)
-   [рассчитываемых элементах данных](/manual/config/items/itemtypes/calculated)
-   [макросах выражений](/manual/config/macros/expression_macros)

Функции перечислены без дополнительной информации.
Нажмите на функцию, чтобы увидеть полные сведения.

|Function|Description|
|--|--------|
|[change](#change)|Величина разницы между предыдущим и последним значением.|
|[changecount](#changecount)|Количество изменений между соседними значениями в пределах заданного периода оценки.|
|[count](#count)|Количество значений в пределах заданного периода оценки.|
|[countunique](#countunique)|Количество уникальных значений в пределах заданного периода оценки.|
|[find](#find)|Поиск совпадения значения в пределах заданного периода оценки.|
|[first](#first)|Первое (самое старое) значение в пределах заданного периода оценки.|
|[firstclock](#firstclock)|Метка времени первого (самого старого) значения в пределах заданного периода оценки.|
|[fuzzytime](#fuzzytime)|Проверка, насколько время пассивного агента отличается от времени сервера/прокси Zabbix.|
|[last](#last)|Самое последнее значение.|
|[lastclock](#lastclock)|Метка времени N-го самого последнего значения в пределах заданного периода оценки.|
|[logeventid](#logeventid)|Проверка, совпадает ли ID события последней записи журнала с регулярным выражением.|
|[logseverity](#logseverity)|Уровень серьезности журнала последней записи журнала.|
|[logsource](#logsource)|Проверка, совпадает ли источник журнала последней записи журнала с регулярным выражением.|
|[logtimestamp](#logtimestamp)|Метка времени сообщения журнала для N-го самого последнего значения элемента данных журнала.|
|[monodec](#monodec)|Проверка, было ли монотонное уменьшение значений.|
|[monoinc](#monoinc)|Проверка, было ли монотонное увеличение значений.|
|[nodata](#nodata)|Проверка отсутствия полученных данных.|
|[percentile](#percentile)|P-й процентиль периода, где P (процент) задается третьим параметром.|
|[rate](#rate)|Средняя скорость увеличения в секунду для монотонно возрастающего счетчика в пределах заданного периода времени.|

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

[comment]: # ({2310631d-4d343eb8})
##### Общие параметры

-   `/узел_сети/ключ` является общим обязательным первым параметром для функций, ссылающихся на историю элемента данных узла сети
-   `(сек|#число)<:сдвиг_времени>` является общим вторым параметром для функций, ссылающихся на историю элемента данных узла сети, где:
    -   **сек** — максимальный [период вычисления](/manual/config/triggers#период-вычисления) в секундах (могут использоваться [суффиксы](/manual/appendix/suffixes) времени), либо
    -   **\#число** — максимальная [область вычисления](/manual/config/triggers#период-вычисления) среди последних собранных значений (если начинается со знака решётки)
    -   **сдвиг_времени** (опционально) позволяет сдвигать точку вычислений по времени назад в прошлое.
    Смотрите [более подробную информацию](/manual/config/triggers/expression#сдвиг-времени) относительно того, как указывать сдвиг времени.

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

[comment]: # ({aa4e1bf6-8f3a0028})
### Подробности функций

Некоторые общие замечания о параметрах функций:

-   параметры функций разделяются запятыми
-   необязательные параметры функций (или части параметров) обозначаются угловыми скобками `<` `>`
-   параметры, специфичные для функций, описываются с каждой функцией
-   параметры `/узел_сети/ключ` и `(сек|#число)<:сдвиг_времени>` никогда не должны заключаться в кавычки

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

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

Величина разницы между предыдущим и последним значением.<br>
Поддерживаемые типы значений: *Float*, *Integer*, *String*, *Text*, *Log*.<br>
Для строк возвращает: 0 - значения равны; 1 - значения различаются.

Параметры: см. [общие параметры](#common-parameters).

Комментарии:

-   Числовая разница будет вычислена, как показано на следующих примерах входных значений ('previous' и 'latest' value = разница):<br>'1' и '5' = `+4`<br>'3' и '1' = `-2`<br>'0' и '-2.5' = `-2.5`.<br>
-   См. также: [abs](/manual/appendix/functions/math#abs) для сравнения.

Примеры:

```default
change(/host/system.uptime)<0 #изменение времени работы системы было отрицательным с момента последнего значения (что указывает на перезагрузку)
change(/host/system.cpu.load[all,avg1])>2 #нагрузка CPU (за одну минуту) выросла более чем на 2 по сравнению с последним значением
change(/host/vfs.fs.size[/,free])<-1G #свободное дисковое пространство уменьшилось более чем на 1 ГБ между проверками
```

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

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

Количество изменений между соседними значениями в пределах заданного периода оценки.<br>
Поддерживаемые типы значений: *Float*, *Integer*, *String*, *Text*, *Log*.

Параметры: 

-   См. [общие параметры](#common-parameters)<br>
-   **mode** (должен быть заключен в двойные кавычки) - возможные значения: *all* - считать все изменения (по умолчанию); *dec* - считать уменьшения; *inc* - считать увеличения

Для нечисловых типов значений параметр *mode* игнорируется.

Примеры:

```default
changecount(/host/icmpping,10m)>5 #состояние ping изменилось более 5 раз за 10 минут
changecount(/host/vfs.file.contents["/sys/class/net/eth0/operstate"],1h)>5 #операционное состояние eth0 изменилось более 5 раз за час
changecount(/host/proc.num[httpd],15m)>10 #количество процессов httpd изменилось более чем на 10 за 15 минут
changecount(/host/key,#10,"inc") #количество увеличений значения (относительно соседнего значения) среди последних 10 значений
changecount(/host/key,24h,"dec") #количество уменьшений значения (относительно соседнего значения) за последние 24 часа до текущего момента
```

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

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

Количество значений в пределах заданного периода оценки.<br>
Поддерживаемые типы значений: *Float*, *Integer*, *String*, *Text*, *Log*.

Параметры: 

-   См. [общие параметры](#common-parameters)<br>
-   **operator** (должен быть в двойных кавычках)
Поддерживаемые `operators`:<br>*eq* - равно (по умолчанию для integer, float)<br>*ne* - не равно<br>*gt* - больше<br>*ge* - больше или равно<br>*lt* - меньше<br>*le* - меньше или равно<br>*like* (по умолчанию для string, text, log) - совпадает, если содержит шаблон (с учетом регистра)<br>*bitand* - побитовое И<br>*regexp* - совпадение с регулярным выражением, заданным в `pattern`, с учетом регистра<br>*iregexp* - совпадение с регулярным выражением, заданным в `pattern`, без учета регистра<br>
-   **pattern** - требуемый шаблон (строковые аргументы должны быть в двойных кавычках)

Комментарии:

-   Элементы данных типа Float сопоставляются с точностью 2.22e-16.
-   *like* не поддерживается как оператор для значений integer.
-   *like* и *bitand* не поддерживаются как операторы для значений float.
-   Для значений string, text и log поддерживаются только операторы *eq*, *ne*, *like*, *regexp* и *iregexp*.
-   При использовании *bitand* в качестве оператора четвертый параметр `pattern` можно указать как два числа, разделенные '/': **number_to_compare_with/mask**.
count() вычисляет "побитовое И" значения и *mask* и сравнивает результат с *number_to_compare_with*.
Если результат "побитового И" равен *number_to_compare_with*, значение учитывается.<br>Если *number_to_compare_with* и *mask* равны, достаточно указать только *mask* (без '/').
-   При использовании *regexp* или *iregexp* в качестве оператора четвертый параметр `pattern` может быть обычным или [глобальным](/manual/regular_expressions#global-regular-expressions) регулярным выражением (начинающимся с '@').
В случае глобальных регулярных выражений чувствительность к регистру наследуется из настроек глобального регулярного выражения.
Для сопоставления regexp значения float всегда будут представлены с 4 десятичными знаками после '.'.
Также обратите внимание, что для больших чисел разница в десятичном (хранимом в базе данных) и двоичном (используемом сервером Zabbix) представлении может повлиять на 4-ю десятичную цифру.

Примеры:

```default
count(/host/icmpping,30m,,"0")>5 #ping неудачен более 5 раз за 30 минут
count(/host/key,10m,"like","error") #количество значений за последние 10 минут до текущего момента, содержащих 'error'
count(/host/key,10m,,12) #количество значений за последние 10 минут до текущего момента, равных '12'
count(/host/key,10m,"gt",12) #количество значений за последние 10 минут до текущего момента, которые больше '12'
count(/host/key,#10,"gt",12) #количество значений среди последних 10 значений до текущего момента, которые больше '12'
count(/host/key,10m:now-1d,"gt",12) #количество значений между 24 часами и 10 минутами и 24 часами назад от текущего момента, которые были больше '12'
count(/host/key,10m,"bitand","6/7") #количество значений за последние 10 минут до текущего момента, имеющих '110' (в двоичном виде) в 3 младших значащих битах
count(/host/key,10m:now-1d) #количество значений между 24 часами и 10 минутами и 24 часами назад от текущего момента
```

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

[comment]: # ({ab6b4d74-bf8dc20c})
##### countunique(/узел_сети/ключ,(сек\|\#число)<:сдвиг_времени>,<оператор>,<шаблон>) {#count}

Количество уникальных значений за определённый период вычисления.<br>
Поддерживаемые типы значений: *Float*, *Integer*, *String*, *Text*, *Log*.

Параметры: 

-   смотрите [общие параметры](#общие-параметры)<br>
-   **оператор** (должен быть в двойных кавычках).
Поддерживаются `операторы`:<br>*eq* — равно (по умолчанию для integer и float)<br>*ne* — не равно<br>*gt* — больше<br>*ge* — больше или равно<br>*lt* — меньше<br>*le* — меньше или равно<br>*like* (по умолчанию для элементов данных символ, текст и журнал (лог)) — содержит подстроку шаблона (чувствительно к регистру)<br>*bitand* — побитовое И<br>*regexp* — чувствительное к регистру соответствие регулярному выражению, данному в `шаблоне`<br>*iregexp* — нечувствительное к регистру соответствие регулярному выражению, данному в `шаблоне`<br>
-   **шаблон** — искомый шаблон (строковые аргументы должны быть в двойных кавычках)

Комментарии:

-   Элементы данных с плавающей точкой совпадают с точностью 2.22e-16.
-   *like* в качестве оператора не поддерживается для целочисленных значений.
-   Для значений с типами символ, текст и журнал (лог) поддерживаются только операторы *eq*, *ne*, *like*, *regexp* и *iregexp*.
-   Для оператора *bitand* четвёртый параметр `шаблон` может быть указан как два числа, разделённых косой чертой («/»): **число\_для\_сравнения/маска**. countunique() вычисляет «побитовое И» из значения и *маски* и сравнивает результат с *числом\_для\_сравнения*.
Если результат «побитового И» равен *числу\_для\_сравнения*, то значение считается.<br>Если *число\_для\_сравнения* и *маска* равны, требуется указывать только *маску* (без «/»).
-   Для операторов *regexp* и *iregexp* четвёртый параметр `шаблон` может быть обычным или [глобальным](/manual/regular_expressions#глобальные-регулярные-выражения) (начинающимся с «@») регулярным выражением.
В случае глобальных регулярных выражений чувствительность к регистру наследуется из настроек глобального регулярного выражения.
При проверке соответствия регулярному выражению, значения с плавающей точкой всегда будут представлены с 4 цифрами после десятичной точки («.»).
Также обратите внимение, что для больших чисел различие между десятичным (хранящимся в базе данных) и двоичным (используемом сервером Zabbix) представлениями может повлиять на 4-ю десятичную цифру.

Примеры:

```default
countunique(/узел_сети/ключ,10m) #количество уникальных значений за последние 10 минут до текущего момента
countunique(/узел_сети/ключ,10m,"like","error") #количество уникальных значений за последние 10 минут до текущего момента, которые содержат «error»
countunique(/узел_сети/ключ,10m,,12) #количество уникальных значений за последние 10 минут до текущего момента, которые равны «12»
countunique(/узел_сети/ключ,10m,"gt",12) #количество уникальных значений за последние 10 минут до текущего момента, превышающих «12»
countunique(/узел_сети/ключ,#10,"gt",12) #количество уникальных значений среди 10 последних значений до текущего момента, которые больше чем «12»
countunique(/узел_сети/ключ,10m:now-1d,"gt",12) #количество уникальных значений за период между (24 часа и 10 минут назад) и (24 часа назад) от текущего момента, которые превышают «12»
countunique(/узел_сети/ключ,10m,"bitand","6/7") #количество уникальных значений за последние 10 минут до текущего момента, у которых в двоичном представлении последние три значащих бита равны «110».
countunique(/узел_сети/ключ,10m:now-1d) #количество уникальных значений за период между (24 часа и 10 минут назад) и (24 часа назад) от текущего момента
```

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

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

Находит совпадение значения в пределах заданного периода оценки.<br>
Поддерживаемые типы значений: *Float*, *Integer*, *String*, *Text*, *Log*.<br>
Возвращает: 1 - найдено; 0 - в противном случае.

Параметры: 

-   См. [общие параметры](#common-parameters)<br>
-   **sec** или **#num** (необязательно) - по умолчанию используется последнее значение, если не указано
-   **operator** (должен быть в двойных кавычках)
Поддерживаемые `operators`:<br>*eq* - равно (по умолчанию для integer, float)<br>*ne* - не равно<br>*gt* - больше<br>*ge* - больше или равно<br>*lt* - меньше<br>*le* - меньше или равно<br>*like* (по умолчанию для string, text, log) - совпадает, если содержит строку, заданную в `pattern` (с учетом регистра)<br>*bitand* - побитовое И<br>*regexp* - совпадение с регулярным выражением, заданным в `pattern`, с учетом регистра<br>*iregexp* - совпадение с регулярным выражением, заданным в `pattern`, без учета регистра<br>
-   **pattern** - требуемый шаблон (строковые аргументы должны быть в двойных кавычках); регулярное выражение [Perl Compatible Regular Expression](https://en.wikipedia.org/wiki/Perl_Compatible_Regular_Expressions) (PCRE), если `operator` - *regexp*, *iregexp*

Комментарии:

-   Если обрабатывается более одного значения, возвращается '1', если найдено хотя бы одно совпадающее значение.
-   *like* не поддерживается как оператор для значений integer.
-   *like* и *bitand* не поддерживаются как операторы для значений float.
-   Для значений string, text и log поддерживаются только операторы *eq*, *ne*, *like*, *regexp* и *iregexp*.
-   При использовании *regexp* или *iregexp* в качестве оператора четвертый параметр `pattern` может быть обычным или [глобальным](/manual/regular_expressions#global-regular-expressions) регулярным выражением (начинающимся с '@').
В случае глобальных регулярных выражений чувствительность к регистру наследуется из настроек глобального регулярного выражения.

Примеры:

```default
find(/host/key,10m,"like","error") #находит значение, содержащее 'error', за последние 10 минут до текущего момента
find(/host/agent.version,,"like","beta")=1 #агент Zabbix имеет beta-версию, требуется обновление
find(/host/log[/var/log/nginx/access.log],,"regexp"," 500 ")=1 #обнаружена внутренняя ошибка веб-сервера
```

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

[comment]: # ({86057069-0ae5f587})
##### first(/узел_сети/ключ,сек<:сдвиг_времени>) {#first}

Первое (самое старое) значение за указанный период вычисления.<br>
Поддерживаемые типы значений: *Float*, *Integer*, *String*, *Text*, *Log*.

Параметры: 

-   смотрите [общие параметры](#общие-параметры)

Смотрите также [last()](#last).

Пример:

```default
first(/узел_сети/ключ,1h) #извлечь самое старое значение за последний час вплоть до текущего момента
```

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

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

Временная метка самого старого значения в пределах заданного периода оценки.<br>
Поддерживаемые типы значений: *Float*, *Integer*, *String*, *Text*, *Log*.

Параметры: 

-   См. [common parameters](#common-parameters).

Функция завершается с ошибкой, если за указанный период не было собрано данных.

См. также [lastclock()](#lastclock).

Примеры:

```default
firstclock(/host/key,1h) #получить временную метку самого старого значения за последний час
firstclock(/host/key,1h:now-24h) #получить временную метку самого старого значения за последний час сутки назад
```

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

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

Проверяет, насколько время пассивного агента отличается от времени сервера/прокси Zabbix.<br>
Поддерживаемые типы значений: *Float*, *Integer*.<br>
Возвращает: 1 - разница между значением пассивного элемента данных (как временной меткой) и временной меткой сервера/прокси Zabbix (временем сбора значения) меньше или равна *sec* секундам; 0 - в противном случае.

Параметры: 

-   См. [common parameters](#common-parameters).

Комментарии:

-   Обычно используется с элементом данных 'system.localtime', чтобы проверить, что локальное время синхронизировано с локальным временем сервера Zabbix.
*Обратите внимание*, что 'system.localtime' должен быть настроен как [пассивная проверка](/manual/appendix/items/activepassive#passive-checks) для агента Zabbix; в Zabbix agent 2 он может быть настроен как активная проверка.
-   Также может использоваться с ключом `vfs.file.time[/path/file,modify]`, чтобы проверить, что файл долгое время не обновлялся.
-   Не рекомендуется использовать эту функцию в сложных выражениях триггеров (с участием нескольких элементов данных), поскольку это может привести к неожиданным результатам (разница во времени будет измеряться по самой последней метрике), например: `fuzzytime(/Host/system.localtime,60s)=0 or last(/Host/trap)<>0`.

Примеры:

```default
fuzzytime(/host/system.localtime,5m)=0 #локальное время клиента отличается от времени сервера/прокси Zabbix более чем на 5 минут
fuzzytime(/host/system.localtime,5m)=0 and nodata(/host/system.localtime,10m)=0 #локальное время клиента отличается от времени сервера/прокси Zabbix более чем на 5 минут (при этом проверяется, что элемент данных не перестал передавать данные)
```

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

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

Самое последнее значение.<br>
Поддерживаемые типы значений: *Float*, *Integer*, *String*, *Text*, *Log*.

Параметры: 

-   См. [общие параметры](#common-parameters)<br>
-   **#num** (необязательно) - N-е по счету самое последнее значение

Комментарии:

-   Обратите внимание, что период времени с хэштегом (#N) здесь работает иначе, чем во многих других функциях.
Например: `last(/host/key)` всегда равно `last(/host/key,#1)`; `last(/host/key,#3)` - третье по счету самое последнее значение (*а не* три последних значения).
-   Zabbix не гарантирует точный порядок значений, если в истории за одну секунду существует более двух значений.
-   См. также [first()](#first).

Примеры:

```default
last(/host/key) #получить последнее значение
last(/host/key,#2) #получить предыдущее значение
last(/host/key,#1)<>last(/host/key,#2) #два последних значения различаются
```

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

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

Метка времени N-го самого недавнего значения в пределах заданного периода оценки.<br>
Поддерживаемые типы значений: *Float*, *Integer*, *String*, *Text*, *Log*.

Параметры: 

-   См. [общие параметры](#common-parameters);<br>
-   **#num** (необязательно) - N-е самое недавнее значение.

Функция завершается с ошибкой, если за указанный период не было собрано ни одного данных или не было собрано N-е значение.

См. также [firstclock()](#firstclock).

Примеры:

```default
lastclock(/host/key) #получить метку времени последнего значения
lastclock(/host/key,#2) #получить метку времени 2-го последнего значения
now()-lastclock(/host/heartbeat.item)>300 #с момента обновления элемента данных heartbeat прошло более 5 минут
lastclock(/host/system.cpu.load[all,avg1])-lastclock(/host/system.cpu.load[all,avg1],#2)>300 #интервал обновления между двумя последними значениями превышает 5 минут
((now()-lastclock(/host/system.cpu.load[all,avg1])<120 and last(/host/system.cpu.load[all,avg1])>5)) #значение CPU высокое, и значение свежее (менее 2 минут)
```

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

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

Проверяет, соответствует ли идентификатор события последней записи журнала регулярному выражению.<br>
Поддерживаемые типы значений: *Log*.<br>
Возвращает: 0 - не соответствует; 1 - соответствует.

Параметры: 

-   См. [общие параметры](#common-parameters)<br>
-   **#num** (необязательно) - N-е самое недавнее значение<br>
-   **pattern** (необязательно) - регулярное выражение, описывающее требуемый шаблон, в стиле [Perl Compatible Regular Expression](https://en.wikipedia.org/wiki/Perl_Compatible_Regular_Expressions) (PCRE) (строковые аргументы должны быть заключены в двойные кавычки)

Примеры:

```default
logeventid(/host/eventlog[Security],,"^4625$")=1 #найдена запись журнала с идентификатором, соответствующим "4625" (неудачная аутентификация)
logeventid(/host/eventlog[System],,"^(6008|41)$")=1 #найдена запись журнала с идентификатором, соответствующим "6008" или "41"
```

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

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

Уровень серьезности последней записи журнала.<br>
Поддерживаемые типы значений: *Log*.<br>
Возвращает: 0 - уровень серьезности по умолчанию; N - уровень серьезности (целое число, полезно для журналов событий Windows: 1 - Information, 2 - Warning, 4 - Error, 7 - Failure Audit, 8 - Success Audit, 9 - Critical, 10 - Verbose).

Параметры: 

-   См. [общие параметры](#common-parameters)<br>
-   **#num** (необязательно) - N-е по счету самое недавнее значение

Zabbix берет уровень серьезности журнала из поля **Information** журнала событий Windows.

Примеры:

```default
logseverity(/host/log[/var/log/syslog],10m)>3 #найдена запись журнала с уровнем серьезности выше "3"
logseverity(/host/eventlog[System],10m)=4 #найдена запись журнала с уровнем серьезности, равным "Error"
```

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

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

Проверяет, соответствует ли источник последней записи журнала регулярному выражению.<br>
Поддерживаемые типы значений: *Log*.<br>
Возвращает: 0 - не соответствует; 1 - соответствует.

Параметры: 

-   См. [общие параметры](#common-parameters)<br>
-   **#num** (необязательно) - N-е по счету самое недавнее значение<br>
-   **pattern** (необязательно) - регулярное выражение, описывающее требуемый шаблон, в стиле [Perl Compatible Regular Expression](https://en.wikipedia.org/wiki/Perl_Compatible_Regular_Expressions) (PCRE) (строковые аргументы должны быть заключены в двойные кавычки)

Обычно используется для журналов событий Windows.

Примеры:

```default
logsource(/host/eventlog[Application],,"MSSQLSERVER")=1 #найдена запись журнала, источник которой соответствует "MSSQLSERVER"
logsource(/host/eventlog[System],,"Service Control Manager")=1 #найдена запись журнала, источник которой соответствует "Service Control Manager"
logsource(/host/eventlog[System],,"Service Control Manager")=1 and logeventid(/host/eventlog[System],,"^7031$")=1 #найдена запись журнала, источник которой соответствует "Service Control Manager", и идентификатор события соответствует "7031"
```

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

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

Временная метка сообщения журнала для N-го по новизне значения элемента данных типа log.<br>
Поддерживаемые типы значений: *Log*.

Параметры:

-   См. [общие параметры](#common-parameters);<br>
-   **#num** (необязательно) - N-е по новизне значение.

Комментарии:

-   Вычисление сдвига времени основано на часах значения элемента данных, а не на временной метке сообщения журнала;
-   Функция завершается с ошибкой, если:
    -   получен элемент данных не типа log;
    -   за указанный период не было собрано данных;
    -   не было собрано N-е значение;
    -   сообщение журнала не содержит значения временной метки.

Примеры:

```default
logtimestamp(/host/key) #получить временную метку последнего сообщения журнала
logtimestamp(/host/key,#2) #получить временную метку предпоследнего сообщения журнала
logtimestamp(/host/key,#3:now-1d) #получить временную метку третьего по новизне сообщения журнала сутки назад
```

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

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

Проверяет, было ли монотонное уменьшение значений.<br>
Поддерживаемые типы значений: *Integer*.<br>
Возвращает: 1 - если все элементы в период времени непрерывно уменьшаются; 0 - в противном случае.

Параметры: 

-   См. [общие параметры](#common-parameters)<br>
-   **mode** (должен быть в двойных кавычках) - *weak* (каждое значение меньше предыдущего или равно ему; по умолчанию) или *strict* (каждое значение уменьшилось)

Примеры:

```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) #calculate in how many hosts there has been a decrease in free swap size
monodec(/host/proc.num[nginx],10m,"strict")=1 #the number of nginx processes has monotonously decreased over 10 minutes
```

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

[comment]: # ({09e06757-755c1821})
##### monoinc(/host/key,(sec|#num)<:сдвиг времени>,<mode>) {#monoinc}

Проверяет, было ли монотонное увеличение значений.<br>
Поддерживаемые типы значений: *Integer*.<br>
Возвращает: 1 - если все элементы в период времени непрерывно увеличиваются; 0 - в противном случае.

Параметры: 

-   См. [общие параметры](#common-parameters)<br>
-   **mode** (должен быть в двойных кавычках) - *weak* (каждое значение больше или равно предыдущему; по умолчанию) или *strict* (каждое значение строго больше предыдущего)

Примеры:

```default
monoinc(/host/system.localtime,#3,"strict")=0 #системное локальное время не увеличивалось последовательно
monoinc(/host/vfs.dir.count[/mnt/data/logs],24h,"weak")=0 #триггер, если количество файлов не изменялось в течение 24 часов (ожидается рост)
```

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

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

Проверка отсутствия полученных данных.<br>
Поддерживаемые типы значений: *Integer*, *Float*, *Character*, *Text*, *Log*.<br>
Возвращает: 1 - если данные не поступали в течение заданного периода времени; 0 - в противном случае.

Параметры: 

-   См. [общие параметры](#common-parameters)<br>
-   **sec** - период не должен быть меньше 30 секунд, поскольку процесс history syncer вычисляет эту функцию только каждые 30 секунд; `nodata(/host/key,0)` запрещено
-   **mode** - если задано значение *strict* (в двойных кавычках), эта функция не будет зависеть от доступности прокси (см. комментарии для подробностей)

Комментарии:

-   триггеры 'nodata', контролируемые через прокси, по умолчанию чувствительны к доступности прокси - если прокси становится недоступен, триггеры 'nodata' не сработают сразу после восстановления соединения, а пропустят данные за задержанный период.
Обратите внимание, что для пассивных прокси подавление активируется, если соединение восстановлено более чем через 15 секунд и не менее чем через 2 секунды.
Для активных прокси подавление активируется, если соединение восстановлено более чем через 15 секунд.
Чтобы отключить чувствительность к доступности прокси, используйте третий параметр, например: `nodata(/host/key,5m,"strict")`; в этом случае функция сработает, как только истечет период оценки (пять минут) без данных.<br>
-   Эта функция будет отображать ошибку, если в течение периода, заданного 1-м параметром:<br>- нет данных и сервер Zabbix был перезапущен<br>- нет данных и обслуживание было завершено<br>- нет данных и элемент данных был добавлен или повторно включен.<br>
-   Ошибки отображаются в столбце *Info* в [конфигурации](/manual/web_interface/frontend_sections/data_collection/hosts/triggers) триггера.<br>
-   Эта функция может работать некорректно, если между сервером Zabbix, прокси и агентом есть различия во времени.
См. также: [Требование к синхронизации времени](/manual/installation/requirements#time-synchronization).

Пример:

```default
nodata(/host/agent.ping,5m)=1 #триггер, если от агента Zabbix не получены данные в течение 5 минут
```

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

[comment]: # ({8fe0ae58-e8041c00})
##### percentile(/host/key,(sec|#num)<:сдвиг времени>,percentage) {#percentile}

P-й процентиль периода, где P (процент) задается третьим параметром.<br>
Поддерживаемые типы значений: *Float*, *Integer*.

Параметры: 

-   См. [общие параметры](#common-parameters)<br>
-   **percentage** - число с плавающей точкой от 0 до 100 включительно, с точностью до 4 знаков после десятичной точки

Примеры:

```default
percentile(/host/net.if.in[eth0,bytes],1h,95)>1000000 #95-й процентиль входящего сетевого трафика (байт/с) за 1 час превысил порог (например, 1 МБ/с)
percentile(/host/system.cpu.util,5m,95)>80 #95-й процентиль процента пользовательского времени загрузки CPU превысил 80
percentile(/host/icmppingsec[192.168.0.2],15m,95)>0.15 #большинство измерений задержки ниже 150 мс, но верхний хвост распределения (верхние 5%) указывает на регулярные задержки
percentile(/host/net.if.in[eth0,bytes],1h,50) #вычислить 50-й процентиль (медианное значение) входящего сетевого трафика за час; это дает результат, отличный от avg() (среднего значения), поскольку percentile не учитывает выбросы
(percentile(/host/net.if.in[eth0,bytes],1h,50)+percentile(/host/net.if.in[eth0,bytes],1h,51))/2 #вычислить точное медианное значение для четного числа значений за час
```

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

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

Средняя скорость увеличения монотонно возрастающего счетчика за секунду в пределах заданного периода времени.<br>
Поддерживаемые типы значений: *Float*, *Integer*.

Параметры: 

-   См. [общие параметры](#common-parameters)

Функционально соответствует '[rate](https://prometheus.io/docs/prometheus/latest/querying/functions/#rate)' в PromQL.

Примеры:

```default
rate(/host/key,30s) #если монотонный рост за 30 секунд составляет 20, эта функция возвращает 0.67.
rate(/host/net.if.in[eth0,bytes],5m)>500000 #скорость входящего трафика интерфейса eth0 превысила 500 КБ/с за последние 5 минут
rate(/host/app.requests.count,1m)>100 #счетчик количества запросов вырос до >100 запросов в секунду за последнюю минуту
```

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

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

См. [все поддерживаемые функции](/manual/appendix/functions).

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