Exemple #1
0
def alert():
        zk_dst = ZKClient(ZK_ADDR)
        stat = dict()
        redis_conn= []
        title = zk_dst.get_children(MQ_PATH+"msgmap")
        shard = zk_dst.get_children(MQ_PATH+"redis")
        for i in shard:
                child=zk_dst.get_children(MQ_PATH+"redis/"+i+"/.service_nodes")
                for k in child:
                        addr=k.split(':')
                        redis_conn.append(redis.Redis(addr[0], int(addr[1])))

        flag = False
        for i in title:
                for j in redis_conn:
                        if not stat.has_key(i):
                                stat[i]=0
                        len = j.llen(i)
                        stat[i] += len
        for i in stat:
                if stat[i]>ALERT_MSG_NUM:
                        flag=True
                        break

        if not flag:
                print "无积压消息"
                return

        subject = "MQ积压消息报警"
        body   = '\n'
        body   += time.asctime() + "\n"
        body   += 'Title  \t    Num' + "\n"
        for i in stat:
                body += 'title:' + i + '\t len:' + str(stat[i])+'\n'

        send_mail(STAT_MAIL_TO, subject, body)
Exemple #2
0
    # create on first server
    zk = ZKClient(servers[0], options.timeout)

    rootpath = "/zk-smoketest"

    if zk.exists(rootpath):
        if not options.quiet:
            print("Node %s already exists, attempting reuse" % (rootpath))
    else:
        zk.create(
            rootpath, "smoketest root, delete after test done, created %s" %
            (datetime.datetime.now().ctime()))

    # make sure previous cleaned up properly
    children = zk.get_children(rootpath)
    if len(children) > 0:
        raise SmokeError("there should not be children in %s"
                         "root data is: %s, count is %d" %
                         (rootpath, zk.get(rootpath), len(children)))

    zk.close()

    def child_path(i):
        return "%s/session_%d" % (rootpath, i)

    # create znodes, one znode per session (client), one session per server
    for i, server in enumerate(servers):
        # ensure this server is up to date with leader
        sessions[i]. async ()
Exemple #3
0
    # create on first server
    zk = ZKClient(servers[0], options.timeout)

    rootpath = "/zk-smoketest"

    if zk.exists(rootpath):
        if not options.quiet:
            print("Node %s already exists, attempting reuse" % (rootpath))
    else:
        zk.create(rootpath,
                  "smoketest root, delete after test done, created %s" %
                  (datetime.datetime.now().ctime()))

    # make sure previous cleaned up properly
    children = zk.get_children(rootpath)
    if len(children) > 0:
        raise SmokeError("there should not be children in %s"
                         "root data is: %s, count is %d"
                         % (rootpath, zk.get(rootpath), len(children)))

    zk.close()

    def child_path(i):
        return "%s/session_%d" % (rootpath, i)

    # create znodes, one znode per session (client), one session per server
    for i, server in enumerate(servers):
        # ensure this server is up to date with leader
        sessions[i].async()
Exemple #4
0
class ZookeeperStore(object):

    TIMEOUT = 1000

    def __init__(self,
                 verbose=True,
                 database='test',
                 table='targets',
                 zkhost='127.0.0.1:32181'):
        self.VERBOSE = verbose
        self.path = None
        self.ZK_HOST = zkhost
        self.database = "/" + database
        self.table = os.path.join(self.database, table)

        self.zk = ZKClient(self.ZK_HOST, timeout=self.TIMEOUT)
        self.say("login ok")
        self._init_zk()

    def __del__(self):
        self.zk.close()

    def _init_zk(self):
        nodes = (self.database, self.table)
        for node in nodes:
            if not self.zk.exists(node):
                try:
                    self.zk.create(node, "")
                except:
                    pass

    def create(self, path, msg, flags=0):
        msg = self.encode(msg)
        self.path = os.path.join(self.table, path)
        nodes = self.path.split("/")
        # FIXME
        for i in range(4, len(nodes)):
            node = "/".join(nodes[:i])
            if not self.zk.exists(node):
                try:
                    self.zk.create(node, "")
                except:
                    pass
        if not self.zk.exists(self.path):
            self.path = self.zk.create(self.path, msg, flags=flags)
        else:
            self.zk.set(self.path, msg)
        #self.path = os.path.basename(self.path)
        self.say("register ok! I'm %s" % self.path)

    def get_children(self, path=""):
        if not path:
            path = self.table
        children = self.zk.get_children(path)
        return children

    def get(self, node):
        msg = self.zk.get(node)
        return msg

    def decode(self, obj):
        return obj

    def encode(self, msg):
        return msg

    def say(self, msg):
        if self.VERBOSE:
            if self.path:
                log.info(msg)
            else:
                log.info(msg)
Exemple #5
0
    #    print "delete ret:", ret
    #except:
    #    pass
    #try:
    #    ret = zk.create("/worker", "")
    #    print "create ret:", ret
    #except Exception, reason:
    #    print "create failed", reason
    #    pass
    try:
        ret = zk.create("/worker/work", "100", zookeeper.EPHEMERAL | zookeeper.SEQUENCE)
        print "create ret:", ret
    except Exception, reason:
        print "create failed", reason
        pass
    l = zk.get_children("/")
    print "children:", l
    #work_v = zk.get("/work")
    #print "work_v:", work_v
    lock_name = zk_lock.get_lock(zk, "/lock")
    exit()
    logger = init_logger()

    logger.info("logger init done.")

    def safe_reg_self(parent_node, node_id):
        l = zk.exists(parent_node)
        if not l:
            zk.create(parent_node, "{}", config.zknode_type_ephemeral)
        l = zk.exists(parent_node)
        if not l:
Exemple #6
0
class GJZookeeper(object):

    ZK_HOST = "localhost:2181"
    ROOT = "/app"
    WORKERS_PATH = join(ROOT, "workers")
    MASTERS_NUM = 1
    TIMEOUT = 10000

    def __init__(self, verbose = True):
        self.VERBOSE = verbose
        self.masters = []
        self.is_master = False
        self.path = None

        self.zk = ZKClient(self.ZK_HOST, timeout = self.TIMEOUT)
        self.say("login ok!")
        # init
        self.__init_zk()
        # register
        self.register()

    def __init_zk(self):
        """
        create the zookeeper node if not exist
        """
        nodes = (self.ROOT, self.WORKERS_PATH)
        for node in nodes:
            if not self.zk.exists(node):
                try:
                    self.zk.create(node, "")
                except:
                    pass

    @property
    def is_slave(self):
        return not self.is_master

    def register(self):
        """
        register a node for this worker
        """
        self.path = self.zk.create(self.WORKERS_PATH + "/worker", "1", flags=zookeeper.EPHEMERAL | zookeeper.SEQUENCE)
        self.path = basename(self.path)
        self.say("register ok! I'm %s" % self.path)
        # check who is the master
        self.get_master()

    def get_master(self):
        """
        get children, and check who is the smallest child
        """
        @watchmethod
        def watcher(event):
            self.say("child changed, try to get master again.")
            self.get_master()

        children = self.zk.get_children(self.WORKERS_PATH, watcher)
        children.sort()
        self.say("%s's children: %s" % (self.WORKERS_PATH, children))

        # check if I'm master
        self.masters = children[:self.MASTERS_NUM]
        if self.path in self.masters:
            self.is_master = True
            self.say("I've become master!")
        else:
            self.say("%s is masters, I'm slave" % self.masters)


    def say(self, msg):
        """
        print messages to screen
        """
        if self.VERBOSE:
            if self.path:
                if self.is_master:
                    log.info("[ %s(%s) ] %s" % (self.path, "master" , msg))
                else:
                    log.info("[ %s(%s) ] %s" % (self.path, "slave", msg))
            else:
                log.info(msg)
Exemple #7
0
class GJZookeeper(object):

    ZK_HOST = "localhost:2181"
    ROOT = "/app"
    WORKERS_PATH = join(ROOT, "workers")
    MASTERS_NUM = 1
    TIMEOUT = 10000

    def __init__(self, verbose=True):
        self.VERBOSE = verbose
        self.masters = []
        self.is_master = False
        self.path = None

        self.zk = ZKClient(self.ZK_HOST, timeout=self.TIMEOUT)
        self.say("login ok!")
        # init
        self.__init_zk()
        # register
        self.register()

    def __init_zk(self):
        """
        create the zookeeper node if not exist
        """
        nodes = (self.ROOT, self.WORKERS_PATH)
        for node in nodes:
            if not self.zk.exists(node):
                try:
                    self.zk.create(node, "")
                except:
                    pass

    @property
    def is_slave(self):
        return not self.is_master

    def register(self):
        """
        register a node for this worker
        """
        self.path = self.zk.create(self.WORKERS_PATH + "/worker",
                                   "1",
                                   flags=zookeeper.EPHEMERAL
                                   | zookeeper.SEQUENCE)
        self.path = basename(self.path)
        self.say("register ok! I'm %s" % self.path)
        # check who is the master
        self.get_master()

    def get_master(self):
        """
        get children, and check who is the smallest child
        """
        @watchmethod
        def watcher(event):
            self.say("child changed, try to get master again.")
            self.get_master()

        children = self.zk.get_children(self.WORKERS_PATH, watcher)
        children.sort()
        self.say("%s's children: %s" % (self.WORKERS_PATH, children))

        # check if I'm master
        self.masters = children[:self.MASTERS_NUM]
        if self.path in self.masters:
            self.is_master = True
            self.say("I've become master!")
        else:
            self.say("%s is masters, I'm slave" % self.masters)

    def say(self, msg):
        """
        print messages to screen
        """
        if self.VERBOSE:
            if self.path:
                log.info(
                    "[ %s(%s) ] %s" %
                    (self.path, "master" if self.is_master else "slave", msg))
            else:
                log.info(msg)
Exemple #8
0
import zkclient
from zkclient import ZKClient

zk = ZKClient("10.187.176.194:2181")

newKeyList = [
    "goods_homef~~~brand", "qrqm_hp_cfb~~~brand", "goods_homef~~~c3brand",
    "qrqm_hp_cfb~~~c3brand_0", "goods_homef~~~c3", "qrqm_hp_cfb~~~c3",
    "qrqm_hp_cfb~~~channelBrand_0", "qrqm_hp_cfb~~~channelC3Brand_0",
    "qrqm_hp_cfb~~~channelC3_0", "qrqm_hp_cfb~~~channel", "cd3_fzxp_fs",
    "cd3_jdjx_fs", "cd3_jdmarket_fs", "cd3_newsh_fs", "cd3_oversea_fs",
    "cd3_7toreturn_fs", "seckill_cfb~~~brand_code",
    "seckill_cfb~~~cid3_discount_ratio_cat", "seckill_cfb~~~cid3",
    "seckill_cfb~~~cid3_pw3_ids", "seckill_cfb~~~discount_amount_cat",
    "seckill_cfb~~~discount_ratio_cat"
]

created = zk.exists("/root/redis")

if created:
    print 'deleting /root/redis ...'
    oldKeyList = zk.get_children("/root/redis")
    for k in oldKeyList:
        zk.delete("/root/redis/" + k)
else:
    zk.create("/root/redis", "")
for k in newKeyList:
    zk.create("/root/redis/" + k, k)

print 'add keys on zk success!'
Exemple #9
0
class ZookeeperStore(object):
  
  ZK_HOST = "127.0.0.1:32181"
  TIMEOUT = 1000

  def __init__(self, verbose = True, database='/test', table='targets'):
    self.VERBOSE = verbose
    self.path = None
    self.database = database
    self.table = os.path.join(self.database, table)

    self.zk = ZKClient(self.ZK_HOST, timeout = self.TIMEOUT)
    self.say("login ok")
    self._init_zk()

  def __del__(self):
    self.zk.close()

  def _init_zk(self):
    nodes = (self.database, self.table)
    for node in nodes:
      if not self.zk.exists(node):
        try:
          self.zk.create(node, "")
        except:
          pass

  def create(self, path, msg, flags=0):
    msg = self.encode(msg)
    self.path = os.path.join(self.table, path)
    nodes = self.path.split("/")
    # FIXME
    for i in range(4,len(nodes)):
      node = "/".join(nodes[:i])
      if not self.zk.exists(node):
        try:
          self.zk.create(node, "")
        except:
          pass
    if not self.zk.exists(self.path):
      self.path = self.zk.create(self.path, msg, flags=flags)
    else:
      self.zk.set(self.path, msg)
    #self.path = os.path.basename(self.path)
    self.say("register ok! I'm %s" % self.path)
  
  def get_children(self, path=""):
    if not path:
      path = self.table
    children = self.zk.get_children(path)
    return children

  def get(self, node):
    msg = self.zk.get(node)
    return msg

  def decode(self, obj):
    return obj

  def encode(self, msg):
    return msg

  def say(self, msg):
    if self.VERBOSE:
      if self.path:
        log.info(msg)
      else:
        log.info(msg)
Exemple #10
0
class GJZookeeper(object):

  ZK_HOST = "localhost:2181"
  ROOT = "/Roles"
  WORKERS_PATH = join(ROOT, "workers")
  TIMEOUT = 10000
  RULE_PATH = "/opt/interlive/nginx/conf/self_rules.xml"

  def __init__(self, verbose = True):
    self.VERBOSE = verbose
    self.path = None

    self.APP_ROOT = "/Applications"
    self.APP_CONF = join(self.APP_ROOT,"NginxConf")

    self.zk = ZKClient(self.ZK_HOST, timeout = self.TIMEOUT)
    self.say("login zookeeper successfully!")
    # init
    self.create_roles_znode()
    # register
    self.register()
    self.watch_app_znode()

  def create_roles_znode(self):
    """
    create the zookeeper node if not exist
    |-Roles
       |-workers
    """
    nodes = (self.ROOT, self.WORKERS_PATH)
    for node in nodes: 
      if not self.zk.exists(node):
        try:
          self.zk.create(node, "")
        except:
          pass

  def register(self):
    """
    register a node for this worker,znode type : EPHEMERAL | SEQUENCE
    |-Roles
       |-workers
           |-worker000000000x      ==>>master
           |-worker000000000x+1    ==>>worker
           ....
    """
    self.path = self.zk.create(self.WORKERS_PATH + "/worker", "1", flags=zookeeper.EPHEMERAL | zookeeper.SEQUENCE)
    self.path = basename(self.path)
    self.say("I'm %s" % self.path)

  def watch_app_znode(self):
    @watchmethod
    def watcher(event):
      self.say("first watcher")
      child_nodes = self.zk.get_children(self.APP_CONF)
      child_nodes.sort(reverse=True)
      data = self.zk.get(self.APP_CONF + "/" + child_nodes[0])
      self.say(data[0])
      file_object = open(self.RULE_PATH, 'w')
      try:
        file_object.write(data[0])
      finally:
        file_object.close()
      self.zk.get_children(self.APP_CONF, watcher)

    self.zk.get_children(self.APP_CONF, watcher)

  def say(self, msg):
    """
    print messages to screen
    """
    if self.VERBOSE:
      if self.path:
        log.info("[ %s ] %s" % (self.path, msg))
      else:
        log.info(msg)
Exemple #11
0
class GJZookeeper(object):

  ZK_HOST = "localhost:2181"
  ROOT = "/Roles"
  WORKERS_PATH = join(ROOT, "agents")
  MASTERS_NUM = 1
  TIMEOUT = 10000

  def __init__(self, verbose = True):
    self.VERBOSE = verbose
    self.masters = []
    self.is_master = False
    self.path = None

    self.APP_ROOT = "/Applications"
    self.APP_CONF = join(self.APP_ROOT,"NginxConf")

    self.zk = ZKClient(self.ZK_HOST, timeout = self.TIMEOUT)
    self.say("login zookeeper successfully!")
    # init
    self.create_roles_znode()
    # register
    self.register()

  def create_roles_znode(self):
    """
    create the zookeeper node if not exist
    |-Roles
       |-workers
    """
    nodes = (self.ROOT, self.WORKERS_PATH)
    for node in nodes: 
      if not self.zk.exists(node):
        try:
          self.zk.create(node, "")
        except:
          pass

  @property
  def is_slave(self):
    return not self.is_master

  def register(self):
    """
    register a node for this worker,znode type : EPHEMERAL | SEQUENCE
    |-Roles
       |-workers
           |-worker000000000x      ==>>master
           |-worker000000000x+1    ==>>worker
           ....
    """
    self.path = self.zk.create(self.WORKERS_PATH + "/worker", "1", flags=zookeeper.EPHEMERAL | zookeeper.SEQUENCE)
    self.path = basename(self.path)
    self.say("I'm %s" % self.path)
    # check who is the master
    self.get_master()

  def get_master(self):
    """
    get children, and check who is the smallest child
    """
    @watchmethod
    def watcher(event):
      self.say("child changed, try to get master again.")
      self.get_master()

    children = self.zk.get_children(self.WORKERS_PATH, watcher)
    children.sort()
    self.say("%s's children: %s" % (self.WORKERS_PATH, children)) 

    # check if I'm master
    self.masters = children[:self.MASTERS_NUM]
    if self.path in self.masters:
      self.is_master = True
      self.say("I've become master!")
      self.create_app_znode()
    else:
      self.say("%s is masters, I'm slave" % self.masters)

  def create_app_znode(self):
    """
    create the zookeeper node if not exist
    |-Applications
          |-NginxConf
    """
    nodes = (self.APP_ROOT, self.APP_CONF)
    for node in nodes: 
      if not self.zk.exists(node):
        try:
          self.say("Create znode [%s] ..."%(node))
          self.zk.create(node, "")
        except:
          pass

  def create_conf_znode(self, data):
    """
    create the zookeeper node's children if not exist,contents is conf data
    |-Applications
          |-NginxConf
              |-item-000000000x => data
    """
    self.child_node = join(self.APP_CONF, "conf-")
    path = self.zk.create(self.child_node, data, flags=zookeeper.SEQUENCE)
    self.say("create znode %s"%path)

  def say(self, msg):
    """
    print messages to screen
    """
    if self.VERBOSE:
      if self.path:
        log.info("[ %s(%s) ] %s" % (self.path, "master" if self.is_master else "slave", msg))
      else:
        log.info(msg)
Exemple #12
0
    #    l = zk.create(config.root_path + config.node_id, "", config.zknode_type_ephemeral)
    #    print l
    #except Exception, reason:
    #    print "create node fail:", str(reason)
    #    logger.error("create node fail:" + str(reason))
    #    exit()

    try:
        l = zk.create(config.client_root_path, "{}", 0)
        print l
    except zookeeper.NodeExistsException, reason:
        #忽略节点存在错误
        pass
    except Exception, reason:
        print "create parent node fail:", str(reason)
        logger.error("create parent node fail:" + str(reason))

    l = zk.get_children(config.client_root_path, watchmethod(children_watcher))

    l = zk.exists(config.client_root_path, watchmethod(change_watcher))

    l = zk.get_children(config.server_root_path, watchmethod(server_watcher))

    #l = zk.exists(config.server_root_path, watchmethod(server_change_watcher))

    while 1:
        nodes_info = gen_nodes_info(zk)
        nodes_info_str = ujson.dumps(nodes_info)
        r_dbhd.set(config.redis_key, nodes_info_str)
        time.sleep(1)