前情提要:
Skywalking3.2.6是很老的版本了,18年8月左右的最新stable版本,进行总结纯粹出于方法论和过程论的总结,以及历史沉淀。
相关文章:
kubernetes生产环境应用skywalking探针到apollo配置中心
kubernetes&微服务-6:skywalking6.4生产容器化
目录:
(1).skywalking3.2.6部署拓扑图
(2).机器拓扑图
(3).版本与下载
(4).部署skywalking-collector
(5).部署skywalking-web
(6).部署skywalking-agent
(7).skywalking官方issue
(8).skywalking3.2.6重要缺陷
(9).其他注意事项
(1).skywalking3.2.6部署拓扑图
skywalking-agent:非侵入式agent,是应用服务的一部分。
skywalking-collector:trace收集器,可以部署多个。
skywalking-web:trace可视化页面。
elasticsearch:存储trace数据。
(2).机器拓扑图
综合成本和性能,主要原则:够用就好。
IP | host | 域名 | 运行服务 | 相关地址 | |
微服务链路es集群 | IP1 | trace-es001 | trace-es001.xxx-inc.com | elasticsearch | |
IP2 | trace-es002 | trace-es002.xxx-inc.com | elasticsearch elasticsearch-head | http://IP2:9100/ | |
IP3 | trace-es003 | trace-es003.xxx-inc.com | elasticsearch | ||
IP4 | trace-es004 | trace-es004.xxx-inc.com | elasticsearch | ||
微服务链路collector集群 | IP5 | trace-collector001 | trace-collector001.xxx-inc.com | zookeeper skywalking-collector skywalking-web | http://IP5:8080/ |
IP6 | trace-collector002 | trace-collector002.xxx-inc.com | zookeeper skywalking-collector | ||
IP7 | trace-collector003 | trace-collector003.xxx-inc.com | zookeeper skywalking-collector |
(3).版本与下载
skywalking与elasticsearch版本:skywalking-stable-3.2.6, elasticsearch5.6.8
wget https://github.com/apache/incubator-skywalking/releases/download/v3.2.6/skywalking-agent.tar.gz
wget https://github.com/apache/incubator-skywalking/releases/download/v3.2.6/skywalking-collector.tar.gz
wget https://github.com/apache/incubator-skywalking/releases/download/v3.2.6/skywalking-web.tar.gz
解压得到skywalking-agent, skywalking-web, skywalking-collector
(4).部署skywalking-collector
1.mv skywalking-collecotr /app/3rd
2.修改配置文件:
config/log4j2.xml
<Property name="log-path">/data/xxx/skywalking-collector/logs</Property>
application.yml:要和elasticsearch保持一致。
elasticsearch:
cluster_name: my-application
cluster_nodes: localhost:9300
所有localhost都要改成ip, 配置zk, es
样例:
collector.conf
3.启动:
bin/collectorService.sh start
(5).部署skywalking-web
1.mv skywalking-web /app/3rd
2.修改配置文件:
config/log4j2.xml
<Property name="log-path">/data/xxx/skywalking-web/logs</Property>
config/collector_config.properties:
collector.servers[0]=collecotr1:10800
(可以部署多个)
application.properties
默认端口:8080
3.启动:
./web-service.sh start
4.web界面
Trace:
instance view
service tree
(6).部署skywalking-agent
业务同学需要关心和了解:
- mv skywalking-agent /app/3rd/
2.修改配置文件:
conf/agent.confg:
agent.application_code=xxx (具体的业务名字)
collector.servers=collectorIP:10800 (可以部署多个)
logging.level=INFO
logging.dir=/data/xxx/skywalking-agent/logs
3.使用方式:
nohup java -javaagent:$javaAgent -jar $yourBiz.jar >/dev/null 2>&1 &
使用者需要替换:
$javaAgent 一般是:/app/3rd/skywalking-agent/skywalking-agent.jar
$yourBiz.jar,要启动的业务jar包。
PS:
这里省略了其他参数,如JVM参数,业务参数,看各自业务情况都要有。
(7).skywalking官方issue
1.skywalking 对motan的支持应该是从5.x开始;之前最近的一个稳定版本3.2.6-stable是否支持待确认(已经确认支持:作者&实际测试都确认),根据官方答复看代码应该是支持的,依据:https://github.com/apache/incubator-skywalking/issues/1545#issuecomment-412745201
因为我们使用的是motan,所以必须确认此点。
2.skywalking-stable-3.2.6只能对应elasticsearch-5.x,依据:https://github.com/apache/incubator-skywalking/issues/507#issuecomment-412748537, 这里使用elasticsearch5.6.8
这个事项也非常重要,却很容易忽略,导致整个流程不通。
(8).skywalking3.2.6重要缺陷
Huge memory is used when using skywalking-agent
https://github.com/apache/skywalking/issues/1666
上述这个问题发现的也非常偶然,独立ECS各种压测都没有问题。但是因为我们同时还在做容器化,测试环境的k8s资源都非常小,给每个pod分配的资源几乎都是刚刚够运行,在这个前提下使用skywalking-agent后内存飙涨无法启动,然后开始在github上找作者深究这个问题。大致原因skywalking3.2.6这个版本对bytecode使用存在效率问题,只有内存临界点上才会发生我们遇到的问题。详情可以看上述issue。
这也是我们最后否决skywalking3.2.6的原因,虽然后续版本解决了这个问题,但是全链路这个事情已经排除在重要事项之外了。在我们完成整个基础架构重构之后,才在k8s里的apollo服务上进行了运用(skywalking当时的最新版本),参见:
kubernetes生产环境应用skywalking探针到apollo配置中心
(9).其他注意事项
Skywalking-agent一定不要使用100%的采样率,没有意义且徒耗性能,而且也做不到100%,会根据内存损耗对trace进行丢弃。
我们主要是看的全局拓扑,以及全局滞点/阻塞点。
本文暂时没有评论,来添加一个吧(●'◡'●)