capillary, Storm + Kafka 状态检查器

分享于 

5分钟阅读

GitHub

  繁體 雙語
Storm Spout + Kafka State Inspector
  • 源代码名称:capillary
  • 源代码网址:http://www.github.com/keenlabs/capillary
  • capillary源代码文档
  • capillary源代码下载
  • Git URL:
    git://www.github.com/keenlabs/capillary.git
    Git Clone代码到本地:
    git clone http://www.github.com/keenlabs/capillary
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/keenlabs/capillary
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    

    毛细管是一个小型的网络应用程序,它显示基于 Kafka> = 0.8的kafka风暴拓扑的状态和增量。 它还提供了一个用于获取用于监视目的的信息的API。

    概述

    Capillary

    毛细管执行以下操作:

    • 从管理员那里获取有关运行拓扑的信息
    • 获取有关主题的信息,并从Zookeeper的风暴spout状态中偏移
    • 从动物园管理员那里获取关于分区的领导者信息
    • 从 Kafka 获取有关分区主机的最新偏移量的信息
    • 可选显示来自 Kafka的消息。
    API

    你可以 /api/status?toporoot=$TOPOROOT&topic=$TOPIC 获取JSON输出。

    电子邮件名称

    Keen 我们在工厂命名我们的项目。 服务经常使用树或者大型工厂名称,大型基础设施项目可能使用更通用的名称。

    毛细管动作通过植物木质部的一个移动水。 由于 Kafka 和风暴通过我们的基础设施处理数据( 水) 流,这似乎是一个 !

    运行它

    想运行它太棒了这是一个 Play Framework的应用程序,所以它可以运行所有其他播放应用程序:? !

    
    $ sbt universal:package-zip-tarball
    
    
    ... lots of crazy computer talk.. .
    
    
    [success] Total time: 4 s, completed Aug 8, 2014 2:04:06 PM
    
    
    
    

    你应该在以下位置找到一个 target/universal/capillary-VERSION.tgz

    That文件可以是 untarballerated ( 或者什么技术术语) 并像这样运行:

    
    tar xzf capillary-1.2.tgz
    
    
    cd capillary-1.2
    
    
    bin/capillary
    
    
    Play server process ID is 24223
    
    
    [info] play - Application started (Prod)
    
    
    [info] play - Listening for HTTP on/0:0:0:0:0:0:0:0:9000
    
    
    
    

    然后,你可以通过你的网络浏览器通过一些参数点击该网址:

    http://127.0.0.1:9000

    毛细血管将尝试从动物园里挖掘信息来显示你运行的拓扑。

    配置

    通过使用 Play,毛细管使用了类型安全配置,因此你有许多选择。

    最简单的方法是在启动应用程序时指定属性,或者在运行时包含 conf/application-local.conf。 以下是我们的运行时属性:

    
    bin/capillary -Dcapillary.zookeepers=sj01-prod-zk-0000:2181,sj01-prod-zk-0001:2181,sj01-prod-zk-0002:2181 -Dcapillary.kafka.zkroot=kafka8 -Dcapillary.storm.zkroot=keen_storm
    
    
    
    

    以下是配置选项:

    capillary.zookeepers

    将它设置为ZKs的列表,就像它使用 host1:2181,host2:2181 一样。

    capillary.kafka. zkroot

    如果你的Kafka chroots在Zookeeper的子目录( 或者不管它叫什么) 中,你会想设置这个。 我们从 0.7升级后使用'kafka8'。

    capillary.storm. zkroot

    如果你的风暴chroots在Zookeeper的子目录( 或者不管它叫什么) 中,你会想设置这个。 我们使用'keen风暴'。

    capillary.kafkas

    将这里设置设置为Kafkas的列表( 如下所示: sjc01-staging-kafka-0000:9092,sjc01-staging-kafka-0001:9092,sjc01-staging-kafka-0002:9092,sjc01-staging-kafka-0003:9092,sjc01-staging-kafka-0004:9092 )

    其他便笺
    • 因为 Kafka ( 在写作的时候) 没有 2.11工件并且爆炸,所以使用 Scala 2.10.4
    • 不使用表,所以每次刷新页面时更新
    结构

    Kafka的存储在一个ZK结构中,如下所示:

    /$SPOUT_ROOT/$CONSUMER_ID/$PARTITION_ID

    每个 $PARTITION_ID 将状态存储为一个看起来像的JSON对象:

    {
     "topology": {
     "id": "$SOME_UNIQUE_ID",
     "name": "$TOPOLOGY_NAME" },
     "offset": $CURRENT_OFFSET,
     "partition": $PARTITION_NUMBER,
     "broker": {
     "host": "$HOST_ADDRESS",
     "port": 9092 },
     "topic": "$TOPIC_NAME"}

    STA  STAT  State  kafka  Inspect  Storm