Использование Instance в скрипте.

Started by Dillinger, January 05, 2010, 10:02:47 AM

Previous topic - Next topic

Dillinger

Подскажите пожалуйста как мне использовать значение Instance DCI в скрипте?
Пробую так:
GetDCIValue($node, FindDCIByName($node, "Disk.Total(" && %6 && ")"));
Однако получаю ошибку syntax error, unexpected '%'

Victor Kirhenshtein

Esli pri obrabotke sobitija, to dolzno rabotat' tak:

GetDCIValue($node, FindDCIByName($node, "Disk.Total(" . $6 . ")"));

Dillinger

И в таком варианте тоже не работает. Генерируется 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 . ")"));
}




Victor Kirhenshtein

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.

Dillinger

DCI - Collection - Data - Parameter = Disk.FreePerc(D:)
DCI - Thresholds - Instance = D:

Т.е. нужно подставить Instance чтобы получить универсальный скрипт для различных дисков/томов (C:, D:, SYS и т.д.)

Victor Kirhenshtein


Dillinger

DCI Disk.Total(D:) привязан к узлу, также как и Disk.FreePerc(D:)