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

Messages - Anth0ny

#16
Согласен. NetXMS- один из самых понятных и адекватных систем мониторинга. Всё остальное настолько запутано, что... мда.
Я пользуюсь системой с версии 2.19. И весьма доволен её работой. Есть конечно недочёты, но они в целом картины не портят =).

Жаль только, что в документации по системе напрочь отсутствуют примеры настроек и скриптов =), ну да для этого и существует форум. Понадобилось- спросил. И огромный респект разработчикам за оперативность и оказанную помощь.
#17
я может и не прав, но это по-моему баг и тянется он уже с ооочень давних пор. я смирился и не обращаю внимания.
потому что в целом подсистема SNMP-опросчика работает вполне адекватно.

не обращай внимания на то что вместо get работает walk. это по сути ничего не меняет. единичное значение всё равно можно без проблем получить.

что именно не получается получить? сторонней программой нужный OID и его значение видишь?
#18
Виктор, премного благодарен =)
#19
Это сочетание должно работать?

Я не могу запустить сервис, он валится, получаю такое в системный лог:

Application popup: nxagentd.exe - Entry Point Not Found : The procedure entry point MiniDumpWriteDump could not be located in the dynamic link library dbghelp.dll. 

потом

Timeout (30000 milliseconds) waiting for the NetXMS Agent service to connect.

потом

The NetXMS Agent service failed to start due to the following error:
The service did not respond to the start or control request in a timely fashion.

#21
Общие вопросы / Re: Push-агент
June 01, 2009, 12:19:24 PM
и вот пример на злобу дня ;) :
ищем записи одного и тот же сервера на 2 DNS.


@echo off
for /f "tokens=2" %%i in ('"nslookup server1.mydomain.ru dnsserver1.mydomain.ru 2>nul | find /i /n "address" | find /i /v "[2]" & if errorlevel 1 echo Error DNS-Query-Error"') do set dns1=%%i
for /f "tokens=2" %%i in ('"nslookup server1.mydomain.ru dnsserver2.mydomain.ru 2>nul | find /i /n "address" | find /i /v "[2]" & if errorlevel 1 echo Error DNS-Query-Error"') do set dns2=%%i
if %dns1% equ 10.200.1.1 (set dns1=0) else set dns1=1
if %dns2% equ 10.200.1.1 (set dns2=0) else set dns2=2
set /a overall=%dns1%+%dns2%
@echo %overall%


таким образом если нет записей или не ответил сервер dnsserver1 мы получаем на выходе 1, если не получили данные от dnsserver2, то 2, а если не в курсе или не ответили оба, то 3. нормальное состояние = 0.
#22
Общие вопросы / Re: Push-агент
June 01, 2009, 11:09:44 AM
спасибо, интересное решение =)

это равносильно ExternalParameter = MyParameter:cmd /c @echo 1
т.е. можно однострочные скрипты использовать без создания скриптофайла.

или же пользоваться опять же в простых случаях сцеплением && для многострочных скриптов с простым выводом...

вот интересный пример:

for /f "tokens=2" %i in ('"nslookup www.microsoft.com 2>nul | find /i /n "address" | find /i /v "[2]" & if errorlevel 1 echo Address Not-Found"') do echo %i
#23
вижу, это для PUSHки =)

вот ещё бы заставить push-"агента" выполнять самостоятельно по расписанию такие скрипты и было бы здОрово =)

#24
Общие вопросы / Re: Push-агент
June 01, 2009, 09:39:20 AM
ээ.. я не совсем понимаю, о чём речь: "ExternalParameter"...
#25
Общие вопросы / Re: Push-агент
May 29, 2009, 03:24:58 PM
вот, хотел попробовать ещё один способ, но...

пример: опрашиваем через SNMP на удалённой windows-машине сервис Task Shceduler.

штатными средствами этого пока ПРАВИЛЬНО сделать нельзя, поскольку как только сервис будет остановлен, его OID пропадёт из общего списка и DCI встаент в позу Not supported. а значит мониторить сервисы на запущено\не запущено не получается.

испытывал такое решение:

@echo off
nxsnmpget -c public -p 161 имя_опрашиваемого_сервера 1.3.6.1.4.1.77.1.2.3.1.1.14.84.97.115.107.32.83.99.104.101.100.117.108.101.114
nxpush -u admin -P password -H сервер_мониторинга "полное_имя_сервера_мониторинга:Task Scheduler Checker"=%errorlevel%

где errorlevel'ы (nxsnmpget'а):

0 - и OK, и если OID не найден
3 - request timed out

Проблема: nxsnmpget отдаёт errorlevel 0 одинаково и на "сервер доступен-OID есть" и на "сервер доступен-OID'а нет"

в принципе можно эту проблему решить при помощи такой конструкции (поможет возвращаемое значение [04] (получено, порядок) и [05] (не получено, проблема)):

@echo off
nxsnmpget -c public -p 161 имя_опрашиваемого_сервера 1.3.6.1.4.1.77.1.2.3.1.1.14.84.97.115.107.32.83.99.104.101.100.117.108.101.114 | find /I "[04]"
nxpush -u admin -P password -H сервер_мониторинга "полное_имя_сервера_мониторинга:Task Scheduler Checker"=%errorlevel%

где %errorlevel%'ы (find'а):

0 - всё ок, получили [04]
1 - всё плохо, получили не [04] (скорее всего [05])
#26
Общие вопросы / Re: Push-агент
May 29, 2009, 11:53:21 AM
Виктор, вы как всегда правы =)
Заменил короткое имя сервера на длинное и всё срослось.

Правильно выглядит так:

nxpush.exe -vv -u admin -P password -H monitor MONITOR.mydomain.ru:Test=6666

процессуальный вопрос: сейчас если я правильно понял push-алгоритм реализован таким образом, что он пассивно принимает значения от внешнего источника. я думаю, что было бы гораздо удобнее, если бы push-агент мог иметь возможность работать по указанному ему заранее расписанию и САМОСТОЯТЕЛЬНО запускать указанные ему скрипты и программы и работать с их выхлопом.

тогда не понадобилось бы городить огород из дополнительных зашедулленых задач. всё бы управлялось из единого центра...
#27
Общие вопросы / Re: Push-агент
May 28, 2009, 03:16:01 PM
вот выполнение скрипта в режиме отладки:

nxpush.exe -vv -u admin -P password -H monitor MONITOR:Test=6666
AddValuePair: dciID="0", nodeName="MONITOR", dciName="Test", value="6666"
Connecting to "monitor" as "admin"; encryption is disabled
NXCL: SendMsg("CMD_GET_SERVER_INFO", id:0)
NXCL: RecvMsg("CMD_REQUEST_COMPLETED", id:0)
NXCL: SendMsg("CMD_LOGIN", id:1)
NXCL: RecvMsg("CMD_LOGIN_RESP", id:1)
Sending batch #1 with 1 records
Record #1: "6666" for 0(MONITOR):0(Test)
NXCL: SendMsg("CMD_PUSH_DCI_DATA", id:2)
NXCL: RecvMsg("CMD_REQUEST_COMPLETED", id:2)
Push failed at record #1 (#1 in batch): Invalid object ID.
NXCL: Network receiver thread stopped

Я посмотрел, у DCI "Test" dciID=1193
#28
Общие вопросы / Re: Push-агент
May 28, 2009, 02:34:43 PM
Test=$1 - это означает, что мы присваиваем для текущего значения DCI "Test" значение $1 (которое получили от любой другой программы\скрипта)?

т.е. вот например такой cmd-скрипт должен сработать?
(если у DCI Test тип данных Integer)

set example=%random%
nxpush -u login -P password netxms_server_address Test=%example%

я в ответ получаю это: No valid pairs found; nothing to send

* * *

начинаю разбираться =)

nxpush -u "admin" -P "password" monitor monitor:Test=3403
Push failed at record #1 (#1 in batch): Invalid object ID.

Invalid object ID - это оно о чём?
#29
отвечу сам: после смены типа данных с INT на FLOAT всё наладилось: получаю данные в нужном виде и количестве.
=)

спасибо за помощь!

последний вопрос в тему:

AverageDiskWriteQueueLenght:"\PhysicalDisk(2 T:)\Avg. Disk Write Queue Length":60:A:INT:Avgerage Disk T: Write Queue Length

можно ли пользоваться таким каунтером, НЕ ВНОСЯ его в конфиг Агента?
это я о

Quote from: Victor Kirhenshtein on May 28, 2009, 10:53:23 AM
Yes, you can use extended form of PDH.CounterValue:

PDH.CounterValue("counter name",1)

If second argument is present in PDH.CounterValue and set to non-zero, then agent will get two samples with 1 second interval, and use them to calculate resulting value.

#30
=) как посоветуете поступить в данном конкретном случае?
чтобы всё-таки иметь данные...

может сменить тип на "Float" (а как он кстати обозначается, FLOAT?)?