У нас есть много серверных приложений, производительность которых нам необходимо отслеживать (такие показатели, как заказы, ожидающие обработки, время с момента последнего запуска и т. Д.). В настоящее время это выполняется внутренним сторожевым приложением, которое отправляет электронные письма при превышении порогового значения, но нет способа подтвердить проблему и подавить эти предупреждения.
Вместо того, чтобы создавать нашу собственную полную систему оповещений, мы хотели бы подключиться к установке Zenoss, которую мы используем для мониторинга наших серверов. Я нашел несколько статей при программном создании событий, но я бы предпочел, чтобы Zenoss сам следил за значениями, на которые смотрит текущее приложение-сторожевой таймер (так что мы также получаем преимущества построения графиков и истории).
Тогда возможно ли программно предоставить Zenoss поток данных (а не событие)? Или есть другой способ сделать это?
ИМХО, самое чистое решение - позволить приложению предоставлять информацию через SNMP.
Затем вы можете отслеживать это с помощью любого программного обеспечения, поддерживающего протокол SNMP, включая, помимо прочего, Zenoss.
Есть разные способы добиться этого.
Я сам сделал это для некоторых пользовательских приложений:
Приложения работали на сервере Linux, на котором уже был запущен демон Net-SNMP. Поэтому я написал плагин для Net-SNMP (просто небольшой Perl-скрипт), который запрашивал значения из приложения и сообщал их Net-SNMP.
Я использовал exec
механизм Net-SNMP для его запуска ( http://net-snmp.sourceforge.net/docs/man/snmpd.conf.html#lbAZ ). В основном вы просто кладете
exec [MIBOID] NAME PROG ARGS
в snmpd.conf
. Затем Net-SNMP вызовет ваш сценарий и сообщит о его результатах через SNMP. Вашему сценарию просто нужно распечатать результат (ы) на стандартном выводе (по одному на строку, если он сообщает несколько значений), в противном случае ему не нужно делать ничего особенного. Примечание: С помощью exec
теперь устарел в пользу extend
, но принцип тот же.
Существуют и другие, более мощные механизмы расширения (вы можете написать плагин на Perl или динамический модуль на C, ...), но это хорошее место для начала.
Другие демоны SNMP будут иметь аналогичный механизм расширения, это просто зависит от того, что вы в настоящее время используете на сервере, на котором работает ваше приложение.
Также существует специальный протокол под названием AgentX чтобы позволить приложению выступать в качестве «субагента» (то есть передавать данные основному демону SNMP в системе). Вы даже можете реализовать субагент в своем приложении.
Короче говоря, существует множество способов создания отчетов о данных через SNMP; просто выберите самое простое решение и при необходимости расширьте его. В любом случае, таким образом вы получите расширяемое стандартное решение вместо специальных писем.
Редактировать:
Для этого под MS Windows:
Одна из возможностей (могут быть и другие, не знаю) - установить Net-SNMP под Windows (у них есть версия для Windows). На самом деле у вас есть два варианта:
В варианте 1 вам необходимо разрешить службе Windows SNMP использовать нестандартный порт и получать к нему запросы прокси-сервера Net-SNMP. В варианте 2 агент Net-SNMP будет напрямую загружать библиотеки DLL, которые агент Windows будет использовать при запуске. Таким образом, в обоих случаях вы все равно должны получать специфичную для MS информацию, которую предоставляет агент Windows. У обоих подходов есть недостатки; увидеть README.win32 для подробностей.
После запуска Net-SNMP вы можете использовать все его функции расширения, как и в Linux (см. Выше).
Вы также можете напрямую расширить агент Windows SNMP (без использования Net-SNMP), но я мало что знаю об этом. Существует "Windows SNMP API", который, по-видимому, является односторонним: http://msdn.microsoft.com/en-us/library/aa379207%28v=vs.85%29.aspx
Я написал вам статью, в которой сейчас обсуждаю различные варианты «мониторинга процесса» с Zenoss - http://community.zenoss.org/docs/DOC-3537 .
С тех пор мало что изменилось, кроме того, что встроенный мониторинг процессов Zenoss стал немного менее изворотливым и более надежным. В нем обсуждаются различные способы, включая использование демона net-snmp (который, кстати, также доступен для Windows). Также обсуждается запуск скриптов с использованием ssh. В любом случае вы можете построить график собранных данных в дополнение к предупреждению о пороговых значениях.
Привет, Джейн