[tor-bugs] #13008 [Tor Sysadmin Team]: Create a Nagios check to ensure that Onionoo is updating correctly

Tor Bug Tracker & Wiki blackhole at torproject.org
Fri Sep 5 19:49:43 UTC 2014


#13008: Create a Nagios check to ensure that Onionoo is updating correctly
-----------------------------------+--------------------
     Reporter:  karsten            |      Owner:
         Type:  enhancement        |     Status:  closed
     Priority:  normal             |  Milestone:
    Component:  Tor Sysadmin Team  |    Version:
   Resolution:  fixed              |   Keywords:
Actual Points:                     |  Parent ID:
       Points:                     |
-----------------------------------+--------------------

Comment (by atagar):

 Hi Karsten, your script looks real nice!

 weasel: karsten emailed a handful of us a few minutes ago asking for
 feedback

 -----

 {{{
 # Standard Nagios return codes
 OK = 0
 WARNING = 1
 CRITICAL = 2
 UNKNOWN = 3
 }}}

 This could also be...

 {{{
 # Standard Nagios return codes

 OK, WARNING, CRITICAL, UNKNOWN = range(4)
 }}}

 -----
 {{{
 def end(status, message):
   """Exit the plugin with first arg as the return code and second arg as
      the message to output."""

   if status == OK:
     print "ONIONOO OK: %s" % message
     sys.exit(OK)
   elif status == WARNING:
     print "ONIONOO WARNING: %s" % message
     sys.exit(WARNING)
   elif status == CRITICAL:
     print "ONIONOO CRITICAL: %s" % message
     sys.exit(CRITICAL)
   else:
     print "ONIONOO UNKNOWN: %s" % message
     sys.exit(UNKNOWN)
 }}}

 Minor nitpick but the sys.exit() calls are redundant...

 {{{
 def end(status, message):
   """Exit the plugin with first arg as the return code and second arg as
      the message to output."""

   if status == OK:
     print "ONIONOO OK: %s" % message
   elif status == WARNING:
     print "ONIONOO WARNING: %s" % message
   elif status == CRITICAL:
     print "ONIONOO CRITICAL: %s" % message
   else:
     print "ONIONOO UNKNOWN: %s" % message
     status = UNKNOWN

   sys.exit(status)
 }}}

 -----

 {{{
 def main():
   """Call function to check whether Onionoo service is working."""

   result, message = test_onionoo()
   end(result, message)

 if __name__ == "__main__":
   try:
     main()
   except KeyboardInterrupt:
     end(CRITICAL, "Caught Control-C...")
 }}}

 This and end() are brief enough that personally I'd just combine it all.

 {{{
 if __name__ == "__main__":
   result, message = None, None

   try:
     result, message = test_onionoo()
   except KeyboardInterrupt:
     result, message = CRITICAL, "Caught Control-C..."
   finally:
     if status == OK:
       print "ONIONOO OK: %s" % message
     elif status == WARNING:
       print "ONIONOO WARNING: %s" % message
     elif status == CRITICAL:
       print "ONIONOO CRITICAL: %s" % message
     else:
       print "ONIONOO UNKNOWN: %s" % message
       status = UNKNOWN

     sys.exit(status)
 }}}

--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/13008#comment:4>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online


More information about the tor-bugs mailing list