Подскажите пожалуйста как мне использовать значение Instance DCI в скрипте?
Пробую так:
GetDCIValue($node, FindDCIByName($node, "Disk.Total(" && %6 && ")"));
Однако получаю ошибку syntax error, unexpected '%'
Esli pri obrabotke sobitija, to dolzno rabotat' tak:
GetDCIValue($node, FindDCIByName($node, "Disk.Total(" . $6 . ")"));
И в таком варианте тоже не работает. Генерируется Minor Alarm на сервере NETXMS c полем Message: Script (LS::P1) execution error: Error 5 in line 3: Invalid operation with NULL value.
Вообще у меня стоит задача сформировать и послать по email сообщение, генерируемое по treshold DCI "Percentage of free disk space".
условие treshold: Percentage of free disk space < 10%
event: _VOL_SPACE_LOW
message: Warning! %2 is %4%% (%[LS::P1]). Please free some space!
скрипт LS::P1
sub main()
{
return GetDCIValue($node, FindDCIByName($node, "Disk.Total(" . $6 . ")"));
}
A kak vigljadit parametr Disk.Total i chto propisano v pole "instance" dlja parametra so skriptom? Problema pohoze v tom, chto formiruetsja nepravil'noe imja parametra, i FindDCIByName vozvraschaet NULL.
DCI - Collection - Data - Parameter = Disk.FreePerc(D:)
DCI - Thresholds - Instance = D:
Т.е. нужно подставить Instance чтобы получить универсальный скрипт для различных дисков/томов (C:, D:, SYS и т.д.)
A parametr Disk.Total(D:) sobiraetsja?
DCI Disk.Total(D:) привязан к узлу, также как и Disk.FreePerc(D:)