Monitoring Services

Embed Size (px)

Citation preview

  • 8/8/2019 Monitoring Services

    1/2

    From: William A. Rowe, Jr.Date: June 7th '00Subject: service monitoring in Apache 1.3.13

    The concept for a taskbar monitor has been thrown aroundfor a very long while. 1.3.13 introduced Win9x services,and that added fuel to the mix. Here are some sideband

    observations I've made for other developers...

    About Apache as a console, don't start Apache hidden withoutany command line arguments if you want to launch it yourselfin a hidden window (it will do the classic test forAllocConsole/FreeConsole)... drop in some arguments such asthe -f or -r option and it will fly without thinking it is aservice under 9x and NT.

    Rule two, don't use --ntservice as an argument, ever. Onlythe Windows NT Service Control Manager is allowed to pass thatflag, and only that flag, when it runs Apache.exe. Do use

    --ntservice as the sole argument to the executable name ifyou are installing an Apache NT service yourself.

    Rule three, use -k start and -n name when maintaining theHKLM/Software/Microsoft/Windows/CurrentVersion/RunServiceslist, since there is no other way for Apache to know whatthe service is named :) And look at any 9x installed service'sRunServices entry in the registry for the start service semantic.

    Rule four, use the WinNT Service Control Manager exclusivelyfor starting, stopping and restarting Apache as an NT service.The restart signal is the value 128, as documented in service.hand service.c - this will continue to work in Apache 2.0. If

    it fails, you are handling an older version (pre 1.3.13) ofApache, and need to stop and then start the service instead.

    Rule five, use the legacy pid-named events to signal Win9xservice Apache to restart and stop the service. But don'tbother looking for httpd.pid files... you can get the pidright from the hidden service control window. Apache 1.3.13and 2.x create a hidden window named for the name of theservice (without the spaces), with a window class of"ApacheWin95ServiceMonitor", so can use FindWindow to trackdown running Win9x services. See the service.c code for howI accomplished this pretty simply in the -k stop/-k restart

    handler.

    Taskbar Monitor App-------------------

    Basic requirements: a C code application using strictly theWin32 API, and not MFC or other Win32 frameworks. Could usethe service.c module to share some basic functions. Thatmodule could be extended in Apache 2.0 to make this all easier.

    I think we are looking for an external app that simply actsas a monitor or allows a stopped service to be started. Ifthe user logs off, we loose the monitor app, but installed as

    a shortcut in the Start group or in the registry keyHKLM/Software/Microsoft/Windows/CurrentVersion/Runwe will be just fine. I'd like to see the monitor run only

  • 8/8/2019 Monitoring Services

    2/2

    one instance to monitor all running services, for memoryand resource conservation.

    I was thinking that the hover/iconbar title would tell them"Test service is running", or "Test service is stopped".If they left click, they could stop or restart, or simplystart if it is stopped. There could be a preference that

    each service doesn't get it's own individual task icon unlessit is running, if it is a manual start service (or missingfrom the RunServices list, which is the equivilant under 9x).

    If a specific service is set to Auto start or is in theRunServices Win9x registry key, we must show them the stoppedicon, of course. We might also keep the icon for any runningservice that stops abruptly. But there could be a 'singleicon' option for the taskbar icon monitor that says show onlya single status icon, for simplicity if the administrator runsmany Apache services.

    But I was hoping that any right click would provide a menuof all Apache services with their status. e.g.Test service is stoppedApache_2 service is runningMyWeb service is running

    and each would do the logical submenu, same as if thatspecific taskbar icon were left clicked, offering to start oroffering to stop or restart the server, as appropriate.

    Finally, to identify all installed Apache services, just querythe registry key HKLM\SYSTEM\CurrentControlSet\Services for anykey that has the ImagePath value of "...\Apache.exe"... (quotesare significant here, if the leading quote is ommitted the

    entire string ends with the text \Apache.exe - based on Apache'sown service installer in every released version.)