News:

We really need your input in this questionnaire

Main Menu
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 - Ethril

#1
Общие вопросы / Reporting bug?
January 18, 2012, 11:08:31 AM
Пробую фичу с репортами.
Взял готовый репорт IP Inventory отсюда - https://svn.netxms.org/public/netxms/tags/version-1.1.9/reports/ , загрузил в NetXMS (v 1.1.9).
Execute вроде проходит


, но при попытке выгрузить репорт в PDF получаю ошибку:
#2
Перехожу на новую консоль, первые впечатления положительные, накопившиеся замеченные косячки вываливаю здесь с тайной надеждой, что когда-нить заметят и пофиксят :)

1) Сортировка объектов в Object Browser идёт в case-sensitive порядке "A..Za..z", а не в более естественном "Aa..Zz", как в старой консоли. Может это как-то можно менять в опциях? Я не нашёл.
2) В старой консоли был поиск по IP-адресам, если набирать запрос с префиксом "ip:". В новой нет.
3) Имеется бага с клонированием графиков (рисуются в двух экземплярах), если выбрать в Object Browser ноду с графиками, выбрать её вкладку Performance, а потом опять кликнуть по этой же ноде.
4) Перестали автоматически отрисовываться графики из шаблонов @System.Agent, @System.SNMP. Хотя, может, так и задумано?
5) Некоторые команды (Local Command) в Object Tools перестали работать. Например, простая команда, запускавшая "eventvwr %OBJECT_IP_ADDR%", теперь только отображает ошибку "Cannot execute external command: Cannot run program "eventvwr": CreateProcess error=740, Çàïðîøåííàÿ îïåðàöèÿ òðåáóåò ïîâûøåíèÿ". Неясно, почему она считается сервером external, и откуда взялись козяблики в тексте ошибки.
6) Те команды из Object Tools, которые всё же срабатывают, оставляют после себя висеть вкладку Console.
#3
Карты ещё вообще сыроватые, но вот эта мелкая бага вроде и мешает больше всех, и фикситься должна легко...

Слишком коротко обрезаются подписи под объектами, даже стандартные маски типа 192.168.0.0/24 не влазят. Проблема имеется как в старой (1.0.Х), так и в новой (1.1.Х) консоли. См. картинку.
#4
Сделал в шаблоне Dummy DCI со следующим Transformation Script:
min( GetDCIValue($node, FindDCIByName($node, "Disk.FreePerc(C:)")), 5)
Во-первых, оно не заработало на серверах с Win2000, с сообщением "SYS_SCRIPT_ERROR Script (DCI::имя_сервера::DCI_ID) execution error: Error 4 in line 1: Bad arithmetic conversion".
Во-вторых, на остальных серверах оно работает рандомно, на некоторых выдавая правильный результат, а на некоторых других - обратный, как будто используется ф-ция max(). От разрядности и версий агентов на серверах проблема не зависит.
Почему так?

P.S. GetDCIValue, FindDCIByName и Disk.FreePerc везде работают нормально.
#5
Переходя на вкладку Alarms любой ноды, становятся неактивными пункты контекстного меню Tools->...
#6
При восстановлении сохранённой ранее раскладки окон в NetXMS,восстанавливается только одно окно. Бага?
#7
Имеется зоопарк серверов серии HP Proliant, с которых NetXMS'ом по SNMP собираются температуры с внутренних датчиков. Сервера разных времён и моделей, поэтому у них разный состав этих датчиков. Где-то их 3 штуки, где-то 5, где-то первый датчик мониторит cpu, а где-то - powersupply...
(Местоположение датчика нумер N можно получить SNMP-запросом по OID .1.3.6.1.4.1.232.6.2.6.8.1.3.0.[N]. Затем запросом по OID .1.3.6.1.4.1.232.6.2.6.8.1.4.0.[N] получить температуру.)

На первых порах интересуют только данные датчиков с местоположением ambient.

Хотелось бы, не вдаваясь в подробности установки датчиков на каждой модели, получать полный список их значений с каждого сервера, находить там тот, который ambient, и слать алерт при превышении порога, скажем, 20 гр.

Завёл шаблон, перенёс в него все Пролианты, завёл в нём пары датчиков ([N]SensorLocale, [N]SensorData) ; N=1..5.
Во всех датчиках [N]SensorData вобью Thresholds, при превышении которых сработает некий эвент.
На некоем полу-NXSL, полу-псевдоязыке попытался накропать скрипт, который хочу вставить в Event Processing Policy:

set i=1;             //define integer variable

while ( i < 6 )     //cycle from 1Sensor[Locale/Data] to 5Sensor[Locale/Data]
{
if ( GetDCIValue($node, FindDCIByDescription($node, right("SensorLocale", 13, i))) == "ambient" )   // is [N]SensorLocale == "ambient" ?
{
if ( GetDCIValue($node, FindDCIByDescription($node, right("SensorData", 11, i))) > 20 )     // is ambient sensor overheat?
{
return GetDCIValue($node, FindDCIByDescription($node, right("SensorData", 11, i))); // if true, true then get data from ambient sensor
};
};
i++;
};

return 0;         // return current temperature from overheated ambient sensor, or 0.

, т.е., при срабатывании эвента отрабатывает скрипт, который перепроверяет, какой же это эвент сработал. Уж не ambient ли? Если ambient, то ахтунг. Как-то это всё криво. Может можно лучше? И заодно скрипт причесать... ::)