Приветствую!
Есть несколько DCI на ноде для подсчета Inbound и Outbound трафика. К примеру их 3 входящих и 3 исходящих. Мне нужно подсчитать сумму для двух из трех как на вход, так и на выход.
Как это можно реализовать?
Спасибо.
добавить еще один DCI с source=Script.
Скрипт примерно такой:
v1=GetDCIValueByName($node, "TrafficDci1");
v2=GetDCIValueByName($node, "TrafficDci2");
v3=GetDCIValueByName($node, "TrafficDci3");
return v1 + v2 + v3;
Или без скрипта в library - source=Internal, DCI=Dummy, скрипт прописать прямо в Transformation script.
В этом случае нужно задавать полное название интерфейсов DCI или же можно как-то по маске?
https://wiki.netxms.org/wiki/NXSL:FindAllDCIs
Как-то так (код не проверял):
total = 0;
dciList = FindAllDCIs($node, "System.CPU.Usage(*)");
foreach (dci : dciList) {
total += GetDCIValue($node, dci->id);
}
return total;
Выкрутился иначе. Создал два скрипта, один на входящий, второй на исходящий трафик. Ищу по полному названию DCI.
sub main()
{
// Search for node named "gateway"
gw_node = FindObject($1);
if (gw_node == null)
return 0; // No such node or access denied
// from here, gw_node can be used in a same way as $node, for example:
v1 = GetDCIValue(gw_node, FindDCIByDescription(gw_node, "Inbound traffic on COMPANY1"));
v2 = GetDCIValue(gw_node, FindDCIByDescription(gw_node, "Inbound traffic on COMPANY2"));
tot = v1 + v2;
if (tot > 0)
return tot;
else
return 0;
}
Спасибо.