Changeset 701 for branches/0.4


Ignore:
Timestamp:
03/21/13 16:53:24 (11 years ago)
Author:
ramonb
Message:
  • some cleanup
  • only look for gmetric binary if all else fails
  • get METRIC_MAX_VAL_LEN from ganglia config
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/0.4/jobmond/jobmond.py

    r700 r701  
    5555def processArgs( args ):
    5656
    57     SHORT_L        = 'p:hvc:'
    58     LONG_L        = [ 'help', 'config=', 'pidfile=', 'version' ]
    59 
    60     global PIDFILE
    61     PIDFILE        = None
    62 
    63     config_filename    = '/etc/jobmond.conf'
     57    SHORT_L      = 'p:hvc:'
     58    LONG_L       = [ 'help', 'config=', 'pidfile=', 'version' ]
     59
     60    global PIDFILE JOBMOND_CONF
     61    PIDFILE      = None
     62
     63    JOBMOND_CONF = '/etc/jobmond.conf'
    6464
    6565    try:
     
    7777        if opt in [ '--config', '-c' ]:
    7878       
    79             config_filename    = value
     79            JOBMOND_CONF = value
    8080
    8181        if opt in [ '--pidfile', '-p' ]:
    8282
    83             PIDFILE        = value
     83            PIDFILE      = value
    8484       
    8585        if opt in [ '--help', '-h' ]:
     
    9393            sys.exit( 0 )
    9494
    95     return loadConfig( config_filename )
     95    return loadConfig( JOBMOND_CONF )
    9696
    9797class GangliaConfigParser:
     
    459459    global BATCH_API, QUEUE, GMETRIC_TARGET, USE_SYSLOG
    460460    global SYSLOG_LEVEL, SYSLOG_FACILITY, GMETRIC_BINARY
    461 
    462     DEBUG_LEVEL    = cfg.getint( 'DEFAULT', 'DEBUG_LEVEL' )
    463 
    464     DAEMONIZE    = cfg.getboolean( 'DEFAULT', 'DAEMONIZE' )
     461    global METRIC_MAX_VAL_LEN
     462
     463    DEBUG_LEVEL = cfg.getint( 'DEFAULT', 'DEBUG_LEVEL' )
     464
     465    DAEMONIZE   = cfg.getboolean( 'DEFAULT', 'DAEMONIZE' )
    465466
    466467    SYSLOG_LEVEL    = -1
    467     SYSLOG_FACILITY    = None
     468    SYSLOG_FACILITY = None
    468469
    469470    try:
    470         USE_SYSLOG    = cfg.getboolean( 'DEFAULT', 'USE_SYSLOG' )
     471        USE_SYSLOG  = cfg.getboolean( 'DEFAULT', 'USE_SYSLOG' )
    471472
    472473    except ConfigParser.NoOptionError:
    473474
    474         USE_SYSLOG    = True
     475        USE_SYSLOG  = True
    475476
    476477        debug_msg( 0, 'ERROR: no option USE_SYSLOG found: assuming yes' )
     
    479480
    480481        try:
    481             SYSLOG_LEVEL    = cfg.getint( 'DEFAULT', 'SYSLOG_LEVEL' )
     482            SYSLOG_LEVEL = cfg.getint( 'DEFAULT', 'SYSLOG_LEVEL' )
    482483
    483484        except ConfigParser.NoOptionError:
    484485
    485486            debug_msg( 0, 'ERROR: no option SYSLOG_LEVEL found: assuming level 0' )
    486             SYSLOG_LEVEL    = 0
     487            SYSLOG_LEVEL = 0
    487488
    488489        try:
     
    498499    try:
    499500
    500         BATCH_SERVER        = cfg.get( 'DEFAULT', 'BATCH_SERVER' )
     501        BATCH_SERVER = cfg.get( 'DEFAULT', 'BATCH_SERVER' )
    501502
    502503    except ConfigParser.NoOptionError:
     
    505506        #
    506507
    507         BATCH_SERVER        = cfg.get( 'DEFAULT', 'TORQUE_SERVER' )
    508         api_guess        = 'pbs'
     508        BATCH_SERVER = cfg.get( 'DEFAULT', 'TORQUE_SERVER' )
     509        api_guess    = 'pbs'
    509510   
    510511    try:
    511512   
    512         BATCH_POLL_INTERVAL    = cfg.getint( 'DEFAULT', 'BATCH_POLL_INTERVAL' )
     513        BATCH_POLL_INTERVAL = cfg.getint( 'DEFAULT', 'BATCH_POLL_INTERVAL' )
    513514
    514515    except ConfigParser.NoOptionError:
     
    517518        #
    518519
    519         BATCH_POLL_INTERVAL    = cfg.getint( 'DEFAULT', 'TORQUE_POLL_INTERVAL' )
    520         api_guess        = 'pbs'
     520        BATCH_POLL_INTERVAL = cfg.getint( 'DEFAULT', 'TORQUE_POLL_INTERVAL' )
     521        api_guess           = 'pbs'
    521522   
    522523    try:
    523524
    524         GMOND_CONF        = cfg.get( 'DEFAULT', 'GMOND_CONF' )
     525        GMOND_CONF          = cfg.get( 'DEFAULT', 'GMOND_CONF' )
    525526
    526527    except ConfigParser.NoOptionError:
     
    528529        # Not specified: assume /etc/gmond.conf
    529530        #
    530         GMOND_CONF        = '/etc/gmond.conf'
    531 
    532     ganglia_cfg        = GangliaConfigParser( GMOND_CONF )
     531        GMOND_CONF          = '/etc/gmond.conf'
     532
     533    ganglia_cfg     = GangliaConfigParser( GMOND_CONF )
    533534
    534535    # Let's try to find the GMETRIC_TARGET ourselves first from GMOND_CONF
    535536    #
    536     gmetric_dest_ip        = ganglia_cfg.getStr( 'udp_send_channel', 'mcast_join' )
     537    gmetric_dest_ip = ganglia_cfg.getStr( 'udp_send_channel', 'mcast_join' )
    537538
    538539    if not gmetric_dest_ip:
     
    540541        # Maybe unicast target then
    541542        #
    542         gmetric_dest_ip        = ganglia_cfg.getStr( 'udp_send_channel', 'host' )
    543 
    544     gmetric_dest_port    = ganglia_cfg.getStr( 'udp_send_channel', 'port' )
    545 
     543        gmetric_dest_ip = ganglia_cfg.getStr( 'udp_send_channel', 'host' )
     544
     545    gmetric_dest_port   = ganglia_cfg.getStr( 'udp_send_channel', 'port' )
     546
     547    #TODO: use multiple udp send channels (if found)
    546548    if gmetric_dest_ip and gmetric_dest_port:
    547549
    548         GMETRIC_TARGET    = '%s:%s' %( gmetric_dest_ip, gmetric_dest_port )
     550        GMETRIC_TARGET  = '%s:%s' %( gmetric_dest_ip, gmetric_dest_port )
    549551    else:
    550552
    551         debug_msg( 0, "WARNING: Can't parse udp_send_channel from: '%s'" %GMOND_CONF )
     553        debug_msg( 0, "WARNING: Can't parse udp_send_channel from: '%s' - Trying: %s" %( GMOND_CONF, JOBMOND_CONF ) )
    552554
    553555        # Couldn't figure it out: let's see if it's in our jobmond.conf
     
    558560
    559561        # Guess not: now just give up
    560         #
     562       
    561563        except ConfigParser.NoOptionError:
    562564
     
    565567            debug_msg( 0, "ERROR: GMETRIC_TARGET not set: internal Gmetric handling aborted. Failing back to DEPRECATED use of gmond.conf/gmetric binary. This will slow down jobmond significantly!" )
    566568
    567     gmetric_bin    = findGmetric()
    568 
    569     if gmetric_bin:
    570 
    571         GMETRIC_BINARY        = gmetric_bin
    572     else:
    573         debug_msg( 0, "WARNING: Can't find gmetric binary anywhere in $PATH" )
    574 
    575         try:
    576 
    577             GMETRIC_BINARY        = cfg.get( 'DEFAULT', 'GMETRIC_BINARY' )
    578 
    579         except ConfigParser.NoOptionError:
    580 
    581             debug_msg( 0, "FATAL ERROR: GMETRIC_BINARY not set and not in $PATH" )
    582             sys.exit( 1 )
    583 
     569            gmetric_bin    = findGmetric()
     570
     571            if gmetric_bin:
     572
     573                GMETRIC_BINARY     = gmetric_bin
     574            else:
     575                debug_msg( 0, "WARNING: Can't find gmetric binary anywhere in $PATH" )
     576
     577                try:
     578
     579                    GMETRIC_BINARY = cfg.get( 'DEFAULT', 'GMETRIC_BINARY' )
     580
     581                except ConfigParser.NoOptionError:
     582
     583                    debug_msg( 0, "FATAL ERROR: GMETRIC_BINARY not set and not in $PATH" )
     584                    sys.exit( 1 )
     585
     586    #TODO: is this really still needed or should be automatic
    584587    DETECT_TIME_DIFFS    = cfg.getboolean( 'DEFAULT', 'DETECT_TIME_DIFFS' )
    585588
    586     BATCH_HOST_TRANSLATE    = getlist( cfg.get( 'DEFAULT', 'BATCH_HOST_TRANSLATE' ) )
     589    BATCH_HOST_TRANSLATE = getlist( cfg.get( 'DEFAULT', 'BATCH_HOST_TRANSLATE' ) )
    587590
    588591    try:
     
    607610        QUEUE        = None
    608611
     612    METRIC_MAX_VAL_LEN = ganglia_cfg.getInt( 'globals', 'max_udp_msg_len' )
     613
    609614    return True
    610615
     
    616621
    617622    return (parts[0], string.join(parts[1:], "."))
    618 
    619 METRIC_MAX_VAL_LEN = 900
    620623
    621624class DataProcessor:
Note: See TracChangeset for help on using the changeset viewer.