Проблема с ExternalParameter

Started by kozlov_ao, April 10, 2012, 04:06:04 PM

Previous topic - Next topic

kozlov_ao

Приветствую!
Не получается добывать значения с помощью ExternalParameter.
В конфиге вот это:
ExternalParameter = ATCTest.FXS.Count(*):/etc/php-manager/status.php $1 $2 $3 fxs
ExternalParameter = ATCTest.FXO.Count(*):/etc/php-manager/status.php $1 $2 $3 fxo
ExternalParameter = ATCTest.FXO.Usage(*):/etc/php-manager/status.php $1 $2 $3 fxousage
ExternalParameter = ATCTest.SIP.Usage(*):/etc/php-manager/status.php $1 $2 $3 sipusage
ExternalParameter = ATCTest.Queue(*):/etc/php-manager/status.php $1 $2 $3 queue | grep $4
ExternalParameter = ATCTest.SIP.Peers(*):/etc/php-manager/status.php $1 $2 $3 sippeers $4

Т.к. я давно не занимался мониторингом, думал что что-то сделал не так.
Скрипт отрабатывает по времени до 6сек, поэтому пришлось увеличить параметр сервера AgentCommandTimeout до 10000 (но по ощущениям, 10 сек. он все равно не ждет, а отваливается с ошибкой секунд через 6-7, но не суть).
Потом началось самое веселье.
Было замечено, что если агент запущен как демон (если запускать nxagentd -c /etc/nxagentd.conf, то все нормально), в качестве результата, он выдает данные как на картинке. Но при этом он даже не дожидается, пока скрипт отработает.
Может все-таки я что-то не так делаю, но настораживает то, что пока агент запущен не как демон, то все работает правильно...
Версия сервера/агента 1.1.10

kozlov_ao

Никто не сталкивался с такой проблемой???
в 1.2 это устранено, или я что-то не правильно сделал? Прошу помощи...
Сервер и агент работают на Ubuntu server 10.04 LTS

Victor Kirhenshtein

Na pervij vzgljad vse v konfige vigljadit pravil'no. A mogli bi prislat' sami skripti?

Viktor

kozlov_ao

Скрипты могу прислать, тем более, что кому-то могут пригодиться... (выложу чуть позже).
Но такое поведение замечено даже при выполнении простейших операций... например  cat /var/test/xxx, где xxx - заранее неверное значение.
Сегодня постараюсь проверить как отрабатываются заранее ошибочно составленные скрипты на win x64 (x32 к сожалению нет...)

kozlov_ao

Сегодня обновился до 1.2.0... на ubuntu проблема осталась.

Alex Kirhenshtein

Какие результаты дает nxget?

Я попробовал повторить у себя:

Alexs-MacBook-Air:~ alk$ cat /opt/netxms/etc/nxagentd.conf
MasterServers = 127.0.0.1
LogFile = /opt/netxms/var/log/nxagentd

ExecTimeout=10000

ExternalParameter=TEST(*):/tmp/test.sh $1 $2 $3
Alexs-MacBook-Air:~ alk$ cat /tmp/test.sh
#!/bin/sh

sleep 6
echo ok
Alexs-MacBook-Air:~ alk$ /opt/netxms/bin/nxget -w 10 localhost 'TEST(abc)'
ok


Плюс я очень не рекомендую использовать ExternalParameter, когда скрипт выполняется долго - для этого лучше подходит ExternalProvider. Я напишу пример конфигурации в вики и скину сюда линк.

kozlov_ao

так-так... ))
жду пример по ExternalProvider. Не слышал о таком..

nxget с какими параметрами надо запустить?

Alex Kirhenshtein

nxget -w 10 IP 'ATCTest.FXS.Count(...)'

где "10" - таймаут для nxget.

Про ExternalDataProvider я написал в вики: http://wiki.netxms.org/wiki/ExternalParametersProvider
В процессе написания обнаружилась бага, будет исправлена в 1.2.1 - или заменить src/agent/core/getparam.cpp на версию из SVN (https://svn.netxms.org/public/netxms/trunk/src/agent/core/getparam.cpp) и пересобрать агента.