Запустите MRTG как службу Windows

Запустите MRTG как службу Windows

Мы только что установили mrtg на наш Windows Server 2012, и у меня возникли проблемы с его запуском в качестве службы. Я следую руководству здесь, но я все еще застрял.

Во-первых, если я запускаю mrtg вручную, указав при этом файл конфигурации, он работает и генерирует графики.

Но для сервиса я поместил файлы srvany.exeи instsrv.exeв c:\mrtg\bin (я удалил номер версии из имени каталога, так что теперь все находится в c:\mrtg).

instsrv MRTG c:\mrtg\bin\srvany.exe

И я объединил файл regedit в реестре, и я могу увидеть ключи там, если я пойду и посмотрю. Вы можете видеть из пути к Perl, что я установил 64-битную версию Perl.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MRTG-PA500\Parameters]
 "Application"="c:\\perl64\\bin\\wperl.exe"
 "AppParameters"="c:\\mrtg\\bin\\mrtg --logging=eventlog c:\\mrtg\\bin\\mrtg-MyDevice.cfg"
 "AppDirectory"="c:\\mrtg\\bin\\"

Теперь, после того как я все это проделал, служба действительно создана, но когда я пытаюсь ее запустить, она запускается и останавливается.

Поэтому я создал учетную запись домена для службы, назначил ее службе и предоставил права на чтение/запись/изменение каталога mrtg и его веб-каталога, но она все равно не запускается.

Что я упускаю?

[обновлять]

Кроме того, если я использую командную строку, эквивалентную тому, что установлено в записи reg, то я получаю некоторые странности.

c:\mrtg\bin>perl mrtg --logging=eventlog mrtg-mydevice.cfg
Use of uninitialized value in subroutine entry at C:/Perl64/lib/Win32/EventLog.pm line 73.
Argument "Started mrtg with config 'mrtg-mydevice.cfg'\n" isn't numeric in subroutine entry at C:/Perl64/lib/Win32/EventLog.pm line 46.
Use of uninitialized value in subroutine entry at C:/Perl64/lib/Win32/EventLog.pm line 199. Argument "WARN" isn't numeric in subroutine entry at C:/Perl64/lib/Win32/EventLog.pm line 199.
Daemonizing MRTG ...
Do Not close this window. Or MRTG will die
Use of uninitialized value in subroutine entry at C:/Perl64/lib/Win32/EventLog.pm line 73.
Use of uninitialized value in subroutine entry at C:/Perl64/lib/Win32/EventLog.pm line 199. Argument "WARN" isn't numeric in subroutine entry at C:/Perl64/lib/Win32/EventLog.pm line 199.

[обновлять]

ятолько что нашел это, в котором говорится, что svrany.exe не совсем подходит для Windows 7 (или Server 2012 после этого). Я знаю, что некоторые ссылки на сайте mrtg довольно старые. Может, я просто не умею пользоваться srvany?

Но мне кажется, у меня какая-то проблема с конфигурацией.

решение1

Ладно! Проблема была в том, что srvany.exe не работал правильно на новых моделях Windows. Ноnssm.exeбудет! nssmозначаетне-сосущий-менеджер-услуг- классное название!

Поэтому я создал пакетный файл с этим содержимым.

::Monday, June 15, 2015
::http://nssm.cc/download
::Apparently, srvany.exe doesn't work right on newer Windows, so I got a 64bit nssm (non-sucking service manager) to put in its place.
::commandline directions: http://nssm.cc/commands

nssm install mrtg wperl "mrtg --logging=eventlog mrtg-mydevice.cfg"
nssm set mrtg AppDirectory c:\mrtg\bin
nssm set mrtg displayname mrtg
nssm set mrtg description "MRTG wPerl Service"
nssm set mrtg start service_auto_start
nssm start mrtg

Как только я это сделал, служба сразу запустилась. Теперь я вижу nssm.exeи wperl(с правильной командной строкой) работающие в списке процессов. И я могу изменить службу, изменив пакетный скрипт.

Теперь вы можете остановить это с помощьюnssm stop mrtg

и начните с этогоnssm start mrtg

(или вы можете управлять и другими службами Windows, если хотите)

Связанный контент