Назад | Перейти на главную страницу

Пользовательский параметр Zabbix возвращает два значения, и ни одно из них не является правильным

Я создал пользовательский параметр, измеряющий скорость записи на iscsi lun, который выглядит следующим образом:

UserParameter=write.perf.mon[*], mytime="$(time -p  (dd if=/dev/zero of=$1 oflag=direct bs=4k count=1000) 2>&1 1>/dev/null )"; echo "$mytime" | grep real | awk '{print $$2}'

При запуске из оболочки с правильными значениями он дает следующий результат:

2.78

Когда он выполняется zabbix агентом, я вижу правильную команду в журнале, но она показывает следующее:

7770:20150921:123734.823 Run remote command [ mytime="$(time -p  (dd if=/dev/zero of=path_to_file oflag=direct bs=4k count=1000) 2>&1 1>/dev/null )"; echo "$mytime" | grep real | awk '{print $2}'] Result [4] [0.00]...

И zabbix собирает нули.

Пожалуйста, помогите с любой подсказкой, почему это так и как это можно исправить

Спасибо,

Дмитрий

  1. Попробуйте запустить свой скрипт пользователем zabbix

    su zabbix && mytime = "$ (time -p (dd if = / dev / zero of = path_to_file oflag = direct bs = 4k count = 1000) 2> & 1 1> / dev / null)"; эхо "$ mytime" | grep real | awk '{print $ 2}'

  2. Если все в порядке, попробуйте использовать $$ вместо $ (mytime = "$$ ...)

  3. Убедитесь, что параметр UnsafeUserParameters установлен на "on" на вашем компьютере с zabbix агентом. Кажется, ваша переменная path_to_file содержит '/'. См. Руководство пользователя:

Если не включена опция конфигурации демона агента UnsafeUserParameters, нельзя передавать гибкие параметры, содержащие эти символы: \ '«` *? [] {} ~ $! &; () <> | # @. Кроме того, новая строка также не допускается.

Проверьте, какой пользователь запускает zabbix_agent.
По умолчанию это пользователь zabbix. Убедитесь, что ваша цепочка команд, запущенная с его правами, показывает правильное значение. Скорее всего у вас недостаточно прав.