Я создал пользовательский параметр, измеряющий скорость записи на 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 собирает нули.
Пожалуйста, помогите с любой подсказкой, почему это так и как это можно исправить
Спасибо,
Дмитрий
Попробуйте запустить свой скрипт пользователем 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}'
Если все в порядке, попробуйте использовать $$ вместо $ (mytime = "$$ ...)
Если не включена опция конфигурации демона агента UnsafeUserParameters, нельзя передавать гибкие параметры, содержащие эти символы: \ '«` *? [] {} ~ $! &; () <> | # @. Кроме того, новая строка также не допускается.
Проверьте, какой пользователь запускает zabbix_agent.
По умолчанию это пользователь zabbix
. Убедитесь, что ваша цепочка команд, запущенная с его правами, показывает правильное значение. Скорее всего у вас недостаточно прав.