Есть скрипт:
GetDCIValue($node, FindDCIByDescription($node, "Number of input bytes on interface INET"));
Можно ли как нибудь в подобных скриптах использовать не $node, а например support_cmp, т.е. имя какой нибудь другой ноды?
Напрямую из скрипта это сделать нельзя. Но есть обходной путь - делается еще один DCI, у которого как proxy выставляется та нода, откуда надо получить значение. Ну а дальше как обычно.
Виктор, не получилось.. :(
Мои действия:
Есть две ноды - А и В. На обеих режим прокси включен. Также, на обеих нодах есть DCI "Status". У хоста А ID статуса 4590, у хоста В ID статуса 3662.
На ноде А делаю DCI (Proxy не указываю), в Transformation script делаю:
sub main()
{
$ts = FindDCIByDescription($node, "Status");
return $ts;
}
Все работает. Возвращается значение 4590, т.е. то, что нужно.
В свойствах этого-же DCI добавляю в качестве Proxy ноду В, и все. Значения больше не собираются., а сам DCI становиться красным. При этом, когда DCI покраснел, его трудно удалить. Консоль при удалении, начинает ругаться на Time Out.. Версия агентов и сервера 0.2.24.
Может что неправильно делаю... ???
Не подскажете, что можно сделать? Уже всю голову сломал, но это очень нужно.. :(
Esli noda B postavlena kak proxy dlja DCI nodi A, to nado v svojstvah nodi B dobavit' nodu A v spisok "Trusted Nodes". Eto sdelano dlja bezopasnosti - inache pol'zovatel', u kotorogo est'; prava rabotat' s nodoj A, no net prav rabotat' s nodoj B, cherez proxy mehanizm mog bi nastroit' poluchenie dannih s nodi B. Alternativnij variant - voobsche otkljuchit' etu proverku, vistaviv parametr servera CheckTrustedNodes v 0.
Виктор, это опять я... :) простите, но не работает. :(
Проверку отключал, в Trusted Nodes добавлял. Теперь не краснеет. Только ведет себя как-то непонятно.
Если на ноде А оставить скрипт:
sub main()
{
$ts = FindDCIByDescription($node, "Status");
return $ts;
}
то, не важно, добавлена нода В как прокси или нет, выдается значение локального ID статуса, т.е. от ноды А.
Если пробовать вместо $node писать (хоть с кавычками, хоть без) имя ноды В, или ее ID, то выдается результат 0, как будто DCI не найден.
Esli ja pravil'no ponjal, to sejchas na node A dva DCI s identichnimi description'ami - "Status". Poetomu FindDCIByDescription nahodit pervij popavshijsja s takim opisaniem, i eto okazivaetsja lokal'nij. Nado sdelat' unikal'nij description dlja DCI.
Я тоже так подумал, поэтому сделал тестовый DCI с Description 1234. Но возврат значения был так-же 0. :( Сейчас обновляюсь на 0.2.27. Может там это лучше получиться сделать.. Как попробую отпишусь.
Нет, не помогло.... Проверял разные скрипты. Искал и по описанию и по имени..
Tol'ko chto zametil - v skripte toze oshibka. FindDCIByDescription nahodit DCI i vozvraschaet sootvetstvujuschij ob'ekt - a znachenie poluchaet funkcija GetDCIValue. T.e. skript dolzen vigljadet' tak:
sub main()
{
$ts = FindDCIByDescription($node, "description here");
return GetDCIValue($node, $ts);
}
Proveril u sebja - rabotaet.
Виктор, убейте меня....ну не понимаю, почему у меня не работает. Можете написать пример для тех кто на бронепоезде? Все правильно указано, а результат в итоге - "0"! :(
Заранее спасибо за помощь!
Может есть какая-нибудь возможность детально посмотреть, что он делает, куда лезет и что пытается найти?
На моей тестовой системе сделано так:
Есть нода NETXMS, на ней я хочу получить DCI со значением статуса с ноды catalyst-2900-central.radensolutions.com.
На скриншоте #1 - trusted nodes для catalyst-2900-central.radensolutions.com;
На скриншоте #2 - last values для catalyst-2900-central.radensolutions.com - видно что статус равен 4;
На скриншоте #3 - DCI, созданный на ноде NETXMS для получения статуса с ноды catalyst-2900-central.radensolutions.com;
На скриншоте #4 - DCI, созданный на ноде NETXMS, в котором я хочу получить статус ноды catalyst-2900-central.radensolutions.com в скрипте; я использовал dummy параметр, но он может быть любым;
На скриншоте #5 - transformation script для этого DCI.
И еще один скриншот (в одном посте можно только 5) - last values для ноды NETXMS. Видно что у параметра dummy значение 4, как и должно быть.
Спасибо Виктор! Теперь заработало... Я немного не так делал.. :)
Спасибо еще раз!