4. Функции истории

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

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

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

Подробности функций

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

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

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

Параметры: смотрите общие параметры.

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

  • Разница между числовыми значениями будет вычисляться, как показано на примере следующих значений («предыдущее» и «последнее» значение = разница):
    «1» и «5» = +4
    «3» и «1» = -2
    «0» и «-2.5» = -2.5
  • Смотрите также: abs для сравнения.

Примеры:

change(/узел_сети/ключ)>10
Copy
✔ Copied
changecount(/узел_сети/ключ,(сек|#число)<:сдвиг_времени>,<режим>)

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

Параметры:

  • смотрите общие параметры;
  • режим (должен быть в двойных кавычках) — возможные значения: all — считать все изменения (по умолчанию); dec — считать убывания значений; inc — считать возрастания значений

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

Примеры:

changecount(/узел_сети/ключ,1w) #количество изменений значения за последнюю неделю до текущего момента
       changecount(/узел_сети/ключ,#10,"inc") #количество возрастаний значений (относительно соседнего значения) среди последних 10 значений
       changecount(/узел_сети/ключ,24h,"dec") #количество убываний значений (относительно соседнего значения) за последние 24 часа до текущего момента
Copy
✔ Copied
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(/узел_сети/ключ,10m) #количество значений за последние 10 минут до текущего момента
       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 часа назад) от текущего момента
Copy
✔ Copied
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 часа назад) от текущего момента
Copy
✔ Copied
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(/узел_сети/ключ,10m,"like","error") #найти значение, содержащее «error» за последние 10 минут до текущего момента
Copy
✔ Copied
first(/узел_сети/ключ,сек<:сдвиг_времени>)

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

Параметры:

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

Пример:

first(/узел_сети/ключ,1h) #извлечь самое старое значение за последний час вплоть до текущего момента
Copy
✔ Copied
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(/узел_сети/ключ,60s)=0 #обнаружение проблемы, если разница во времени превышает 60 секунд

Copy
✔ Copied
last(/узел_сети/ключ,<#число<:сдвиг_времени>>)

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

Параметры:

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

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

Примеры:

last(/узел_сети/ключ) #извлечь последнее значение
       last(/узел_сети/ключ,#2) #извлечь предыдущее значение
       last(/узел_сети/ключ,#1) <> last(/узел_сети/ключ,#2) #последнее значение отличается от предыдущего
Copy
✔ Copied
logeventid(/узел_сети/ключ,<#число<:сдвиг_времени>>,<шаблон>)

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

Параметры:

  • Смотрите общие параметры;
  • #число (опционально) — N-ое из наиболее недавних значений;
  • шаблон (опционально) — регулярное выражение, описывающее нужный шаблон, в формате Perl Compatible Regular Expression (PCRE) (строковые аргументы должны быть заключены в двойные кавычки).
logseverity(/узел_сети/ключ,<#число<:сдвиг_времени>>)

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

Параметры:

  • Смотрите общие параметры;
  • #число (опционально) — N-ое из наиболее недавних значений.

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

logsource(/узел_сети/ключ,<#число<:сдвиг_времени>>,<шаблон>)

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

Параметры:

  • Смотрите общие параметры;
  • #число (опционально) — N-ое из наиболее недавних значений;
  • шаблон (опционально) — регулярное выражение, описывающее нужный шаблон, в формате Perl Compatible Regular Expression (PCRE) (строковые аргументы должны быть заключены в двойные кавычки).

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

Пример:

logsource(/узел_сети/ключ,,"VMware Server")
Copy
✔ Copied
monodec(/узел_сети/ключ,(сек|#число)<:сдвиг_времени>,<режим>)

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

Параметры:

  • Смотрите общие параметры;
  • режим (должен быть в двойных кавычках) — weak (каждое значение меньше или равно предыдущему; по умолчанию) или strict (каждое значение строго уменьшается).

Пример:

monodec(/Host1/system.swap.size[all,free],60s) + monodec(/Host2/system.swap.size[all,free],60s) + monodec(/Host3/system.swap.size[all,free],60s) #посчитать, на каком количестве узлов сети было уменьшение свободного места в области подкачки
Copy
✔ Copied
monoinc(/узел_сети/ключ,(сек|#число)<:сдвиг_времени>,<режим>)

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

Параметры:

  • Смотрите общие параметры;
  • режим (должен быть в двойных кавычках) — weak (каждое значение больше или равно предыдущему; по умолчанию) или strict (каждое значение строго возрастает).

Пример:

monoinc(/Host1/system.localtime,#3,"strict")=0 #проверка того, постоянно ли увеличивается локальное время системы
Copy
✔ Copied
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() не может быть использована в выражении сама по себе; выражение должно включать как минимум одну функцию из другой группы (за исключением функций даты и времени), ссылающуюся на элемент данных узла сети. Подробную информацию о том, как функция nodata() работает в выражениях, смотрите в разделе Время вычисления.
percentile(/узел_сети/ключ,(сек|#число)<:сдвиг_времени>,процент)

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

Параметры:

  • Смотрите общие параметры;
  • процент — число с плавающей точкой от 0 до 100 (включительно), до 4 цифр после десятичной точки.
rate(/узел_сети/ключ,сек<:сдвиг_времени>)

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

Параметры:

Функционально соответствует функции «rate [en]» из PromQL.

Пример:

rate(/узел_сети/ключ,30s) #Если за 30 секунд значение монотонно возросло на 20, эта функция вернёт 0.67.
Copy
✔ Copied

См. все поддерживаемые функции.

To toggle search highlight, press Ctrl+Alt+H
Have an improvement suggestion for this page? Select the text that could be improved and press Ctrl+Enter to send it to the editors.