Browse Source

[(no branch)] [trac763] log messages for stats-httpd

Jelte Jansen 14 years ago
parent
commit
5599a9aa3b

+ 6 - 2
src/bin/stats/Makefile.am

@@ -7,17 +7,18 @@ pkglibexec_SCRIPTS = b10-stats b10-stats-httpd
 b10_statsdir = $(pkgdatadir)
 b10_statsdir = $(pkgdatadir)
 b10_stats_DATA = stats.spec stats-httpd.spec stats-schema.spec
 b10_stats_DATA = stats.spec stats-httpd.spec stats-schema.spec
 b10_stats_DATA += stats-httpd-xml.tpl stats-httpd-xsd.tpl stats-httpd-xsl.tpl
 b10_stats_DATA += stats-httpd-xml.tpl stats-httpd-xsd.tpl stats-httpd-xsl.tpl
-pyexec_DATA = stats_messages.py
+pyexec_DATA = stats_messages.py stats_httpd_messages.py
 
 
 CLEANFILES = b10-stats stats.pyc
 CLEANFILES = b10-stats stats.pyc
 CLEANFILES += b10-stats-httpd stats_httpd.pyc
 CLEANFILES += b10-stats-httpd stats_httpd.pyc
 CLEANFILES += stats_messages.py stats_messages.pyc
 CLEANFILES += stats_messages.py stats_messages.pyc
+CLEANFILES += stats_httpd_messages.py stats_httpd_messages.pyc
 
 
 man_MANS = b10-stats.8 b10-stats-httpd.8
 man_MANS = b10-stats.8 b10-stats-httpd.8
 EXTRA_DIST = $(man_MANS) b10-stats.xml b10-stats-httpd.xml
 EXTRA_DIST = $(man_MANS) b10-stats.xml b10-stats-httpd.xml
 EXTRA_DIST += stats.spec stats-httpd.spec stats-schema.spec
 EXTRA_DIST += stats.spec stats-httpd.spec stats-schema.spec
 EXTRA_DIST += stats-httpd-xml.tpl stats-httpd-xsd.tpl stats-httpd-xsl.tpl
 EXTRA_DIST += stats-httpd-xml.tpl stats-httpd-xsd.tpl stats-httpd-xsl.tpl
-EXTRA_DIST += stats_messages.mes
+EXTRA_DIST += stats_messages.mes stats_httpd_messages.mes
 
 
 if ENABLE_MAN
 if ENABLE_MAN
 
 
@@ -32,6 +33,9 @@ endif
 stats_messages.py: stats_messages.mes
 stats_messages.py: stats_messages.mes
 	$(top_builddir)/src/lib/log/compiler/message -p $(top_srcdir)/src/bin/stats/stats_messages.mes
 	$(top_builddir)/src/lib/log/compiler/message -p $(top_srcdir)/src/bin/stats/stats_messages.mes
 
 
+stats_httpd_messages.py: stats_httpd_messages.mes
+	$(top_builddir)/src/lib/log/compiler/message -p $(top_srcdir)/src/bin/stats/stats_httpd_messages.mes
+
 # this is done here since configure.ac AC_OUTPUT doesn't expand exec_prefix
 # this is done here since configure.ac AC_OUTPUT doesn't expand exec_prefix
 b10-stats: stats.py
 b10-stats: stats.py
 	$(SED) -e "s|@@PYTHONPATH@@|@pyexecdir@|"  stats.py >$@
 	$(SED) -e "s|@@PYTHONPATH@@|@pyexecdir@|"  stats.py >$@

+ 2 - 1
src/bin/stats/stats.py.in

@@ -31,7 +31,8 @@ from stats_messages import *
 isc.log.init("b10-stats")
 isc.log.init("b10-stats")
 logger = isc.log.Logger("stats")
 logger = isc.log.Logger("stats")
 
 
-# Some constants for debug levels
+# Some constants for debug levels, these should be removed when we
+# have #1074
 DBG_STATS_MESSAGING = 30
 DBG_STATS_MESSAGING = 30
 
 
 # for setproctitle
 # for setproctitle

+ 37 - 35
src/bin/stats/stats_httpd.py.in

@@ -34,6 +34,17 @@ import isc.cc
 import isc.config
 import isc.config
 import isc.util.process
 import isc.util.process
 
 
+import isc.log
+from stats_httpd_messages import *
+
+isc.log.init("b10-stats-httpd")
+logger = isc.log.Logger("stats-httpd")
+
+# Some constants for debug levels, these should be removed when we
+# have #1074
+DBG_STATS_HTTPD_INIT = 10
+DBG_STATS_HTTPD_MESSAGING = 30
+
 # If B10_FROM_SOURCE is set in the environment, we use data files
 # If B10_FROM_SOURCE is set in the environment, we use data files
 # from a directory relative to that, otherwise we use the ones
 # from a directory relative to that, otherwise we use the ones
 # installed on the system
 # installed on the system
@@ -169,8 +180,7 @@ class StatsHttpd:
     def open_mccs(self):
     def open_mccs(self):
         """Opens a ModuleCCSession object"""
         """Opens a ModuleCCSession object"""
         # create ModuleCCSession
         # create ModuleCCSession
-        if self.verbose:
+        logger.debug(DBG_STATS_HTTPD_INIT, STATS_HTTPD_STARTING_CC_SESSION)
-            self.write_log("[b10-stats-httpd] Starting CC Session\n")
         self.mccs = isc.config.ModuleCCSession(
         self.mccs = isc.config.ModuleCCSession(
             SPECFILE_LOCATION, self.config_handler, self.command_handler)
             SPECFILE_LOCATION, self.config_handler, self.command_handler)
         self.cc_session = self.mccs._session
         self.cc_session = self.mccs._session
@@ -183,8 +193,8 @@ class StatsHttpd:
         """Closes a ModuleCCSession object"""
         """Closes a ModuleCCSession object"""
         if self.mccs is None:
         if self.mccs is None:
             return
             return
-        if self.verbose:
+
-            self.write_log("[b10-stats-httpd] Closing CC Session\n")
+        logger.debug(DBG_STATS_HTTPD_INIT, STATS_HTTPD_CLOSING_CC_SESSION)
         self.mccs.close()
         self.mccs.close()
         self.mccs = None
         self.mccs = None
 
 
@@ -233,10 +243,8 @@ class StatsHttpd:
                     (server_address[0], server_address[1],
                     (server_address[0], server_address[1],
                      err.__class__.__name__, err))
                      err.__class__.__name__, err))
         else:
         else:
-            if self.verbose:
+            logger.info(STATS_HTTPD_STARTED, server_address[0],
-                self.write_log(
+                        server_address[1])
-                    "[b10-stats-httpd] Started on address %s, port %s\n" %
-                    server_address)
         return httpd
         return httpd
 
 
     def close_httpd(self):
     def close_httpd(self):
@@ -244,11 +252,8 @@ class StatsHttpd:
         if len(self.httpd) == 0:
         if len(self.httpd) == 0:
             return
             return
         for ht in self.httpd:
         for ht in self.httpd:
-            if self.verbose:
+            logger.info(STATS_HTTPD_CLOSING, ht.server_address[0],
-                self.write_log(
+                        ht.server_address[1])
-                    "[b10-stats-httpd] Closing address %s, port %s\n" %
-                    (ht.server_address[0], ht.server_address[1])
-                    )
             ht.server_close()
             ht.server_close()
         self.httpd = []
         self.httpd = []
 
 
@@ -285,8 +290,7 @@ class StatsHttpd:
     def stop(self):
     def stop(self):
         """Stops the running StatsHttpd objects. Closes CC session and
         """Stops the running StatsHttpd objects. Closes CC session and
         HTTP handling sockets"""
         HTTP handling sockets"""
-        if self.verbose:
+        logger.info(STATS_HTTPD_SHUTDOWN)
-            self.write_log("[b10-stats-httpd] Shutting down\n")
         self.close_httpd()
         self.close_httpd()
         self.close_mccs()
         self.close_mccs()
 
 
@@ -303,13 +307,11 @@ class StatsHttpd:
     def config_handler(self, new_config):
     def config_handler(self, new_config):
         """Config handler for the ModuleCCSession object. It resets
         """Config handler for the ModuleCCSession object. It resets
         addresses and ports to listen HTTP requests on."""
         addresses and ports to listen HTTP requests on."""
-        if self.verbose:
+        logger.debug(DBG_STATS_HTTPD_MESSAGING, STATS_HTTPD_HANDLE_CONFIG,
-            self.write_log("[b10-stats-httpd] Loading config : %s\n" % str(new_config))
+                   new_config)
         for key in new_config.keys():
         for key in new_config.keys():
             if key not in DEFAULT_CONFIG:
             if key not in DEFAULT_CONFIG:
-                if self.verbose:
+                logger.error(STATS_HTTPD_UNKNOWN_CONFIG_ITEM, key)
-                    self.write_log(
-                        "[b10-stats-httpd] Unknown known config: %s" % key)
                 return isc.config.ccsession.create_answer(
                 return isc.config.ccsession.create_answer(
                     1, "Unknown known config: %s" % key)
                     1, "Unknown known config: %s" % key)
         # backup old config
         # backup old config
@@ -319,9 +321,7 @@ class StatsHttpd:
         try:
         try:
             self.open_httpd()
             self.open_httpd()
         except HttpServerError as err:
         except HttpServerError as err:
-            if self.verbose:
+            logger.error(STATS_HTTPD_SERVER_ERROR, err)
-                self.write_log("[b10-stats-httpd] %s\n" % err)
-                self.write_log("[b10-stats-httpd] Restoring old config\n")
             # restore old config
             # restore old config
             self.config_handler(old_config)
             self.config_handler(old_config)
             return isc.config.ccsession.create_answer(
             return isc.config.ccsession.create_answer(
@@ -333,19 +333,19 @@ class StatsHttpd:
         """Command handler for the ModuleCCSesson object. It handles
         """Command handler for the ModuleCCSesson object. It handles
         "status" and "shutdown" commands."""
         "status" and "shutdown" commands."""
         if command == "status":
         if command == "status":
-            if self.verbose:
+            logger.debug(DBG_STATS_HTTPD_MESSAGING,
-                self.write_log("[b10-stats-httpd] Received 'status' command\n")
+                         STATS_HTTPD_RECEIVED_STATUS_COMMAND)
             return isc.config.ccsession.create_answer(
             return isc.config.ccsession.create_answer(
                 0, "Stats Httpd is up. (PID " + str(os.getpid()) + ")")
                 0, "Stats Httpd is up. (PID " + str(os.getpid()) + ")")
         elif command == "shutdown":
         elif command == "shutdown":
-            if self.verbose:
+            logger.debug(DBG_STATS_HTTPD_MESSAGING,
-                self.write_log("[b10-stats-httpd] Received 'shutdown' command\n")
+                         STATS_HTTPD_RECEIVED_SHUTDOWN_COMMAND)
             self.running = False
             self.running = False
             return isc.config.ccsession.create_answer(
             return isc.config.ccsession.create_answer(
                 0, "Stats Httpd is shutting down.")
                 0, "Stats Httpd is shutting down.")
         else:
         else:
-            if self.verbose:
+            logger.debug(DBG_STATS_HTTPD_MESSAGING,
-                self.write_log("[b10-stats-httpd] Received unknown command\n")
+                         STATS_HTTPD_RECEIVED_UNKNOWN_COMMAND, command)
             return isc.config.ccsession.create_answer(
             return isc.config.ccsession.create_answer(
                 1, "Unknown command: " + str(command))
                 1, "Unknown command: " + str(command))
 
 
@@ -481,12 +481,14 @@ if __name__ == "__main__":
         (options, args) = parser.parse_args()
         (options, args) = parser.parse_args()
         stats_httpd = StatsHttpd(verbose=options.verbose)
         stats_httpd = StatsHttpd(verbose=options.verbose)
         stats_httpd.start()
         stats_httpd.start()
-    except OptionValueError:
+    except OptionValueError as ove:
-        sys.exit("[b10-stats-httpd] Error parsing options")
+        logger.fatal(STATS_HTTPD_BAD_OPTION_VALUE, ove)
+        sys.exit(1)
     except isc.cc.session.SessionError as se:
     except isc.cc.session.SessionError as se:
-        sys.exit("[b10-stats-httpd] Error creating module, "
+        logger.fatal(STATS_HTTPD_CC_SESSION_ERROR, se)
-                 + "is the command channel daemon running?")
+        sys.exit(1)
     except HttpServerError as hse:
     except HttpServerError as hse:
-        sys.exit("[b10-stats-httpd] %s" % hse)
+        logger.fatal(STATS_HTTPD_START_SERVER_ERROR, hse)
+        sys.exit(1)
     except KeyboardInterrupt as kie:
     except KeyboardInterrupt as kie:
-        sys.exit("[b10-stats-httpd] Interrupted, exiting")
+        logger.info(STATS_HTTPD_STOPPED_BY_KEYBOARD)

+ 85 - 0
src/bin/stats/stats_httpd_messages.mes

@@ -0,0 +1,85 @@
+# Copyright (C) 2011  Internet Systems Consortium, Inc. ("ISC")
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+# AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+# PERFORMANCE OF THIS SOFTWARE.
+
+# No namespace declaration - these constants go in the global namespace
+# of the stats_messages python module.
+
+% STATS_HTTPD_BAD_OPTION_VALUE bad command line argument: %1
+The stats-httpd module was called with a bad command-line argument,
+and will not start.
+
+% STATS_HTTPD_CC_SESSION_ERROR error connecting to message bus: %1
+The stats-httpd module was unable to connect to the BIND 10 command
+and control channel. A likely problem is that the message bus daemon
+(b10-msgq) is not running. The stats-httpd module will now shut down.
+
+% STATS_HTTPD_CLOSING_CC_SESSION stopping cc session
+Debug message indicating that the stats httpd module is disconnecting
+from the command and control channel.
+
+% STATS_HTTPD_CLOSING closing %1#%2
+The stats-httpd daemon will stop listening for requests on te given
+address and port number.
+
+% STATS_HTTPD_HANDLE_CONFIG reading configuration: %1
+The stats-httpd daemon has received new configuration data and will now
+process it. The (changed) data is printed.
+
+% STATS_HTTPD_RECEIVED_SHUTDOWN_COMMAND shutdown command received
+A shutdown command was sent to the stats-httpd module, and it will
+now shut down.
+
+% STATS_HTTPD_RECEIVED_STATUS_COMMAND received command to return status
+A status command was sent to the stats-httpd module, and it will
+respond with 'Stats Httpd is up.' and its PID.
+
+% STATS_HTTPD_RECEIVED_UNKNOWN_COMMAND received unknown command: %1
+An unknown command has been sent to the stats-httpd module. The
+stats-httpd module will respond with an error, and the command will
+be ignored.
+
+% STATS_HTTPD_SERVER_ERROR http server error: %1
+There was a problem initializing the http server in the stats-httpd
+module upon receiving new configuration data.The most likely cause is a
+port binding problem or a bad configuration value. The specific error
+is printed in the message. The new configuration is ignored, and an
+error is sent back.
+
+% STATS_HTTPD_SHUTDOWN shutting down
+The stats-httpd daemon will now shut down.
+
+% STATS_HTTPD_START_SERVER_ERROR http server error: %1
+There was a problem initializing the http server in the stats-httpd
+module upon startup. The most likely cause is that it was not able
+to bind to the listening port. The specific error is printed, and the
+module will shut down.
+
+% STATS_HTTPD_STARTED listening on %1#%2
+The stats-httpd daemon will now start listening for requests on the
+given address and port number.
+
+% STATS_HTTPD_STARTING_CC_SESSION starting cc session
+Debug message indicating that the stats httpd module is connecting to
+the command and control channel.
+
+% STATS_HTTPD_STOPPED_BY_KEYBOARD keyboard interrupt, shutting down
+There was a keyboard interrupt signal to stop the stats-httpd
+daemon. The daemon will now shut down.
+
+% STATS_HTTPD_UNKNOWN_CONFIG_ITEM unknown configuration item: %1
+The stats-httpd daemon received new configuration. However, one of the
+items in the configuration is unknown. The new configuration is ignored,
+and an error is sent back. As possible cause is that there was an
+upgrade problem, and the stats-httpd version is out of sync with the
+rest of the system.

+ 5 - 5
src/bin/stats/stats_messages.mes

@@ -19,6 +19,11 @@
 The stats module was called with a bad command-line argument, and will
 The stats module was called with a bad command-line argument, and will
 not start.
 not start.
 
 
+% STATS_CC_SESSION_ERROR error connecting to message bus: %1
+The stats module was unable to connect to the BIND 10 command and
+control channel. A likely problem is that the message bus daemon
+(b10-msgq) is not running. The stats module will now shut down.
+
 % STATS_RECEIVED_NEW_CONFIG received new configuration: %1
 % STATS_RECEIVED_NEW_CONFIG received new configuration: %1
 This debug message is printed when the configuration manager has sent
 This debug message is printed when the configuration manager has sent
 the stats module a configuration update.
 the stats module a configuration update.
@@ -57,11 +62,6 @@ to send statistics data to the stats module.
 There was a keyboard interrupt signal to stop the stats daemon. The
 There was a keyboard interrupt signal to stop the stats daemon. The
 daemon will now shut down.
 daemon will now shut down.
 
 
-% STATS_CC_SESSION_ERROR error connecting to message bus: %1
-The stats module was unable to connect to the BIND 10 command and
-control channel. A likely problem is that the message bus daemon
-(b10-msgq) is not running. The stats module will now shut down.
-
 % STATS_UNKNOWN_COMMAND_IN_SPEC unknown command in specification file: %1
 % STATS_UNKNOWN_COMMAND_IN_SPEC unknown command in specification file: %1
 The specification file for the stats module contains a command that
 The specification file for the stats module contains a command that
 is unknown in the implementation. The most likely cause is an
 is unknown in the implementation. The most likely cause is an