а переход на асинхронный опрос не планируется? Так чтобы поллер слал все запросы из очереди к агентам, а потом ждал ответы. Вместо посылки + ожидания для каждого запроса.
2c2i
Posts
-
Производительность и асинхронный опрос агентов/snm/ping -
Производительность и асинхронный опрос агентов/snm/pingСудя по всему когда на агентах исполняются какие-то длинные проверки при опросе DCI, поток поллера на сервере блокируется и ждет ответа от этого агента. В итоге чтобы всё работало нормально нужно добавлять сотни, а то и тысячи потоков поллера - https://www.netxms.org/forum/general-support/performance-issues-with-netxms/ тут например пользователи запустили 4000(!) потоков для нормальной работы.
Неплохо бы на каждый тип(agent/snmp/ping) сделать один поток поллера который бы общался с нодами в неблокирующемся режиме, асинхронно - это будет гораздо эффективнее и быстрее работать при большом количестве нод
-
Experimental Grafana integrationПопробовали запустить в версии 2.1-RC1.
Удалось установить следующее
* запросы в netxms api шлются джаваскриптом прямо из браузера - это не очень удобно когда графана используется не только для работы с netxms. Гораздо более юзабельно было бы проксировать запросы через сервер графаны(некоторые плагины так делают)
* Проблема вытекающая из первой - netxms api и графана должны работать на одном домене - иначе апи не получает cookie из запроса(браузер просто не передает куку на другой домен)При не соблюдении этих пунктов кнопка test datasource приводит к таким запросам:
2017-05-23 14:26:52,848 INFO | http-bio-8080-exec-7 | org.netxms.websvc.SessionStore | Session 8275bd8c-bc39-4bda-a803-5d4988e71c62 registered 2017-05-23 14:26:52,849 INFO | http-bio-8080-exec-7 | org.netxms.websvc.handlers.Sessions | Logged in to NetXMS server, assigned session id 8275bd8c-bc39-4bda-a803-5d4988e71c62 May 23, 2017 2:26:52 PM org.restlet.engine.log.LogFilter afterHandle INFO: 2017-05-23 14:26:52 1.1.1.1 - 2.2.2.2 80 POST /nxapi/sessions - 200 7 May 23, 2017 2:26:52 PM org.restlet.engine.log.LogFilter afterHandle INFO: 2017-05-23 14:26:52 1.1.1.1 - 2.2.2.2 80 OPTIONS /nxapi/sessions/8275bd8c-bc39-4bda-a803-5d4988e71c62 - 200 2017-05-23 14:26:53,126 DEBUG | http-bio-8080-exec-10 | org.netxms.websvc.handlers.AbstractHandler | DELETE: entityId = 8275bd8c-bc39-4bda-a803-5d4988e71c62 2017-05-23 14:26:53,127 DEBUG | http-bio-8080-exec-10 | org.netxms.websvc.handlers.AbstractHandler | sid: null 2017-05-23 14:26:53,127 DEBUG | http-bio-8080-exec-10 | org.netxms.websvc.handlers.AbstractHandler | Session token not found and new session cannot be created May 23, 2017 2:26:53 PM org.restlet.engine.log.LogFilter afterHandle INFO: 2017-05-23 14:26:53 1.1.1.1 - 2.2.2.2 80 DELETE /nxapi/sessions/8275bd8c-bc39-4bda-a803-5d4988e71c62 - 401тут на DELETE приходит 401 {"error":2,"description":"Access denied"}
После запуска всего на одном домене - всё равно не работает. Кнопка test datasource дает такое(вроде всё ок)
2017-05-23 14:31:16,007 INFO | http-bio-8080-exec-4 | org.netxms.websvc.SessionStore | Session 029194c9-acf0-4c26-8253-b6405bc8d107 registered 2017-05-23 14:31:16,008 INFO | http-bio-8080-exec-4 | org.netxms.websvc.handlers.Sessions | Logged in to NetXMS server, assigned session id 029194c9-acf0-4c26-8253-b6405bc8d107 May 23, 2017 2:31:16 PM org.restlet.engine.log.LogFilter afterHandle INFO: 2017-05-23 14:31:16 1.1.1.1 - 2.2.2.2 80 POST /nxapi/sessions - 200 2017-05-23 14:31:16,237 DEBUG | http-bio-8080-exec-7 | org.netxms.websvc.handlers.AbstractHandler | DELETE: entityId = 029194c9-acf0-4c26-8253-b6405bc8d107 2017-05-23 14:31:16,238 DEBUG | http-bio-8080-exec-7 | org.netxms.websvc.handlers.AbstractHandler | Handler attached to session 029194c9-acf0-4c26-8253-b6405bc8d107 2017-05-23 14:31:16,239 INFO | http-bio-8080-exec-7 | org.netxms.websvc.handlers.Sessions | Logout request for session 029194c9-acf0-4c26-8253-b6405bc8d107 2017-05-23 14:31:17,002 INFO | http-bio-8080-exec-7 | org.netxms.websvc.SessionStore | Session 029194c9-acf0-4c26-8253-b6405bc8d107 unregistered May 23, 2017 2:31:17 PM org.restlet.engine.log.LogFilter afterHandle INFO: 2017-05-23 14:31:17 1.1.1.1 - 2.2.2.2 80 DELETE /nxapi/sessions/029194c9-acf0-4c26-8253-b6405bc8d107 - 200Однако при запросе алармов снова получаем Access denied:
2017-05-23 14:32:40,507 DEBUG | http-bio-8080-exec-5 | org.netxms.websvc.handlers.AbstractHandler | GET: entityId = null 2017-05-23 14:32:40,511 DEBUG | http-bio-8080-exec-5 | org.netxms.websvc.handlers.AbstractHandler | Session token not found and new session cannot be created May 23, 2017 2:32:40 PM org.restlet.engine.log.LogFilter afterHandle INFO: 2017-05-23 14:32:40 1.1.1.1 - 2.2.2.2 80 GET /nxapi/grafana/alarms from=%222017-05-23T08:32:40.344Z%22&interval=10000&targets=%5B%7B%22alarmSource%22:%7B%7D,%22formattedQuery%22:%22SELECT+$timeSeries+as+t,+count(*)+FROM+$table+WHERE+$timeFilter+GROUP+BY+t+ORDER+BY+t%22,%22hide%22:false,%22intervalFactor%22:1,%22legend%22:%22%22,%22query%22:%22SELECT+$timeSeries+as+t,+count(*)+FROM+$table+WHERE+$timeFilter+GROUP+BY+t+ORDER+BY+t%22,%22refId%22:%22A%22,%22resultFormat%22:%22time_series%22,%22type%22:%22Alarms%22,%22$$hashKey%22:%22object:738%22%7D%5D&to=%222017-05-23T14:32:40.344Z%22 401 -
Last logs, Last events, Last SNMP traps, Last Alarms at object detailsЯ случайно не в тот раздел написал, перенесите пожалуйста в фичреквесты.
-
Last logs, Last events, Last SNMP traps, Last Alarms at object detailsБыло бы удобно в object details видеть дополнительные табы Last logs, Last events, Last SNMP traps(если SNMP включен), Last Alarms с соответствующими логами событий для выбраной ноды. Сейчас для поиска этих данных нужно строить фильтр и искать их в общих логах. Особенно удобно, если бы новые события динамически отображались - как в инструментах Monitor.
-
Autobind по вендоруНе поделюсь, тк не использую Automatic bind rules. Но всё что вам нужно - вернуть в скрипте true если хотите поместить ноду в контейнер или false - если не хотите.
-
Низкие значения с Linux сервера (802.3ad bonding)В какой то версии реализовали, а до этого приходилось патчить. Скрипт мы используем дефолтный - return $1 * 8;
-
Autobind по вендорунаписать в Automatic bind rules для контейнера код который циклом пройдется по всем интерфейсам ноды и если найдет на одном из них нужный мак - ответи true
-
Проблема с интерфейсами при трафике более 2.1Гбит/cunsigned int64 это вероятно тип данных в netxms, какой OID по snmp вы читаете, там точно 64 битный счетчик?
-
Subnet monitoring/Address mapНе хватает мониторинга адресов в subnet
- Генерация alarm если в subnet появился хост который начал отвечать на ARP/ICMP. Неплохо бы иметь возможность включать такой режим внутри объекта subnet.
- Подсветка в Subnet->Object details-> Address Map имен нод для каждого адреса. Для адреса который отвечает на ARP/ICMP - подсвечивать ячейку другим цветом.
Таким образом можно решить такие задачи:
- Иметь возможность понять что появился новый хост, который забыли добавить в мониторинг. Network Discoverу не всегда подходит, тк не всегда нужно автоматически добавлять ноды
- Иметь возможность быстро увидеть что IP адрес занят хостом которого нет в Netxms. Сейчас мы используем Address Map для быстрого поиска свободного адреса и было бы удобно точно знать что netxms проверил с помощью arp/icmp что адрес действительно свободен.
-
objects filterЕсли что, это уже сделали, по крайней мере в 2.1-M2
-
Низкие значения с Linux сервера (802.3ad bonding)Используйте 64бит счетчик
Net.Interface.BytesIn64({instance}) -
2.0.6 deb packages2.0.6 версия вышла, но пакетов нет. По крайней мере в репозитории deb http://packages.netxms.org/debian jessie main
-
Высокие или низкие значения в historyа нельзя просто снимать 64битный счетчик?
-
SYS_IF_UNKNOWNМожете собрать snmp и ICMP трафик tcpdump-ом, быть может там будут видны таймауты? У меня из проблем подобного рода осталась еще ситуация когда внезапно netxms решает что DCI Unsupported для какого то snmp oid. Я грешу на отвалы SNMP на коммутаторах где это происходит, но плотно не копал.
-
SYS_IF_UNKNOWNА какие еще есть алармы про эту ноду в это время?
-
ошибочные срабатывания SYS_IF_UP и SYS_IF_EXPECTED_DOWN>Где вы вызываете скрипт для отладки (trace) ?
trace - выводит сообщения в лог демона на сервере.>То есть я их не терминирую автоматически, а хотел бы отслеживать вручную.
Я не совсем понял о чем речь. Мои скрипты подавляют экшны для инвентов о нормализации состояния порта в том случае если не было аларма на тему ненормального состояния. Это как раз происходит если статус интерфейсов стал UNKNOWN. То есть делаются две вещи:- не пишется письмо что ситуация нормализовалась по SYS_IF_EXPECTED_DOWN в случае если ранее не было аларма SYS_IF_UNEXPECTED_UP( как раз если у вас был SYS_NODE_DOWN или SYS_IF_UNKNOWN)
- не пишется письмо что ситуация нормализовалась по SYS_IF_EXPECTED_UP в случае если ранее не было проблемы SYS_IF_UNEXPECTED_DOWN(аналогично, но для интерфейсов с другим expected state).
Вам не нужно терминировать аларм автоматически если стейт порта изменился с expected state на другой, а потом снова нормализовался?
>Мне нужно SYS_IF_EXPECTED_DOWN создавать Alarm (Normal) только если до этого был SYS_IF_UNEXPECTED_UP, а если был SYS_NODE_DOWN или SYS_IF_UNKNOWN то НЕ создавать.
То есть если пришел SYS_IF_UNEXPECTED_UP - вы создаете аларм, а потом если пришел SYS_IF_EXPECTED_DOWN(то есть нормализация) - вы хотите не удалять аларм, а создать еще один? Если так, то вы в принципе можете применить мои фильтры, немного их поменяв. -
Выделение "type filter text" при открытии окна properties для ноды.В 99% случаев я открываю такое окно и ничего там не фильтрую, потому сбрасывать этот фильтр как то и смысла нет. Например при создании DCI я уже не могу просто вставить Instance Discovery скрипт из буфера, мне нужно покопать в этом буфере и найти там нужные данные, тк туда уже добавлен текст из фильтра просто при открытии окна.
-
Выделение "type filter text" при открытии окна properties для ноды.Ну если сбросить то да, но со включенным автокопированием делать это уже поздно, тк строчка уже в буфер попала. Очевидно поведение с дефолтным выделенным текстом сделано чтобы при начале ввода этот текст был перезаписан, но это вызывает проблемы как у меня. Учитывая что фильтр нод в дереве объектов такой проблемы не имеет - можно починить и тут.
Подобная ситуация не только в окнах с Properties ноды, а во всех подобных окошках(например при создании/редактировании DCI)

-
Выделение "type filter text" при открытии окна properties для ноды.Все версии, 2.0.5 в том числе.
Если выделение есть - то и копирование будет(если у вас включено копирование при выделении).
Выделение - это уже поведение не как у placeholder, например я могу поставить курсор перед текстом "type filter text" начать писать 123 и получить "123 type filter text". А placeholder просто показывает текст на фоне поля ввода, при этом этот текст не связан со значением этого поля.
Например попробуйте тут http://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_input_placeholder выделить плейсхолдер "First name" или ввести что-то перед ним.