Заставьте 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 (или Сервер 2012 после этого). Я знаю, что некоторые ссылки на mrtg сайт довольно стары. Возможно, я просто не могу использовать srvany?

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

1
задан 16 June 2015 в 04:09
1 ответ

Хорошо! Проблема заключалась в том, что srvany.exe не работал на новых моделях Windows. Но nssm.exe будет! nssm означает non-sucking-service-manager - отличное имя!

Итак, я создал пакетный файл с этим в нем.

::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 тоже, если хотите)

0
ответ дан 4 December 2019 в 07:29

Теги

Похожие вопросы