CentOS下zipkin部署

Zipkin 是 Twitter 的一个开源项目,允许开发者收集 Twitter 各个服务上的监控数据,并提供查询接口。zipkin是Twitter基于Google的Dapper这篇论文编写的,因为是Twitter做的东西,很多依赖包都已经被墙,所以在编译、部署的时候一定要翻墙。

前期环境准备

zipkin用scala语言编写的,使用Cassandra数据库作为存储,所以在环境上我们要准备java环境scala环境和安装Cassandra数据库,因为之前的日志已经做了介绍,大家可以参考前面几篇日志作为了解。

在github上下载zipkin源码

在前期环境准备工作完成后,我们就可以在git上下载zipkin的源码到本地,准备编译安装。

1
$ git clone https://github.com/twitter/zipkin.git /opt/zipkin

配置jvm启动参数

在下载完成之后还要配置相应的jvm启动参数,因为如果不进行配置,默认的jvm启动参数过大,会导致java虚拟机无法启动。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$ vim bin/sbt
#将启动参数修改为:
java -ea \
$SBT_OPTS \
$JAVA_OPTS \
-XX:+CMSClassUnloadingEnabled \
-XX:+UseThreadPriorities \
-XX:ThreadPriorityPolicy=42 \
-Xms8192M \
-Xmx8192M \
-Xmn2048M \
-XX:+HeapDumpOnOutOfMemoryError \
-Xss256k \
-XX:StringTableSize=1000003 \
-XX:+UseParNewGC \
-XX:+UseConcMarkSweepGC \
-XX:+CMSParallelRemarkEnabled \
-XX:SurvivorRatio=8 \
-XX:MaxTenuringThreshold=1 \
-XX:CMSInitiatingOccupancyFraction=75 \
-XX:+UseCMSInitiatingOccupancyOnly \
-XX:+UseTLAB \
-server \
-jar $sbtjar "$@"

编译zipkin

在重新配置完成jvm启动参数之后就到了最关键的一步编译了。 请大家注意,这一步一定要翻墙!否则就会失败!

1
2
$ cd /opt/zipkin; 
./bin/sbt compile

因为scala语言使用sbt进行编译的,所以大家也要提前配置好sbt编译工具,因为现在网上配置sbt的说明非常多,大家可以参考一下,如果以后用到的话我会再发一篇介绍sbt配置的。
编译的过程非常的漫长,因为翻墙后的网速十分有限,所以sbt在编译过程中下载包的速度也较慢,大概需要2小时左右。

启动zipkin

在编译完成之后就可以启动zipkin了,zipkin主要的组件有zipkin-collector,zipkin-web,zipkin-query如果是集群的话,zipkin-collector需要部署在集群中所有的节点上,zipkin-web和zipkin-query只需要部署在主节点中就可以了,访问zipkin时也是使用主节点的ip:8080进行访问。

  • 首先启动zipkin-collector
1
2
3
4
5
6
7
$ vim /opt/zipkin/zipkin-collector-service/config/collector-cassandra.scala
val keyspaceBuilder = cassandra.Keyspace.static(nodes = Set("xxx.xxx.xxx.xxx"))
# 修改cassandra服务连接地址
.writeTo(cassandraBuilder).queueNumWorkers(50) # 修改zipkin的worker数为50
$ vim project/Project.scala
fork := false, # 将fork修改为false
$ ./bin/collector -cassandra #使用Supervisor启动zipkin collector

在zipkin-collector启动完成后控制台会一直显示zipkin-collector处于监听状态,因为现在没有图片,无法展示给大家,以后有机会会补上。

  • 之后启动zipkin-query

zipkin-query只需要安装在一台机器上就可以了

1
2
3
$ vim zipkin-query-service/config/query-cassandra.scala
val keyspaceBuilder = cassandra.Keyspace.static(nodes = Set("xxx.xxx.xxx.xxx.")) # 修改为cassandra服务地址
$ ./bin/query cassandra # 使用Supervisor启动zipkin query

  • 最后启动zipkin-web

zipkin-web是提供查询时的界面,也只需要安装在一台机器上就可以了。

1
2
3
4
$ echo "#!/usr/bin/env sh bin/sbt 'project zipkin-web' 'run -zipkin.web.query.dest=xxx.xxx.xxx.xxx:9411 -zipkin.web.rootUrl=http://localhost:8080/' # 请将xxx.xxx.xxx.xxx替换为zipkin-query启动的机器ip" > 
bin/zipkin-web
$ chmod +x ./bin/collector-web
$ ./bin/collector-web # 请使用Supervisor启动zipkin web

如果启动成功,可以通过浏览器访问主节点ip:8080,看到如图所示就是成功了。
zipkin

本文作者:Qiu Qingyu
版权声明:本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 CN许可协议。转载请注明出处!
本文永久链接:http://qiuqingyu.cn/2015/12/11/CentOS下zipkin部署/