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 - Anth0ny

#1
Виктор, приветствую!

Всё-таки решил снова написать, так как проблема так и не решилась: время от времени NXMS-сервер (win32) даёт небольшой сбой и не происходит парсинг получаемых от агента значений... По-моему, так.

DCI- сбор данных о размере свободного места на диске win32-сервера (%).

Логика:

Если >15 - "ок"
Если <15 - "важно"
Если <10 - меняем "важно" на "критично"
Если <15 но >10 - меняем "критично" на "важно"
Если >15 - "ок"

Настройки:

Disk.FreePerc(D:)
Less or equal 10.000000 - if TRUE -> DISK_CAPACITY_CRITICAL, if FALSE -> DISK_CAPACITY_WARNING
Less or equal 15.000000 - if TRUE -> DISK_CAPACITY_WARNING, if FALSE -> DISK_CAPACITY_OK

Вот как выглядит правильное сообщение о понижении места:
(я использую вот такое форматирование сообщения)

Quote
ВРЕМЯ ВОЗНИКНОВЕНИЯ:   06-Jul-2009 22:55:43
МЕСТО ВОЗНИКНОВЕНИЯ:   serv1.mydom.ru[10.200.1.1]
ПАРАМЕТР:      Свободное место на диске D (в %) (EXCHANGE):
СТАТУС СОБЫТИЯ:      Critical

АХТУНГ: критическое состояние параметра "Свободное место на диске D (в %) (EXCHANGE):"! Текущее значение: 9.920993 (пороговое значение: 10.000000)

А вот как выглядит неправильное сообщение (оно в таком виде записывается и в System Log и по почте шлётся, НЕТ порогового значения и не парсится получаемое):

Quote
ВРЕМЯ ВОЗНИКНОВЕНИЯ:   07-Jul-2009 06:55:46
МЕСТО ВОЗНИКНОВЕНИЯ:   serv1.mydom.ru[10.200.1.1]
ПАРАМЕТР:      Свободное место на диске D (в %) (EXCHANGE):
СТАТУС СОБЫТИЯ:      Warning

ПРЕДУПРЕЖДЕНИЕ: рекомендуется проверить состояние параметра "Свободное место на диске D (в %) (EXCHANGE):"! Текущее значение:  (пороговое значение: 0x00000414)

Ошибку можно как-то починить? =)
И что это вообще такое, 0x00000414?
#2
Вопрос: каунтер Process(имя_процесса)\% Processor Time") это Process.CPUTime(<insert arguments here>)?

У меня не проходит такой запрос: PDH.CounterValue("\Process(CopyService)\% Processor Time"), как значение всё время возвращается "0"...
Как можно собрать загрузку CPU по конкретному процессу?


Приложив голову, понял что тут надо собирать 2 семпла для рассчёта.
Так работает (сам DCI отрабатывает 1 раз в 30 минут, за это время собираются 2 промежуточных семпла): PDH.CounterValue("\Process(CopyService)\% Processor Time", 30)

Просьба: нельзя ли в последующих версиях NXMS в графе "Description" напротив PDH-элементов писать их windows-эквивалент? Тогда и описания на них никакого не нужно будет, и разночтений не будет.
#3
Это сочетание должно работать?

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

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.

#4
А вот бы было здорово реализовать для мониторинга сервиса DNS что-то в таком роде:



#5
Ситуация: есть удалённая windows-машина, на которой нужно следить за состоянием сервисов. Данная машина доступна только по SNMP, больше никак. На машине (2003) поднят SNMP, на сервер NXMS добавлен LanMgr-Mib-II-MIB.mib и базовый mib пересобран.

Сегодня долго ковырялся и решал эту проблему. Вроде ведь ничего сложного, но вот не решается она так, как надо.


Проблема: при использовании SNMP для мониторинга windows-сервисов, OID сервиса доступен (присутствует в общем дереве OID'ов) только до тех пор, пока сам сервис запущен. Как только сервис останавливается, OID незамедлительно пропадает и DCI тут же переходит в состояние Not Supported.

Его конечно понять можно, ведь с точки зрения базовой логики поскольку объект отсутствует, то мониторить просто нечего. И введённый OID начинает считаться ошибочным =/.

Пример OID'а.

1. OID раздела сервисов: 1.3.6.1.4.1.77.1.2.3.1. = enterprises.lanmanger.lanmgr-2.server.svSvcEntry.svSvcTable

2. Таблицы с перечнями свойств сервисов

        .1 = svSvcName (.#char.dec-ascii chars, matches service name in service control panel including case)
        .2 = svSvcInstalledState (1-uninstalled,2-install-pending,3-uninstall-pending,4-installed)
        .3 = svSvcOperatingState (1-active, 2-continue-pending, 3-pause-pending, 4-paused)
        .4 = svSvcCanBeUninstalled (1-no, 2-yes)
        .5 = svSvcCanBePaused (1-no, 2-yes)

3. Соответственно, OID'ы сервисов строятся так (на примере Task Scheduler):

OID с названием сервиса: 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
выдаст "Task Scheduler"

OID с состоянием сервиса: 1.3.6.1.4.1.77.1.2.3.1.3.14.84.97.115.107.32.83.99.104.101.100.117.108.101.114
при запущенном сервисе выдаст "1"

Вопрос: как кто решал подобную проблему? Как через SNMP можно мониторить состояние сервисов если их OID'ы исчезают после остановки или падения сервисов а именно за этим и нужно следить?

Всё бы ничего, да при этом полностью отказывает DCI. И его можно реанимировать только ручками. Что для большого числа хостов и сервисов не приемлемо...

Прошу помочь...

2 Виктор: как в данном случае лучше поступить, что посоветуете? Нельзя ли в будущих релизах NXMS немного изменить подход к SNMP, например добавить при выборе агента "SNMP" специальную галочку, для того чтобы в случае если OID исчезает, мониторинг не считал это поводом просто перестать мониторить заданный OID, а поступал бы так же, как и в случае стандартного события? Вроде такого: OID есть- всё ок, OID'а нет- сгенерировать аларм.
#6
Установка проводилась на Win2008Std (x32).
База - PGSQL 8.3

И теперь сервер NXMS не заводится.

Application popup: nxdbmgr.exe - Unable To Locate Component : This application has failed to start because k5sprt32.dll was not found. Re-installing the application may fix this problem.

+ не поставился агент. пришлось ставить вручную.
+ запустить nxdbmgr невозможно- ругается на отсутствие либы MSVCR71, gssapi32.dll
#7
Проблема странная. Проявилась только сейчас и только на двух машинах.

Клиент не ставится (точнее не устанавливается сервис).
Ошибка в логе:

Reporting queued error: faulting application nxagentd.exe, version 0.0.0.0, faulting module libnetxms.dll, version 0.0.0.0, fault address 0x00014f87.

Пока не пойму в чём дело...
#8
Возник такой вопрос: а как вывести отслеживаемую ноду из под действия Шаблона? Можно просто удалить ноду в контейнере Шаблона?
#9
Я не вполне уверен что данный вопрос не поднимался уже ранее, однако поиск ничего не дал...

Предложение: я предлагаю ввести в NXMS наряду с возможностью мониторинга базовых служебных протоколов типа telnet, smtp, http, etc также и возможность мониторинга игровых серверов.

Суть: требуется уметь только одну вещь - стандартно как и для других протоколов (например, определение доступности веб или telnet-серверов) определять, жив ли игровой сервер.

Всё что для это нужно - уметь запрашивать сервер по заданному порту и разбираться, откликается ли сервер. Идеальный вариант - использование технологии, аналогичной определению живости веб-сервера (и наличия на полученной запрошенной странице нужных или нежелательных слов) и простого сравнения получаемого результата с эталоном.

Попытаюсь привести пример: (к сожалению, тут только поверхностный)

Игровой движок- Valve "Source"

инфо: http://developer.valvesoftware.com/wiki/Main_Page
SDK: http://developer.valvesoftware.com/wiki/SDK_Docs

Сервер (игра)- Team Fortress 2 (но данное решение подойдёт и для любой другой игры на данном движке)

DCI может выглядеть так:

Origin: NetXMS Agent
Data type: String

Data Parameter: в целом, как мне кажется, можно использовать схожую с HTTP но несколько видоизменённую схему

было: (ServiceCheck.HTTP(server_ip_address,port,uri,host_header,response))
стало: (ServiceCheck.SRCDS(server_ip_address,port,server_variable))
новый запрос: ServiceCheck.SRCDS(10.100.0.1,27015,hostname)

SRCDS - Source Dedicated Server
10.100.0.1,27015 - адрес и порт сервера
hostname - мы хотим получить от сервера содержание его переменной "hostname" (название сервера)

Соответственно, если сервер возвращает содержание переменной (нужно использовать трэшолды, содержащие имя сервера)- он жив и здоров.

Если данный вопрос вас заинтересовал, готов предоставить всю необходимую для разработки документацию по Source (мы сейчас используем самописную систему для мониторинга наших игровых серверов, она в сущности неплохо справляется, но она, к сожалению, локальна по отношению к каждому серверу, не масштабируема, а количество серверов у нас растёт).

ПС: ровно такой же подход можно практиковать при мониторинге абсолютно любого игрового сервера. Я ещё не видел на рынке систем мониторинга ВАШЕГО уровня таких систем, которые бы предоставляли возможность мониторинга игровых серверов "из коробки". Не хотите стать первыми?  :)

Готов предоставить информацию, разъяснения, полигон и всё прочее, нужное для тестов (www.megatron.ws).
#10
Если сервер мониторинга довольно сильно нагружен, то возникает ситуация, что могут возникнуть (я вот сейчас сижу и жду, чтоже получилось) проблемы с целостностью данных в базе.

Ситуация: если сервер нагружен, то возникают проблемы с применением шаблонов на объекты (нет уверенности что в таблицы вносятся все данные из шаблона).

В моём случае шаблон предельно прост - только одна простая запись (1 DCI).

После применения шаблона на объект (любую из нод) после минутного ожидания с окном "Applying template ..." получаем "Error applying template: request timed out."

Примерно тоже самое возникает при превращении DCI в шаблон - после минутного ожидания получаю ту же ошибку, НО в плюс к этому после ошибки таймаута падает сама консоль.

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

Вот беда..  :-\
#11
Общие вопросы / Push-агент
December 17, 2008, 05:29:32 PM
Довольно долго пытался вникнуть в суть данного агента и так до конца и не понял как же он работает.

Прошу если можно дать не теорию а практику, и привести хотя бы один (но полный) пример использования данного агента. Если вас не затруднит.

Я привык ориентироваться в документации на примеры и думаю мне вполне будет достаточно одного примера чтобы понять суть и способы применения...

Прошу помочь. =)
#12
OS: Windows 2008 x64

Всё сделал как написано тут: https://www.netxms.org/forum/index.php/topic,483.0.html

После всех преготовлений перезапускаю Агента, и....
Получаю в System-логе вот такое сообщение:

LogWatch: Cannot create parser from configuration file C:\Program Files\NetXMS\etc\log_2.xml (Compiled without XML support)
#13
Вопрос следующий: кто-нить натыкался в сети на хранилища mib'ов, которые не нужно править перед использованием с NXMS?

На данный момент пытаюсь прикрутить

LaserJet4V-MIB.mib
HP-LASERJET-COMMON-MIB.mib
LaserJet-Series4000-MIB.mib

(всё в атаче)

Но результат нулевой- все эти мибы считаются ошибочными =(((
#14
Виктор, приветствую.

Прошу, если возможно, внести следующие изменения:

1) Прошу добавить в Event Processing policy Editor возможность менять положение Правил обработки (чтобы можно было перемещать Правила, менять их расположение относительно друг друга и их очерёдность применения).

2) Если возможно, было бы неплохо отключить первичное срабатывание NXMS при перезапуске core-сервиса NXMS. А то при каждом таком перезапуске все, кто подписан на получение почтой извещений о состоянии отслеживаемых систем, получают почему-то список - перечень кластеров (!? я так и не понял почему и причём тут кластера) и порцию извещений о последних неудачных тестах (текущие не закрытые варнинги).

3) прошу увеличить объём, выделенный для внесения текста в поле "Message Template" у События (Event). а то нельзя туда запихнуть столько информации, сколько бы хотелось...

4) в Actions нельзя создавать Действия, давая им русские имена. не принимаются. это можно поправить?

#15
Приветствую!

Возникли следующие 2 вопроса:

1. Если я на сервере отслеживаю состояние сервиса (например spooler) через System.ServiceState(spooler), то %1 всегда возвращает именно System.ServiceState(spooler). Можно ли каким-то образом получать только значение, заключённое в ()? т.е. в данном случае только само значение spooler.

2. вытекает из первого вопроса. если я хочу автоматически перезагружать сервис spooler, я

а) создаю Action на сервере: Reset My Service \ Execute action on remote agent\ %a \ ResetService
б) создаю запись в конфиге Агента: ActionShellExec = ResetService:sc stop spooler && sc start spooler
в) создаю привязку Action "Reset My Service" к Event "SYS_SERVICE_DOWN" через Event Processing Policy
г) создаю DCI и добавляю в свойства DCI параметр Threshold: Last polled value - Not equal - 0 - SYS_SERVICE_DOWN

а вот теперь собственно вопрос: если я хочу сделать Reset My Service универсальным Action для ЛЮБОГО сервиса, как мне модифицировать строку ActionShellExec = ResetService:sc stop spooler && sc start spooler

может быть так? ActionShellExec = ResetService:sc stop %1 && sc start %1

и вот тут всплывает первый вопрос: %1 - возвращает не только название сервиса "spooler", но так же содержит и метод проверки "System.ServiceState".

Прошу помочь.
:)
#16
Не могу понять, где я не прав.
Прошу помочь- разъяснить.

Версия - 0.2.22.

ОС сервера NetXMS - Windows 2008.
ОС с Агентом - Windows 2003

Ведь всё вроде просто: https://www.netxms.org/forum/index.php/topic,204.0.html
Действовал в точности с инструкцией.

1) Создал Action типа "Execute action on remote agent".
Remote host: %a
Action: ResetSpooler

(Сразу вопрос: а почему в поле Action сразу нельзя использовать команды windows-шелла? если например мне не нужно ничего кроме перезапуска сервиса, то почему сразу нельзя использовать простейшую конструкцию типа "net stop spooler && net start spooler", а приходится создавать ватник на сервере, на котором должна быть выполнены данные команды?)

2) На сервере, за спулером которого мы приглядываем, в подкаталоге VAR каталоге Агента NetXMS (C:\Program Files\NetXMS\var) создал файл reset_spooler.cmd следующего содержания:

(Я не нашёл :-\ конкретных рекомендаций в форуме и документации на тему, ГДЕ ЖЕ нужно хранить исполняемые скрипты, нашёл только упоминание про \VAR\)


@echo off
@sc stop spooler
@cs start spooler
@sc query spooler >>query.log


3) В конфиг Агента добавлена строка: ActionShellExec = ResetSpooler:reset_spooler.cmd. Агент перезапущен через редактор конфига (Save and apply).
4) Создан DCI, отслеживающий состояние сервиса Windows Spooler: System.ServiceState(spooler).
5) Используется стандартный Event типа SYS_SERVICE_DOWN (Last polled value - not equal - 0).
6) Используется стандартный обработчик Event Processing Policy для SYS_SERVICE_DOWN, к нему привязаны 2 Action'а, Mail to admin (тип - Send e-mail) и Reset service (тип - Execute action on remote agent)

Всё. Судя по Форуму, начиная с этого момента всё должно начать работать...
Однако ж нет, из двух указаных Action срабатывает только mail to (и прекрасно работает), а вот скрипт НИ В КАКУЮ выполняться не хочет...

И хуже всего то, что нет никакой отладочной информации, чтобы понять, в каком именно месте я ошибся. Если ошибся.
Прошу помочь разобраться с данной проблемой. Существует ли какой-нибудь способ понять, почему не выполняется скрипт? Можно ли как-то вызвать дополнительную отладочную информацию и с её помощь понять причину проблемы?

???
#17
хе-хе =), неужели никто раньше не обращал внимания, какой TIME STAMP стоит на отсылаемых мониторингом письмах...?
загляните в тело сообщения, строка Date.

Date: Wed, 1 Oct 2008 тут:ваше:время +0000

Запостил на BugTracker'e.
#18
Это вообще возможно  :) ?
Можно ли контролировать время выполнения запросов? И использовать данное время в Threshold'ах как параметр?

Т.е. предположим, что нужно контролировать время отклика ноды на DCI, запрашивающий состояние SMTP-демона (если ответ > N секунд, то даже если тест пройден то состояние DCI всё равно должно помечаться как Warning).

Можно ли такое реализовать текущими средствами?
#19
На всякий случай создаю более общую тему, нежли чем в прошлый раз (только по HTTP).

Вопрос: каков правильный синтаксис (для поля Data \ Parameter) для всех текущих запросов типа "ServiceCheck.X" ? С "HTTP" мы уже разобрались. А что насчёт:

ServiceCheck.POP3
ServiceCheck.SMTP
ServiceCheck.SSH
ServiceCheck.TELNET

...?

Вопрос опять же относится к случаю, когда всё указанное нужно мониторить с одной ноды (Сервер NXMS) на другой (удалённый сервер, без возможности установки агента).

Виктор, нельзя ли привести хотя бы по одному максимально функциональному примеру на каждый из случаев? А то в Документации (https://www.netxms.org/documentation/common_parameters.html) сей вопрос (ServiceCheck) вообще никак не освещён... =(

Спасибо.
#20
Если не ошибаюсь, подобный запрос уже делался.
На всякий случай, напомню.

На текущий момент данный параметр- един для всех без исключения DCI. Т.е. его нельзя настраивать гибко, для каждой DCI в отдельности...

Запрос: Есть необходимость в том, что бы можно было выставлять этот параметр для каждой DCI в отдельности, т.е. чтобы можно было регулировать ситуацию, при которой

а) для одних DCI тонкой настройки не нужно
б) для многих DCI (особенно это касается тех DCI, которые мониторят различные НАГРУЗКИ и ЗАГРУЖЕННОСТЬ аппаратных ресуррсов) было бы ОЧЕНЬ удобно иметь возможность менять этот параметр индивидуально для получения меньшего количества срабатываний на КРАТКОСРОЧНЫЕ всплески нагрузки.

т.е. если (например) мы мониторим нагрузку на CPU, загрузка относительно стабильна, и тут вдруг возникает всплеск активности на 1-2 минуты, то при частом периодическом опросе (если интервал оказался в пределах этого всплеска) мы получаем срабатывание мониторинга. а это не очень удобно.

гораздо правильнее было бы получить срабатывание мониторинга только в том случае, если бы повышенная нагрузка на ресурс была бы зафиксирована не ОДИН раз, на несколько раз, причём подряд.

вот как раз это оченно бы хотелось иметь возможность контролировать.