[comment]: # attributes: notoc

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

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

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

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

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

[comment]: # ({/ea5e90a7-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(/узел_сети/ключ) {#change}

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

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

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

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

Примеры:

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

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

[comment]: # ({56cecc56-57458a90})
##### changecount(/узел_сети/ключ,(сек\|\#число)<:сдвиг_времени>,<режим>) {#changecount}

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

Параметры: 

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

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

Примеры:

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

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

[comment]: # ({1f9dc9af-f9ce5dd9})
##### count(/узел_сети/ключ,(сек\|\#число)<:сдвиг_времени>,<оператор>,<шаблон>) {#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* четвёртый параметр `шаблон` может быть указан как два числа, разделённых косой чертой («/»): **число\_для\_сравнения/маска**.
count() вычисляет «побитовое И» из значения и *маски* и сравнивает результат с *числом\_для\_сравнения*.
Если результат «побитового И» равен *числу\_для\_сравнения*, то значение считается.<br>Если *число\_для\_сравнения* и *маска* равны, требуется указывать только *маску* (без «/»).
-   Для операторов *regexp* и *iregexp* четвёртый параметр `шаблон` может быть обычным или [глобальным](/manual/regular_expressions#глобальные-регулярные-выражения) (начинающимся с «@») регулярным выражением.
В случае глобальных регулярных выражений чувствительность к регистру наследуется из настроек глобального регулярного выражения.
При проверке соответствия регулярному выражению, значения с плавающей точкой всегда будут представлены с 4 цифрами после десятичной точки («.»).
Также обратите внимение, что для больших чисел различие между десятичным (хранящимся в базе данных) и двоичным (используемом сервером Zabbix) представлениями может повлиять на 4-ю десятичную цифру.

Примеры:

```default
count(/узел_сети/icmpping,30m,,"0")>5 #пинг сбоил более 5 раз за 30 минут
count(/узел_сети/ключ,10m,"like","error") #количество значений за последние 10 минут до текущего момента, которые содержат «error»
count(/узел_сети/ключ,10m,,12) #количество значений за последние 10 минут до текущего момента, которые равны «12»
count(/узел_сети/ключ,10m,"gt",12) #количество значений за последние 10 минут до текущего момента, превышающих «12»
count(/узел_сети/ключ,#10,"gt",12) #количество значений среди 10 последних значений до текущего момента, которые больше чем «12»
count(/узел_сети/ключ,10m:now-1d,"gt",12) #количество значений за период между (24 часа и 10 минут назад) и (24 часа назад) от текущего момента, которые превышают «12»
count(/узел_сети/ключ,10m,"bitand","6/7") #количество значений за последние 10 минут до текущего момента, у которых в двоичном представлении последние три значащих бита равны «110».
count(/узел_сети/ключ,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(/узел_сети/ключ,<(сек\|\#число)<:сдвиг_времени>>,<оператор>,<шаблон>) {#find}

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

Параметры:

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

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

-   Если обрабатывается более одного значения, «1» возвращается, если имеется по крайней мере одно совпадающее значение.
-   *like* в качестве оператора не поддерживается для целочисленных значений.
-   *like* и *bitand* в качестве оператора не поддерживаются для значений с плавающей точкой.
-   Для значений с типом символ, текст и журнал (лог) поддерживаются только операторы *eq*, *ne*, *like*, *regexp* и *iregexp*.
-   С операторами *regexp* и *iregexp* четвёртый параметр `шаблон` может быть обычным или [глобальным](/manual/regular_expressions#глобальные-регулярные-выражения) (начинающимся с «@») регулярным выражением.
В случае глобальных регулярных выражений чувствительность к регистру наследуется из настроек глобального регулярного выражения.

Примеры:

```default
find(/узел_сети/agent.version,,"like","beta")=1 #Zabbix agent имеет бета-версию, требуется обновление
find(/узел_сети/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]: # ({96c1f032-1c3609f8})
##### fuzzytime(/узел_сети/ключ,сек) {#fuzzytime}

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

Параметры: 

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

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

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

Примеры:

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

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

[comment]: # ({fc04e088-8059d345})
##### last(/узел_сети/ключ,<\#число<:сдвиг_времени>>) {#last}

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

Параметры: 

-   Смотрите [общие параметры](#общие-параметры)<br>
-   **\#число** (опционально) — N-ое значение из самых новых

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

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

Примеры:

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

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

[comment]: # ({5cecd78d-ff5dcd5e})
##### logeventid(/узел_сети/ключ,<\#число<:сдвиг_времени>>,<шаблон>) {#logeventid}

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

Параметры: 

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

Примеры:

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

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

[comment]: # ({d3497d35-5053b990})
##### logseverity(/узел_сети/ключ,<\#число<:сдвиг_времени>>) {#logseverity}

Важность события последней записи в журнале.<br>
Поддерживаемые типы значений: *Log*.<br>
Возвращает: 0 — важность по умолчанию; N — важность (целое число, полезно для журналов событий Windows: 1 — Уведомление, 2 — Предупреждение, 4 — Ошибка, 7 — Аудит отказов, 8 — Аудит успехов, 9 — Критическая ошибка, 10 — Детали).

Параметры: 

-   Смотрите [общие параметры](#общие-параметры);<br>
-   **\#число** (опционально) — N-ое из наиболее недавних значений.

Zabbix берёт важность журнала из поля **Информация** журнала событий Windows.

Примеры:

```default
logseverity(/узел_сети/log[/var/log/syslog],10m)>3 #найдена запись в журнале с важностью выше чем «3»
logseverity(/узел_сети/eventlog[System],10m)=4 #найдена запись в журнале с важностью, равной «Ошибка»
```

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

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

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

Параметры: 

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

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

Примеры:

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

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

[comment]: # ({2b7441d8-6a63b5c8})
##### monodec(/узел_сети/ключ,(сек\|\#число)<:сдвиг_времени>,<режим>) {#monodec}

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

Параметры: 

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

Примеры:

```default
monodec(/узел_сети/system.swap.size[all,free],60s) + monodec(/узел_сети2/system.swap.size[all,free],60s) + monodec(/узел_сети3/system.swap.size[all,free],60s) #посчитать, на каком количестве узлов сети было уменьшение свободного места в области подкачки
monodec(/узел_сети/proc.num[nginx],10m,"strict")=1 #количество процессов nginx монотонно уменьшалось за последние 10 минут
```

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

[comment]: # ({09e06757-755c1821})
##### monoinc(/узел_сети/ключ,(сек\|\#число)<:сдвиг_времени>,<режим>) {#monoinc}

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

Параметры: 

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

Примеры:

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

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

[comment]: # ({ce0040c4-178e3950})
##### nodata(/узел_сети/ключ,сек,<режим>) {#nodata}

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

Параметры: 

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

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

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

Пример:

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

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

[comment]: # ({8fe0ae58-e8041c00})
##### percentile(/узел_сети/ключ,(сек\|\#число)<:сдвиг_времени>,процент) {#percentile}

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

Параметры: 

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

Примеры:

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

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

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

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

Параметры: 

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

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

Примеры:

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

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

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

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

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