MRTG를 Windows 서비스로 실행하기

MRTG를 Windows 서비스로 실행하기

방금 Windows Server 2012에 mrtg를 설치했는데 서비스로 실행하는 데 문제가 있습니다. 여기 가이드를 따르고 있어요, 하지만 여전히 붙어 있습니다.

첫째, 구성 파일을 지정하는 동안 mrtg를 수동으로 실행하면 작동하고 그래프가 생성됩니다.

하지만 서비스를 위해 파일을 srvany.exeinstsrv.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 서비스도 관리할 수 있습니다)

관련 정보