目 录CONTENT

文章目录

skywalking+es实现链路追踪

路口、下车
2025-07-14 / 0 评论 / 1 点赞 / 26 阅读 / 0 字
温馨提示:
本文最后更新于2025-12-22,若内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

用途说明

我们日常微服务往往调用连路比较长,一旦某个接口发生访问慢的情况,想排查具体微服务下需要慢在那里,所以微服务链路追踪很有必要,本文介绍了常用的两种链路追踪对比,以及skywalking部署与使用情况。

常用方案对比

类型ZipkinSkyWalking
起源由Twitter开发,现已成为CNCF托管项目由中国开源社区Apache孵化并毕业成为顶级项目。
定位分布式追踪系统,专注于收集、存储、搜索和可视化微服务架构中的延迟数据。全链路监控体系,包括APM、可观测性和服务网格分析功能。
数据模型基于Dapper论文设计的Span模型,通过TraceID串联调用链路。同样基于Span和Trace概念,并扩展了更多的度量指标和元数据。
架构基于拉取(Pull)模式收集跟踪数据,需要客户端上报数据到收集器或中央仓库。采用推拉结合的方式进行数据收集,内置了Agent自动采集数据。
存储后端支持多种存储后端如MySQL, Cassandra, Elasticsearch等。原生支持Elasticsearch和MySQL,后续版本增加了更多存储选项。
UI提供简洁的Web界面查看跟踪信息和依赖关系图。提供了丰富的应用性能管理界面,包括服务拓扑图、实时跟踪、报警管理和大盘展示。
扩展性可扩展性强,但需要自定义集成以适应复杂环境。开箱即用,相比而言,SkyWalking 的安装配置相对简单,且对Java生态支持尤为完善,同时对其他语言也有探针支持。

部署背景与环境

系统环境:centos7
容器环境:docker
网络环境:生产环境网络和外网不通
java运行环境:jdk17(具体应用服务的环境)+jdk1.8(skywalking和es安装的环境)
软件版本选择:elasticsearch:6.8.12+kibana:6.8.12+skywalking-oap-server:8.5.0-es6+skywalking-ui:8.5.0

PS: skywalking和es安装的环境jdk1.8,es7.16之后对jdk最低要求是jdk11,所以es选择6.8.12,对应的skywalking版本选择8.5.0

具体安装步骤

1、测试环境拉取镜像

docker pull elasticsearch:6.8.12
docker pull elastic/kibana:6.8.12
docker pull apache/skywalking-oap-server:8.5.0-es6
docker pull apache/skywalking-ui:8.5.0

2、测试环境导出镜像

docker save elasticsearch:6.8.12 -o es_6.8.12.tar
docker save elastic/kibana:6.8.12 -o kibana_6.8.12.tar
docker save apache/skywalking-oap-server:8.5.0-es6 -o skywalking-oap_8.5.0.tar
docker save apache/skywalking-ui:8.5.0 -o skywalking-ui_8.5.0.tar

把镜像导出到本地电脑

3、生产环境导入镜像

把导出的本地镜像导入到生产,然后把镜像导入docker

docker load < es_6.8.12.tar
docker load < kibana_6.8.12.tar
docker load < skywalking-oap_8.5.0.tar
docker load < skywalking-ui_8.5.0.tar

4、docker启动es

docker run -d \
    --name es \
       -e "ES_JAVA_OPTS=-Xms1024m -Xmx1024m" \
       -e "discovery.type=single-node" \
       -v /home/weihu/es/es-data:/usr/share/elasticsearch/data \
       -v /home/weihu/es/es-plugins:/usr/share/elasticsearch/plugins \
       -e "ELASTIC_PASSWORD=your_password" \
       -e "ELASTICSEARCH_USERNAME=elastic" \
       --privileged \
       -p 9200:9200 \
       -p 9300:9300 \
   elasticsearch:6.8.12

注意挂载文件权限

chmod -R 775 /home/weihu/es

验证是否启动成功

curl http://172.16.101.43:9200

5、docker启动kibana

docker run -d --name kibana \
  --link es:es \
  -e "ELASTICSEARCH_URL=http://172.16.101.43:9200" \
  -e "ELASTICSEARCH_USERNAME=elastic" \
  -e "ELASTICSEARCH_PASSWORD=DC49e15NI7CH" \
  -p 5601:5601  \
  elastic/kibana:6.8.12

kibana设置中文

docker exec -it kibana /bin/bash
cd config
vi kibana.yml
末尾添加:
i18n.locale: "zh-CN"
wq
exit;
重启kibana

访问地址:

172.16.101.43:5601

6、docker启动skywalking-oap

docker run -d --name skywalking-oap \
  -e SW_STORAGE=elasticsearch \
  -e TZ=Asia/Shanghai \
  -e SW_STORAGE_ES_CLUSTER_NODES=172.16.101.43:9200 \
  -e SW_STORAGE_ES_USER=elastic \
  -e SW_STORAGE_ES_PASSWORD=DC49e15NI7CH \
  -p 11800:11800 \
  -p 12800:12800 -d \
  --privileged=true \
  apache/skywalking-oap-server:8.5.0-es6

7、docker启动skywalking-ui

 docker run -d --name skywalking-ui \
   -e TZ=Asia/Shanghai \
   -p 8088:8080 \
   --link skywalking-oap:skywalking-oap \
   -e SW_OAP_ADDRESS=172.16.101.43:12800 \
   apache/skywalking-ui:8.5.0

访问控制台

192.168.52.128:8088

自此,skywalking所需应用全部安全完毕,下一步就是下载skywalking.jar,然后对接所需追踪的应用

skywalking使用

下载agent文件

到官网下载agent文件,下载地址

解压

tar xvf apache-skywalking-apm-8.5.0.tar.gz

jar包启动带agent命令(非docker部署的jar应用)

SKYWALKING_AGENT=-javaagent:[agent下载路径]/skywalking-agent.jar=[自定义agent的名称],collector.backend_service=[skywalking-oap的IP]:11800
java ${SKYWALKING_AGENT} -jar app.jar

docker启动jar应用引入agent(docker部署的jar应用)

因为docker容器里面没有agent文件,所以需要把agent文件copy到docker容器内部,下面以这次部署为例

修改Dockerfile配置

FROM  docker.crun.run/core/crun-openjdk17:1.0.0
ADD *.jar /app.jar
COPY [agent下载路径] /usr/local/agent
ENV JAVA_AGENT  "-javaagent:/usr/local/agent/skywalking-agent.jar -DSW_AGENT_NAME=taskcenter-service -DSW_AGENT_COLLECTOR_BACKEND_SERVICES=ip:port"
ENV JAVA_NACOS "-Dspring.cloud.nacos.server-addr=ip:port -Dspring.cloud.nacos.username=nacos -Dspring.cloud.nacos.password=your-nacos-password -Dspring.cloud.nacos.discovery.namespace=namespace -Dspring.cloud.nacos.config.namespace=namespace"
ENV JAVA_OPS "-Xms1024M -Xmx2048M -Dspring.profiles.active=prod " ${JAVA_NACOS} ${JAVA_AGENT}

自此,skywalking部署全部完成,下一步就是打开控制台追踪微服务链路。


注意:

  • 刚启动可能看不到数据,等有访问了才能看到数据。
  • 注意列表筛选时间(因为筛选带了时间区间条件)
  • Chrome可能需要清空缓存
1

评论区