Docker-Compose搭建单体SkyWalking 6.2
SkyWalking简介
SkyWalking是一款高效的分布式链路追踪框架,对于处理分布式的调用链路的问题定位上有很大帮助
有以下特点:
-
性能好
针对单实例5000tps的应用,在全量采集的情况下,只增加 10% 的CPU开销。 -
支持多语言探针
-
支持自动及手动探针
自动探针:Java支持的中间件、框架与类库列表
手动探针:OpenTrackingApi、@Trace注解、trackId集成到日志中。
本文基于Skywalking 6.2版本,使用自动探针演示效果,Elasticsearch作存储,由低版本升级到此版本需要删除ES的全部索引
Docker启动的环境变量可以设置很多参数,这里只演示最基本的参数,其实Docker版本只是把服务部署在容器的操作系统中,通过查看镜像的启动入口脚本,发现只是将配置文件换传入的参数是否存在输出配置文件,与一行一行echo类似。。所以想对Docker版本的SkyWalking进行调整,只需要传入对应的参数名kv对,这里把参数配置地址贴出https://github.com/apache/skywalking-docker/blob/master/6/6.2/oap/docker-entrypoint.sh
目录结构
. ├── docker-compose.yml └── .env
文件说明
docker-compose.yml
Docker-compose配置文件.env
环境变量配置文件
配置文件
docker-compose.yml
version: '3.3' services: oap: image: apache/skywalking-oap-server:6.2.0 container_name: skywalking-oap restart: always ports: - 11800:11800 - 12800:12800 environment: - SW_STORAGE=elasticsearch #Es的存储 - SW_STORAGE_ES_CLUSTER_NODES=${ES_NODE} # Es的节点地址,从.env文件中取 - TZ=Asia/Shanghai #设定东八区的城市,防止Oap记录数据时用0时区 ui: image: apache/skywalking-ui:6.2.0 container_name: skywalking-ui depends_on: - oap links: - oap restart: always ports: - 18080:8080 #默认8080端口,这里设置18080映射到宿主机,可修改 environment: collector.ribbon.listOfServers: oap:12800
.env
# set default props for docker-compose.yml # set ES_Cluster or standalone Elasticsearch node. format is "ip:port" ES_NODE=10.2.7.70:9204
准备工作
- 进入与docker-compose.yml同级目录
- 查看
11800
、12800
、18080
这三个端口不能被占用,如果已占用,请自行修改docker-compose.yml
的端口号 - 修改
.env
ES_NODE=10.2.7.70:9204 #这里的ip:port应指向Elasticsearch的协调节点,请尽量不要指向主节点和数据节点
启动服务端
执行docker-compose up -d
查看前端
浏览器访问宿主机ip:18080
,效果如下图
此图为已经使用探针后的表现
Agent自动探针采集数据设置
这里的Agent要与OAP的版本保持一致,这里使用6.2版本
Java只需要在VM options中追加格式为
-javaagent:/path/to/path/skywalking-agent.jar -Dskywalking.agent.service_name=YOUR_APP_NAME -Dskywalking.collector.backend_service=OAP_SEVER_HOST:gRPC_PORT
举例如下:
-javaagent:D:/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=eureka-peer2 -Dskywalking.collector.backend_service=10.2.7.70:11800
- 这里仅举例agent gRPC方式,Restful请求方式默认使用12800端口,请自行对应
/path/to/path
为agent的jar包位置,启动进程中会读取config/agent.conf,我们通过-D添加了参数会覆盖这些配置,所以一个agent包是可以支持多个服务启动的
效果图
问题发现与解决
Q1:
graphql.execution.SimpleDataFetcherExceptionHandler -1061995 [qtp1609086753-159] WARN [] - Exception while fetching data (/latencyS) : IDs can't be null java.lang.RuntimeException: IDs can't be null
A1:
此问题为ui端的问题,无需解决,对SkyWalking后端无影响
包括其它IDs can't be null的问题,均为UI端的问题,影响不大,可以忽略
Q2:
探针已经连接成功了,UI端已经显示终端/端点有连接数,但是无论怎么请求都没有调用链和请求展示
A2:
请检查操作系统时区设置,SkyWalking默认会读取当前操作系统的时区设置,如果使用0时区,基于时间戳方式查询自然不会查询到结果,所以设置时区为东八区即可,如果是Docker方式,可以使用 -e TZ=Asia/Shanghai
本文系搭建笔记,拒绝转载
本文作者:东北小狐狸
本文链接:https://www.cnblogs.com/hellxz/p/docker-compose_skywalking.html
版权声明:本作品采用自由转载-非商用-非衍生-保持署名 (CC BY-NC-ND 3.0)许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了