Haga que MRTG se ejecute como servicio de Windows

Haga que MRTG se ejecute como servicio de Windows

Acabamos de instalar mrtg en nuestro Windows Server 2012 y tengo problemas para ejecutarlo como servicio. Estoy siguiendo la guía aquí., pero todavía estoy estancado.

Primero, si ejecuto mrtg manualmente, mientras especifico un archivo de configuración, funciona y genera gráficos.

Pero para el servicio, coloqué los archivos srvany.exey instsrv.exeen c:\mrtg\bin (eliminé el número de versión del nombre del directorio, por lo que ahora está todo ubicado en c:\mrtg).

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

Y fusioné el archivo regedit en el registro y puedo ver que las claves están ahí si voy y miro. Puedes ver en la ruta a Perl que instalé la versión de 64 bits de 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\\"

Ahora, después de hacer todo esto, el servicio se crea, pero cuando intento iniciarlo, se inicia y se detiene.

Así que creé una cuenta de dominio para el servicio, la asigné al servicio y le di derechos de lectura/escritura/modificación al directorio mrtg y su directorio web, pero aún así no se inicia.

¿Qué me estoy perdiendo?

[actualizar]

Además, si uso la línea de comando equivalente a lo que está configurado en la entrada del registro, obtengo algunas rarezas.

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.

[actualizar]

Iacabo de encontrar esto, que indica que svrany.exe no es realmente apto para Windows 7 (o Server 2012 después de eso). Sé que algunos de los enlaces del sitio mrtg son bastante antiguos. ¿Quizás simplemente no puedo usarlo srvany?

Pero creo que probablemente tenga algún problema de configuración.

Respuesta1

¡Bueno! El problema era que srvany.exe no funciona correctamente en los modelos más nuevos de Windows. Peronssm.exe¡voluntad! nssmrepresentagerente de servicio no chupador- ¡Qué nombre tan ingenioso!

Entonces creé un archivo por lotes con esto.

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

Una vez que hice esto, el servicio se inició de inmediato. Ahora puedo ver nssm.exey wperl(con su línea de comando adecuada) ejecutar en la lista de procesos. Y puedo modificar el servicio modificando el script por lotes.

Así que ahora puedes detenerlo connssm stop mrtg

y empezar connssm start mrtg

(o también puedes administrar otros servicios de Windows, si lo deseas)

información relacionada