4 Функции истории
Все функции, перечисленные здесь, поддерживаются в:
Функции перечислены без дополнительной информации. Нажмите на функцию, чтобы увидеть полные сведения.
| Function | Description |
|---|---|
| change | Величина разницы между предыдущим и последним значением. |
| changecount | Количество изменений между соседними значениями в пределах заданного периода оценки. |
| count | Количество значений в пределах заданного периода оценки. |
| countunique | Количество уникальных значений в пределах заданного периода оценки. |
| find | Поиск совпадения значения в пределах заданного периода оценки. |
| first | Первое (самое старое) значение в пределах заданного периода оценки. |
| firstclock | Метка времени первого (самого старого) значения в пределах заданного периода оценки. |
| fuzzytime | Проверка того, насколько время пассивного агента отличается от времени сервера/прокси Zabbix. |
| last | Самое последнее значение. |
| lastclock | Метка времени N-го самого последнего значения в пределах заданного периода оценки. |
| logeventid | Проверка, соответствует ли ID события последней записи журнала регулярному выражению. |
| logseverity | Уровень серьезности журнала последней записи журнала. |
| logsource | Проверка, соответствует ли источник журнала последней записи журнала регулярному выражению. |
| logtimestamp | Метка времени сообщения журнала для N-го самого последнего значения элемента журнала. |
| monodec | Проверка, было ли монотонное уменьшение значений. |
| monoinc | Проверка, было ли монотонное увеличение значений. |
| nodata | Проверка отсутствия полученных данных. |
| percentile | P-й процентиль периода, где P (в процентах) задается третьим параметром. |
| rate | Средняя скорость увеличения в секунду для монотонно возрастающего счетчика в пределах заданного периода времени. |
Общие параметры
/host/key— общий обязательный первый параметр для функций, обращающихся к истории элемента данных узла сети(sec|#num)<:time shift>— общий второй параметр для функций, обращающихся к истории элемента данных узла сети, где:- sec — максимальный период оценки в секундах (можно использовать суффиксы времени), или
- #num — максимальный диапазон оценки в последних собранных значениях (если перед ним стоит символ решетки)
- time shift (необязательно) позволяет сместить точку оценки назад во времени. См. подробности о задании time shift.
Подробности функций
Некоторые общие замечания о параметрах функций:
- параметры функций разделяются запятыми
- необязательные параметры функций (или части параметров) обозначаются угловыми скобками
<> - параметры, специфичные для функций, описываются с каждой функцией
- параметры
/узел_сети/ключи(сек|#число)<:сдвиг_времени>никогда не должны заключаться в кавычки
change(/host/key)
Величина разницы между предыдущим и последним значением.
Поддерживаемые типы значений: Float, Integer, String, Text, Log.
Для строк возвращает: 0 - значения равны; 1 - значения различаются.
Параметры: см. общие параметры.
Комментарии:
- Числовая разница будет вычислена, как показано на следующих примерах входных значений ('previous' и 'latest' value = разница):
'1' и '5' =+4
'3' и '1' =-2
'0' и '-2.5' =-2.5. - В триггерах полезно для обнаружения резких всплесков (или падений), сбросов счетчиков, числовых переходов состояния.
- См. также: abs для сравнения.
Примеры:
change(/host/system.uptime)<0 #изменение времени работы системы было отрицательным с момента последнего значения (что указывает на перезагрузку)
change(/host/system.cpu.load[all,avg1])>2 #нагрузка на ЦП (за одну минуту) выросла более чем на 2 с момента последнего значения
change(/host/vfs.fs.size[/,free])<-1G #свободное дисковое пространство уменьшилось более чем на 1 ГБ между проверками
changecount(/host/key,(sec|#num)<:time shift>,<mode>)
Количество изменений между соседними значениями в пределах заданного периода оценки.
Поддерживаемые типы значений: Float, Integer, String, Text, Log.
Параметры:
- См. общие параметры
- mode (должен быть в двойных кавычках) - возможные значения: all - считать все изменения (по умолчанию); dec - считать уменьшения; inc - считать увеличения
Комментарии:
- Для нечисловых типов значений параметр mode игнорируется.
- В триггерах полезно для выявления частых изменений состояния (что указывает на нестабильность).
Примеры:
changecount(/host/icmpping,10m)>5 #состояние ping изменилось более 5 раз за 10 минут
changecount(/host/vfs.file.contents["/sys/class/net/eth0/operstate"],1h)>5 #состояние operstate интерфейса eth0 изменилось более 5 раз за час
changecount(/host/proc.num[httpd],15m)>10 #количество процессов httpd изменилось более 10 раз за 15 минут
changecount(/host/key,#10,"inc") #количество увеличений значения (относительно соседнего значения) среди последних 10 значений
changecount(/host/key,24h,"dec") #количество уменьшений значения (относительно соседнего значения) за последние 24 часа до текущего момента
count(/узел_сети/ключ,(сек|#число)<:сдвиг_времени>,<оператор>,<шаблон>)
Количество значений за определённый период вычисления.
Поддерживаемые типы значений: Float, Integer, String, Text, Log.
Параметры:
- смотрите общие параметры
- оператор (должен быть в двойных кавычках)
Поддерживаются
операторы:
eq — равно (по умолчанию для integer и float)
ne — не равно
gt — больше
ge — больше или равно
lt — меньше
le — меньше или равно
like (по умолчанию для элементов данных символ, текст и журнал (лог)) — содержит подстроку шаблона (чувствительно к регистру)
bitand — побитовое И
regexp — чувствительное к регистру соответствие регулярному выражению, данному вшаблоне
iregexp — нечувствительное к регистру соответствие регулярному выражению, данному вшаблоне - шаблон — искомый шаблон (строковые аргументы должны быть в двойных кавычках)
Комментарии:
- Элементы данных с плавающей точкой совпадают с точностью 2.22e-16.
- like в качестве оператора не поддерживается для целочисленных значений.
- Для значений с типами символ, текст и журнал (лог) поддерживаются только операторы eq, ne, like, regexp и iregexp.
- Для оператора bitand четвёртый параметр
шаблонможет быть указан как два числа, разделённых косой чертой («/»): число_для_сравнения/маска. count() вычисляет «побитовое И» из значения и маски и сравнивает результат с числом_для_сравнения. Если результат «побитового И» равен числу_для_сравнения, то значение считается.
Если число_для_сравнения и маска равны, требуется указывать только маску (без «/»). - Для операторов regexp и iregexp четвёртый параметр
шаблонможет быть обычным или глобальным (начинающимся с «@») регулярным выражением. В случае глобальных регулярных выражений чувствительность к регистру наследуется из настроек глобального регулярного выражения. При проверке соответствия регулярному выражению, значения с плавающей точкой всегда будут представлены с 4 цифрами после десятичной точки («.»). Также обратите внимение, что для больших чисел различие между десятичным (хранящимся в базе данных) и двоичным (используемом сервером Zabbix) представлениями может повлиять на 4-ю десятичную цифру.
Примеры:
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 часа назад) от текущего момента
countunique(/узел_сети/ключ,(сек|#число)<:сдвиг_времени>,<оператор>,<шаблон>)
Количество уникальных значений за определённый период вычисления.
Поддерживаемые типы значений: Float, Integer, String, Text, Log.
Параметры:
- смотрите общие параметры
- оператор (должен быть в двойных кавычках).
Поддерживаются
операторы:
eq — равно (по умолчанию для integer и float)
ne — не равно
gt — больше
ge — больше или равно
lt — меньше
le — меньше или равно
like (по умолчанию для элементов данных символ, текст и журнал (лог)) — содержит подстроку шаблона (чувствительно к регистру)
bitand — побитовое И
regexp — чувствительное к регистру соответствие регулярному выражению, данному вшаблоне
iregexp — нечувствительное к регистру соответствие регулярному выражению, данному вшаблоне - шаблон — искомый шаблон (строковые аргументы должны быть в двойных кавычках)
Комментарии:
- Элементы данных с плавающей точкой совпадают с точностью 2.22e-16.
- like в качестве оператора не поддерживается для целочисленных значений.
- Для значений с типами символ, текст и журнал (лог) поддерживаются только операторы eq, ne, like, regexp и iregexp.
- Для оператора bitand четвёртый параметр
шаблонможет быть указан как два числа, разделённых косой чертой («/»): число_для_сравнения/маска. countunique() вычисляет «побитовое И» из значения и маски и сравнивает результат с числом_для_сравнения. Если результат «побитового И» равен числу_для_сравнения, то значение считается.
Если число_для_сравнения и маска равны, требуется указывать только маску (без «/»). - Для операторов regexp и iregexp четвёртый параметр
шаблонможет быть обычным или глобальным (начинающимся с «@») регулярным выражением. В случае глобальных регулярных выражений чувствительность к регистру наследуется из настроек глобального регулярного выражения. При проверке соответствия регулярному выражению, значения с плавающей точкой всегда будут представлены с 4 цифрами после десятичной точки («.»). Также обратите внимение, что для больших чисел различие между десятичным (хранящимся в базе данных) и двоичным (используемом сервером Zabbix) представлениями может повлиять на 4-ю десятичную цифру.
Примеры:
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 часа назад) от текущего момента
find(/узел_сети/ключ,<(сек|#число)<:сдвиг_времени>>,<оператор>,<шаблон>)
Поиск соответствующего значения за определённый период вычисления.
Поддерживаемые типы значений: Float, Integer, String, Text, Log.
Возвращает: 1 — найдено; 0 — в противном случае.
Параметры:
- смотрите общие параметры
- сек или #число — если не указано, то по умолчанию проверяется последнее значение
- оператор (должен быть заключён в двойные кавычки)
Поддерживаются
операторы:
eq — равно (по умолчанию для integer и float)
ne — не равно
gt — больше
ge — больше или равно
lt — меньше
le — меньше или равно
like (по умолчанию для string, text и log) — значение содержит подстроку, заданную вшаблоне(с учётом регистра)
bitand — побитовое И
regexp — чувствительное к регистру соответствие регулярному выражению, данному вшаблоне
iregexp — нечувствительное к регистру соответствие регулярному выражению, данному вшаблоне - шаблон — искомый шаблон (строковые аргументы должны быть в двойных кавычках); регулярное выражение Perl Compatible Regular Expression (PCRE) если
оператор— regexp или iregexp
Комментарии:
- Если обрабатывается более одного значения, «1» возвращается, если имеется по крайней мере одно совпадающее значение.
- like в качестве оператора не поддерживается для целочисленных значений.
- like и bitand в качестве оператора не поддерживаются для значений с плавающей точкой.
- Для значений с типом символ, текст и журнал (лог) поддерживаются только операторы eq, ne, like, regexp и iregexp.
- С операторами regexp и iregexp четвёртый параметр
шаблонможет быть обычным или глобальным (начинающимся с «@») регулярным выражением. В случае глобальных регулярных выражений чувствительность к регистру наследуется из настроек глобального регулярного выражения.
Примеры:
find(/узел_сети/agent.version,,"like","beta")=1 #Zabbix agent имеет бета-версию, требуется обновление
find(/узел_сети/log[/var/log/nginx/access.log],,"regexp"," 500 ")=1 #найдена внутренняя ошибка веб-сервера
first(/узел_сети/ключ,сек<:сдвиг_времени>)
Первое (самое старое) значение за указанный период вычисления.
Поддерживаемые типы значений: Float, Integer, String, Text, Log.
Параметры:
- смотрите общие параметры
Смотрите также last().
Пример:
first(/узел_сети/ключ,1h) #извлечь самое старое значение за последний час вплоть до текущего момента
firstclock(/host/key,sec<:time shift>)
Метка времени самого старого значения в пределах заданного периода вычисления.
Поддерживаемые типы значений: Float, Integer, String, Text, Log.
Параметры:
- См. общие параметры.
Функция завершается с ошибкой, если за указанный период не было собрано данных.
См. также lastclock().
Примеры:
firstclock(/host/key,1h) #получить метку времени самого старого значения за последний час
firstclock(/host/key,1h:now-24h) #получить метку времени самого старого значения за последний час сутки назад
fuzzytime(/узел_сети/ключ,сек)
Проверка того, насколько время пассивного агента отличается от времени Zabbix сервера/прокси.
Поддерживаемые типы значений: Float, Integer.
Возвращает: 1 — если разница между значением пассивного элемента данных (как штампа времени) и штампом времени Zabbix сервера/прокси (временем получения значения) меньше или равна сек секунд; 0 — в противном случае.
Параметры:
- Смотрите общие параметры.
Комментарии:
- Обычно используется с элементом данных «system.localtime» для проверки того, что локальное время синхронизировано с локальным временем Zabbix сервера. Обратите внимание, что «system.localtime» должно быть настроено как пассивная проверка.
- Также можно использовать с ключом
vfs.file.time[/путь/файл,modify]для проверки, что файл не обновлялся длительное время. - Эту функцию не рекомендуется использовать в сложных триггерных выражениях (с участием нескольких элементов данных), поскольку это может привести к непредвиденным результатам (разница по времени будет считаться по наиболее свежей метрике), например, в таком:
fuzzytime(/узел_сети/system.localtime,60s)=0 or last(/узел_сети/trap)<>0.
Примеры:
fuzzytime(/узел_сети/system.localtime,5m)=0 #локальное время клиента отличается от времени Zabbix сервера/прокси более чем на 5 минут
fuzzytime(/узел_сети/system.localtime,5m)=0 and nodata(/host/system.localtime,10m)=0 #локальное время клиента отличается от времени Zabbix сервера/прокси более чем на 5 минут (в тоже время убеждаемся, что элемент данных не перестал сообщать значения)
last(/host/key,<#num<:time shift>>)
Самое последнее значение.
Поддерживаемые типы значений: Float, Integer, String, Text, Log.
Параметры:
- См. общие параметры
- #num (необязательно) - N-е по счету самое последнее значение
Комментарии:
- Обратите внимание, что период времени с хэштегом (#N) здесь работает иначе, чем во многих других функциях.
Например:
last(/host/key)всегда равноlast(/host/key,#1);last(/host/key,#3)- третье по счету самое последнее значение (а не три последних значения). - Zabbix не гарантирует точный порядок значений, если в истории за одну секунду существует более двух значений.
- См. также first().
Примеры:
last(/host/key) #получить последнее значение
last(/host/key,#2) #получить предыдущее значение
last(/host/key,#1)<>last(/host/key,#2) #два последних значения различаются
lastclock(/host/key,<#num<:time shift>>)
Временная метка N-го по новизне значения в пределах заданного периода вычисления.
Поддерживаемые типы значений: Float, Integer, String, Text, Log.
Параметры:
- См. общие параметры;
- #num (необязательно) — N-е по новизне значение.
Функция завершается с ошибкой, если за указанный период не было собрано данных или не было собрано N-е значение.
См. также firstclock().
Примеры:
lastclock(/host/key) #получить временную метку последнего значения
lastclock(/host/key,#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 минут)
logeventid(/узел_сети/ключ,<#число<:сдвиг_времени>>,<шаблон>)
Проверка, соответствует ли указанному регулярному выражению идентификатор события последней записи из журнала.
Поддерживаемые типы значений: Log.
Возвращает: 0 — нет соответствия; 1 — соответствует.
Параметры:
- Смотрите общие параметры;
- #число (опционально) — N-ое из наиболее недавних значений;
- шаблон (опционально) — регулярное выражение, описывающее нужный шаблон, в формате Perl Compatible Regular Expression (PCRE) (строковые аргументы должны быть заключены в двойные кавычки).
Примеры:
logeventid(/узел_сети/eventlog[Security],,"^4625$")=1 #найдена запись в журнале с идентификатором, совпадающим с "4625" (неудачная аутентификация, failed authentication)
logeventid(/узел_сети/eventlog[System],,"^(6008|41)$")=1 #найдена запись в журнале с идентификатором, совпадающим с "6008" или "41"
logseverity(/узел_сети/ключ,<#число<:сдвиг_времени>>)
Важность события последней записи в журнале.
Поддерживаемые типы значений: Log.
Возвращает: 0 — важность по умолчанию; N — важность (целое число, полезно для журналов событий Windows: 1 — Уведомление, 2 — Предупреждение, 4 — Ошибка, 7 — Аудит отказов, 8 — Аудит успехов, 9 — Критическая ошибка, 10 — Детали).
Параметры:
- Смотрите общие параметры;
- #число (опционально) — N-ое из наиболее недавних значений.
Zabbix берёт важность журнала из поля Информация журнала событий Windows.
Примеры:
logseverity(/узел_сети/log[/var/log/syslog],10m)>3 #найдена запись в журнале с важностью выше чем «3»
logseverity(/узел_сети/eventlog[System],10m)=4 #найдена запись в журнале с важностью, равной «Ошибка»
logsource(/узел_сети/ключ,<#число<:сдвиг_времени>>,<шаблон>)
Проверка, соответствует ли регулярному выражению источник последней записи в журнале.
Поддерживаемые типы значений: Log.
Возвращает: 0 — нет соответствия; 1 — соответствует.
Параметры:
- Смотрите общие параметры;
- #число (опционально) — N-ое из наиболее недавних значений;
- шаблон (опционально) — регулярное выражение, описывающее нужный шаблон, в формате Perl Compatible Regular Expression (PCRE) (строковые аргументы должны быть заключены в двойные кавычки).
Обычно используется для журналов событий Windows.
Примеры:
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»
logtimestamp(/host/key,<#num<:time shift>>)
Временная метка сообщения журнала для N-го самого последнего значения элемента данных журнала.
Поддерживаемые типы значений: Log.
Параметры:
- См. общие параметры;
- #num (необязательно) — N-е самое последнее значение.
Комментарии:
- Вычисление сдвига времени основано на времени элемента данных, а не на временной метке сообщения журнала;
- Функция завершается с ошибкой, если:
- получен элемент данных не типа журнала;
- за указанный период не было собрано данных;
- N-е значение не было собрано;
- сообщение журнала не содержит значения временной метки.
Примеры:
logtimestamp(/host/key) #retrieve the timestamp of the latest log message
logtimestamp(/host/key,#2) #retrieve the timestamp of the 2nd latest log message
logtimestamp(/host/key,#3:now-1d) #retrieve the timestamp of the 3rd latest log message a day ago
monodec(/узел_сети/ключ,(сек|#число)<:сдвиг_времени>,<режим>)
Проверка наличия монотонного убывания значений.
Поддерживаемые типы значений: Integer.
Возвращает: 1, если все элементы в течение указанного периода времени непрерывно уменьшаются; 0 — в противном случае.
Параметры:
- Смотрите общие параметры
- режим (должен быть в двойных кавычках) — weak (каждое значение меньше или равно предыдущему; по умолчанию) или strict (каждое значение строго уменьшается)
Примеры:
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 минут
monoinc(/узел_сети/ключ,(сек|#число)<:сдвиг_времени>,<режим>)
Проверка наличия монотонного возрастания значений.
Поддерживаемые типы значений: Integer.
Возвращает: 1, если все элементы в течение указанного периода времени непрерывно возрастают; 0 — в противном случае.
Параметры:
- Смотрите общие параметры
- режим (должен быть в двойных кавычках) — weak (каждое значение больше или равно предыдущему; по умолчанию) или strict (каждое значение строго возрастает)
Примеры:
monoinc(/узел_сети/system.localtime,#3,"strict")=0 #локальное время системы не увеличивается последовательно
monoinc(/узел_сети/vfs.dir.count[/mnt/data/logs],24h,"weak")=0 #срабатывает, если количество файлов не меняется более 24 часов (ожидается рост)
nodata(/узел_сети/ключ,сек,<режим>)
Проверка отсутствия полученных данных.
Поддерживаемые типы значений: Integer, Float, Character, Text, Log.
Возвращает: 1 — если нет полученных данных за указанный период времени; 0 — в противном случае.
Параметры:
- Смотрите общие параметры
- сек — период должен быть не менее 30 секунд, так как процесс синхронизации истории (history syncer) вычисляет эту функцию раз в 30 секунд;
nodata(/узел_сети/ключ,0)запрещено - режим — при значении strict (в двойных кавычках) эта функция будет нечувствительна к доступности прокси (смотрите комментарии для более подробной информации)
Комментарии:
- Триггеры «nodata», контролируемые прокси серверами, по умолчанию чувствительны к доступности прокси — если прокси становится недоступным, триггеры «nodata» не будут срабатывать немедленно после восстановления соединения, а пропустят данные за задержанный период.
Обратите внимание, что для пассивных прокси подавление активируется если соединение восстанавливается более чем через 15 секунд и не менее чем через 2 секунды.
Для активных прокси подавление активируется, если соединение восстанавливается более чем через 15 секунд.
Чтобы выключить чувствительность к доступности прокси, используйте третий параметр, например:
nodata(/узел_сети/ключ,5m,"strict"); в этом случае функция будет срабатывать, как только период оценки отсутствия данных (пять минут) истечёт. - Эта функция отобразит ошибку в случае, если за указанный в первом параметре период:
- нет данных и Zabbix сервер был перезапущен
- нет данных и было завершено обслуживание
- нет данных и элемент данных был добавлен или заново активирован. - Ошибки отображаются в колонке Инфо в настройке триггеров.
- Эта функция может работать неправильно, если есть расхождения по времени между Zabbix сервером, прокси и агентом. Смотрите также: требования по синхронизации времени.
Пример:
nodata(/узел_сети/agent.ping,5m)=1 #срабатывает, если от Zabbix агента за 5 минут не было получено данных
percentile(/узел_сети/ключ,(сек|#число)<:сдвиг_времени>,процент)
P-й процентиль периода, где P (процент) указывается третьим параметром.
Поддерживаемые типы значений: Float, Integer.
Параметры:
- Смотрите общие параметры;
- процент — число с плавающей точкой от 0 до 100 (включительно), до 4 цифр после десятичной точки.
Примеры:
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 #вычислить точное медианное значение с чётным числом значений за час
rate(/host/key,sec<:time shift>)
Среднее почасовое увеличение монотонно возрастающего счетчика за заданный период времени.
Поддерживаемые типы значений: Float, Integer.
Параметры:
- См. общие параметры
Функционально соответствует 'rate' в PromQL.
Примеры:
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 запросов в секунду за последнюю минуту