A python monitor script for use with Twitter's TwemProxy/Nutcracker memcache/redis pipelining proxy.
Python Shell
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.

README.md

Monitor script for nutcracker.

ballgazer.py inspects TwemProxy/nutcracker servers to help monitor its status and debug issues.

When run against a server with no pools specified, you will get all of the configured pools grouped as Active, inactive and broken. The Broken pools are not neccassarily permanently broken, but have had bck end server ejection events. It depends on how your pool is configured. Membership to the Active or Inactive groups is just a function of the number of client connections the server has to that pool.

I use it like so:

$ watch -d=cumulative ./ballgazer.py myhost.mydomain.com 

The output looks like:

Every 2.0s: ./ballgazer.py app06.scrippsing.com           Fri Jan 25 16:23:01 2013

app06.scrippsing.com:22222
==========================
    source : app06.mydomain.com
    uptime : 313
   version : 0.2.2
   service : nutcracker
 timestamp : 1359148981


Broken (backends/connections/server_ejections)
==============================================
              ABIL.MOBILE ( 5/4/33 ) !
         ABIL.MOBILE_back ( 5/4/26 ) !
           AIM.OAW.MOBILE ( 5/4/38 ) !
      AIM.OAW.MOBILE_back ( 5/4/36 ) !
               GVE.MOBILE ( 5/4/45 ) !
          GVE.MOBILE_back ( 5/4/42 ) !
              SAST.MOBILE ( 5/4/27 ) !
         SAST.MOBILE_back ( 5/4/20 ) !



Active (backends/connections/server_ejections)
==============================================
                     ABIL ( 5/10/0 )
                ABIL_back ( 5/10/0 )
                      AIM ( 5/13/0 )
                 AIM_back ( 5/13/0 )
                      AVP ( 5/5/0 )
                 AVP_back ( 5/5/0 )
                     BLNT ( 5/4/0 )
                BLNT_back ( 5/4/0 )



Unused (backends/connections/server_ejections)
==============================================
              BLNT.MOBILE ( 5/0/0 )
         BLNT.MOBILE_back ( 5/0/0 )
                 BSUN.TSL ( 5/0/0 )
            BSUN.TSL_back ( 5/0/0 )
                     BTOP ( 5/0/0 )
                BTOP_back ( 5/0/0 )
                     DRMN ( 5/0/0 )
                DRMN_back ( 5/0/0 )
         NPDN.VSEM.MOBILE ( 5/0/0 )

When there are issues spotted:

$ watch -d=cumulative ./ballgazer.py myhost.mydomain.com MY_CACHEGROUP