“你已经做得很好了,我把这句话存在这里,在需要勇气的时候,请替我悄悄说给你自己听”
一.概览
skywalking是一个优秀的国产开源框架,2015年由个人吴晟(华为开发者)开源 , 2017年加入Apache孵化器。短短两年就被Apache收入麾下,实力可见一斑。
skywalking支持dubbo,SpringCloud,SpringBoot集成,代码无侵入,通信方式采用GRPC,性能较好,实现方式是java探针,支持告警,支持JVM监控,支持全局调用统计等等,功能较完善。
skywalking是通过jar包方式启动,需要下载jar包,这里某使用docker部署;
如需有window版本:自从上了 SkyWalking,睡觉真香!
地址: https://skywalking.apache.org/downloads/
Skywalking架构
上述架构图中主要分为四个部分,如下:
上面的Agent:负责收集日志数据,并且传递给中间的OAP服务器
中间的OAP:负责接收 Agent 发送的 Tracing 和Metric的数据信息,然后进行分析(Analysis Core) ,存储到外部存储器( Storage ),最终提供查询( Query )功能。
左面的UI:负责提供web控制台,查看链路,查看各种指标,性能等等。
右面Storage:负责数据的存储,支持多种存储类型。
看了架构图之后,思路很清晰了,Agent负责收集日志传输数据,通过GRPC的方式传递给OAP进行分析并且存储到数据库中,最终通过UI界面将分析的统计报表、服务依赖、拓扑关系图展示出来。
二.环境搭建(Docker)
1.Elasticsearch安装
①拉取镜像
docker search elasticsearch
docker pull elasticsearch:7.5.1
②启动容器
docker run -d --name=es7 \
-p 13392:9200 -p 13393:9300 \
-e "discovery.type=single-node" elasticsearch:7.5.1
-- 将数据券复制出来并重新启动
docker cp es7:/usr/share/elasticsearch/data /home/elasticsearch7/
docker cp es7:/usr/share/elasticsearch/logs /home/elasticsearch7/
docker rm -f es7
mkdir -p /home/elasticsearch7/
-- 重新启动
docker run -d --name=es7 --restart=always \
-p 13392:9200 -p 13393:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
-v /home/elasticsearch7/data:/usr/share/elasticsearch/data \
-v /home/elasticsearch7/logs:/usr/share/elasticsearch/logs elasticsearch:7.5.1
③ 访问验证
http://IP:13392
2.安装Skywalking(服务端)
①拉取镜像
docker search skywalking-oap-server
docker pull apache/skywalking-oap-server:6.6.0-es7
②启动容器
服务端的两种数据存储方式,一种是默认的H2存储,即数据存储在内存中,一种是使用elasticsearch存储
默认的H2存储启动
docker run --name skywalking -d \
-p 13350:1234 -p 13351:11800 -p 13352:12800 \
--restart always apache/skywalking-oap-server:6.6.0-es7
使用elasticsearch存储启动
docker run --name skywalking-oap-server \
--restart always -d --restart=always \
-e TZ=Asia/Shanghai -p 13352:12800 -p 13351:11800 \
--link es7:es7 -e SW_STORAGE=elasticsearch \
-e SW_STORAGE_ES_CLUSTER_NODES=IP:13392 \
apache/skywalking-oap-server:6.6.0-es7
--也可
-e SW_STORAGE_ES_CLUSTER_NODES=es7:13392 \
3.安装Skywalking-ui(管理界面)
①拉取镜像
docker search apache/skywalking-ui
docker pull apache/skywalking-ui:6.6.0
②启动容器
docker run -d --name skywalking-ui \
--restart=always -e TZ=Asia/Shanghai \
-p 13358:8080 --link skywalking-oap-server:skywalking-oap-server \
-e SW_OAP_ADDRESS=IP:13352 apache/skywalking-ui:6.6.0 \
--security.user.admin.password=admin
-- 也可
-e SW_OAP_ADDRESS=skywalking-oap-server:13352
③访问
http://IP:13358/trace
注意:下载源码包,项目使用会用到agent
https://archive.apache.org/dist/skywalking/6.6.0/apache-skywalking-apm-6.6.0.tar.gz
项目启动时加入VM
-javaagent:下载的文件地址\apache-skywalking-apm-es7-8.7.0\apache-skywalking-apm-bin-es7\agent\skywalking-agent.jar
-Dskywalking.agent.service_name=skywalking-product-service
-Dskywalking.collector.backend_service=IP:13351 -- 部署的skywalking服务端地址
没关系的,大家都会做错选择,会莫名其妙掉眼泪,走在路上会突然崩溃,但这并不影响我们去看看晚霞,再次爱上这个世界。