Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Topics - slako

#1
Есть DCI у которого в порогах прописан скрипт который высчитывает % между предыдущим и новым значением и в зависимости от полученного значения возвращает маркер для создания эвента когда это необходимо. Все нормально работает. Но вот хотелось бы как-то еще передавать предыдущее значение в сообщение эвента.  Не нашел ничего похожего на что-то типа GetEventObjectByName чтобы в скрипте нужному эвенту подменить сообщение через SetEventParameter.
Пороговый скрипт такой:
mbytes = $1;
inst = $dci->instance;
previous_mbytes = GetDCIValueByDescription($node,"MSSQL database mbytes size (".inst.")");
if(previous_mbytes == null)
return 0;
diffpercent = ((mbytes*100)/previous_mbytes)-100;
if(diffpercent <=-10)
return -1;
return 0;
#2
Имеем 2.0.1 сервер и агент. Оба виндовые( сервер win2003, агент win7sp1).
Задача - складывать в DCI размер определенной базы данных.
1. Конфиг агента подгружаем с сервера плюс добавляем полиси подгрузки нужного субагента:
SubAgent = dbquery.nsm
*DBQUERY
Database = id=mystat;driver=mysql.ddr;server=10.10.0.1;dbname=mystat;login=mylogin;password=mypassword

В результате в логе имеем:
[25-Jan-2016 14:44:39.922] [ERROR] DB Library: Unable to load database driver module "mysql.ddr": The specified module could not be found.

При этом <папка агента>\bin\mysql.ddr на месте.
Почемуто - не видит этот модуль.

2. Эксперимент с другой (MSSQL 2005) базой через другой полиси:
SubAgent = dbquery.nsm
*DBQUERY
Database = id=master;driver=mssql.ddr;server=10.10.0.2;dbname=master;login=newlogin;password=newpass

В логе получаем
[25-Jan-2016 14:40:47.505] [WARN ] DBQUERY: cannot connect to database master ([Microsoft][SQL Server Native Client 10.0][SQL Server]Login failed for user 'newlogin'.)

при этом такой юзер в базе прописан и без проблем доступается через студио.
#3
Задача отлавливать подвисшие CLI php скрипты работающих на Win2003.
Process.CPUTime не подошел - если скрипт подвис и ничего не делает, то возвращаются значения 0.
Решил попробовать через
WMI.Query(root\CIMV2,\"select * FROM Win32_Process WHERE Name = 'php.exe'\", CreationDate)
Столкнулся с проблемой как сконвертировать значения этого запроса в объект time чтобы потом просчитать количество секунд которое прошло с начала старта? Значения приходят в виде 20160101235959.123123

Пробовал парсить как строку
rawdatetime = string($1);
tm_datetime = localtime();
tm_datetime<-year = int32(substr(rawdatetime,1,4));
tm_datetime<-mon = int32(substr(rawdatetime,5,2));
tm_datetime<-mday = int32(substr(rawdatetime,7,2));
tm_datetime<-hour = int32(substr(rawdatetime,9,2));
tm_datetime<-min = int32(substr(rawdatetime,11,2));
tm_datetime<-sec = int32(substr(rawdatetime,13,2));

но ругается на
Error 4 in line 3: Bad arithmetic conversion