测试环境管理之线上日志实时收集过滤转发(2)

发表于:2013-01-15来源:Anjuke QA Team作者:sdhou点击数: 标签:管理
warden:展示日志的工具,与中间节点warden-aggr建立socket connect连接,用zeromq sub模式接收消息后解压缩再用print输出消息,消息的 send 和 recv都用multipart模式,所以在

  warden:展示日志的工具,与中间节点warden-aggr建立socket connect连接,用zeromq sub模式接收消息后解压缩再用print输出消息,消息的 send 和 recv都用multipart模式,所以在warden上可以指定只看某一台机器的日志.

  sample code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Warden:

    _sock = None

    def __init__(self, connectInfo):
        context = zmq.Context()
        self._sock = context.socket(zmq.SUB)
        self._sock.setsockopt(zmq.SUBSCRIBE, '')
        self._sock.connect(connectInfo)

    def loop(self, filter):
        while 1:
            msg = self._sock.recv_multipart()
            if cmp(msg[0], filter) != -1:
                print zlib.decompress(msg[1]),

  问题:

  -定义和规范identity 目前只能通过机器过滤日志,一台机器上通常有很多种日志,我们希望定义详细的identity来区分和过滤日志.

  -转发模式 目前的过滤全是在warden上做的,就等于把所有日志收下来后不用就扔掉来过滤,我们希望使用类似订阅的模式,客户端发送一个订阅消息来接收指定的日志,服务器收到订阅消息才广播日志,这样能省很多网络流量.

  最后:

  我们把warden定义成一个长期的基础项目,可以不停的改进.

  This entry was posted in 平台工具 by sdhou. Bookmark the permalink.

原文转自:http://www.ltesting.net