skywalking-oap+ui+banyandb通过docker部署链路监控系统
一、准备资源
当前使用的skywalking是最新版本【10.0.1-6a9d727】,上一个版本是:v10.0.0;
----->所以latest版本=10.0.1
资源版本linuxLinux fedora40 6.10.3-200.fc40.x86_64apache/skywalking-banyandblatestapache/skywalking-uilatestapache/skywalking-oap-serverlatestskywalking Java AgentJava Agent下载地址
二、docker源配置
PS:最近docker拉取镜像的源被屏蔽了不少, 我找到了一些可以用的,自测可用,贴在这里,自取
# /etc/docker/daemon.json{"registry-mirrors":["https://dockerhub.icu",
"https://docker.ckyl.me",
"https://docker.awsl9527.cn",
"https://docker.m.daocloud.io",
"https://docker.laoex.link"],
"experimental":true}
三、拉取skywalking镜像
docker pull apache/skywalking-banyandb:latest
docker pull apache/skywalking-ui:latest
docker pull apache/skywalking-oap-server:latest
四、启动docker
(一)启动banyandb
docker run -d--name banyandb -p17913:17913 apache/skywalking-banyandb:latest standalone --stream-root-path /tmp/stream-data --measure-root-path /tmp/measure-data
可以看我写的另外一个文章:docker部署banyandb
(二)启动skywalking-oap-server
[root@fedora40 data]# mkdir -p oap/config[root@fedora40 data]# docker run -d --name oap -p 11800:11800 -p 12800:12800 --ulimit nofile=10240:10240 apache/skywalking-oap-server:latest[root@fedora40 data]# docker cp oap:/skywalking/config/application.yml /data/oap/config[root@fedora40 data]# docker rm -f oap[root@fedora40 data]# vim oap/config/application.yml
操作说明:
- 先启动一个apache/skywalking-oap-server:latest的容器
- 将application.yml文件拷贝到挂载目录,然后删除oap容器
- vim编辑application.yml,编辑内容如下
- 以上vim,退出保存后,再次执行docker run创建skywalking-oap-server命令
[root@fedora40 data]# docker run -d --name=oap4 -p 11800:11800 -p 12800:12800 --ulimit nofile=10240:10240 --link banyandb:banyandb -e SW_STORAGE=banyandb -e SW_STORAGE_BANYANDB_TARGETS=banyandb:17912 -e SW_HEALTH_CHECKER=default -e JAVA_OPTS="-Xms2048m -Xmx2048m" -e TZ=Asia/Shanghai -v /etc/localtime:/etc/localtime -v ./oap/config/application.yml:/skywalking/config/application.yml apache/skywalking-oap-server:latest
脚本说明
创建skywalking-oap-server容器成功
(三)启动skywalking-ui
[root@fedora40 data]# docker run -d --name uila -p 8088:8080 --link oap4:oap4 -e TZ=Asia/Shanghai -e SW_OAP_ADDRESS=http://oap4:12800 -v /etc/localtime:/etc/localtime apache/skywalking-ui:latest
脚本中
–link oap4:oap4 和oap4互联
-e SW_OAP_ADDRESS=http://oap4:12800 #指定oap地址
创建apache/skywalking-ui容器成功
五、访问界面
(一)访问banyandb界面
访问地址banyandb数据库界面
(二)访问skywalking-ui界面
访问地址skywalking-ui界面
最新版本10.0.1的UI和8点及9点几的UI还是很不一样的
六、启动springcloud项目
(一)IDEA中配置skywalking-agent启动方式
1. 下载java agent
下载的文件名称:apache-skywalking-java-agent-9.3.0.tgz
解压后
2. 将代码放到springcloud项目的根pom.xml中
java agent的版本是9.3.0,以下代码中,版本要一致
<!-- SkyWalking agent for Java --><dependency><groupId>org.apache.skywalking</groupId><artifactId>apm-toolkit-logback-1.x</artifactId><version>9.3.0</version><scope>provided</scope></dependency><dependency><groupId>org.apache.skywalking</groupId><artifactId>apm-toolkit-trace</artifactId><version>9.3.0</version></dependency>
3. 在IDEA启动项中,增加探针
注意:所有的启动项中,都需要添加,否则skywalking就收集不到数据
-javaagent:D:/workspace/javaSpace/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=GatewayServerBootstrap -Dskywalking.collector.backend_service=192.168.0.117:11800
-javaagent: 项目中 skywalking-agent.jar 的绝对路径,修改为自己的地址
-Dskywalking.agent.service_name:服务名称
-Dskywalking.collector.backend_service:Skywalking 服务地址
(二)java-jar启动项目方式
java-jar -javaagent:D:/workspace/javaSpace/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=GatewayServerBootstrap Dskywalking.collector.backend_service=192.168.0.117:11800 GatewayServerBootstrap.jar
-javaagent: 项目中 skywalking-agent.jar 的绝对路径,修改为自己的地址
-Dskywalking.agent.service_name:服务名称
-Dskywalking.collector.backend_service:Skywalking 服务地址
(三)配置好探针,启动springcloud项目后
启动项目后,等段时候后,skywalking就收集到了数据
部署问题汇总
1、Caused by: io.netty.channel.ChannelException: timerfd_create() failed: Too many open files
问题截图:
问题解决方案:
估计是因为在容器中要打开很多文件,而容器中打开文件数量有限制。所以在docker run的脚本中,指定打开文件的上限,设置数量多一点,如下图:
我设置的是10240,你可以其他大一点的数字。总之,把文件上限设置高点就行了。
2、docker start Cannot restart container uila: Cannot link to a non running container
Docker 容器启动错误:Cannot link to a non running container 解决方案 。
创建容器A --link了 B 容器。
后来把 B容器删除了,重新起了个B。
然后容器A就报错Cannot link to a non running container 无法启动,明明B容器是在的,不过容器ID变了.
最常见的就是关联Mysql 容器的情况下。
解决方案:
重启Docker ,在重启容器A。完美解决
systemctl restart docker
3、ERROR org.apache.skywalking.oap.server.starter.OAPServerBootstrap - file not found: application.yml
问题截图:
问题解决方案:
这是因为你在执行docker run的时候,没有挂载application.yml文件,按理说apache/skywalking-oap-server:latest镜像中应该有这个文件。为啥报错也不清楚。不过在命令中挂载了application.yml文件在创建容器,就不会报错。如下操作
[root@fedora40 data]# mkdir -p oap/config[root@fedora40 data]# docker run -d --name oap -p 11800:11800 -p 12800:12800 --ulimit nofile=10240:10240 apache/skywalking-oap-server:latest[root@fedora40 data]# docker cp oap:/skywalking/config/application.yml /data/oap/config[root@fedora40 data]# docker rm -f oap
操作说明:
- 先启动一个apache/skywalking-oap-server:latest的容器
- 将application.yml文件拷贝到挂载目录
- 删除掉之前创建的容器
- 再次启动挂载目录的容器,请查看上面的操作
问题解决!
[参考文档] https://blog.csdn.net/qq_19891197/article/details/139411022)
[参考文档] https://blog.csdn.net/jang675953/article/details/139566597)
版权归原作者 Ennis.Zhou 所有, 如有侵权,请联系我们删除。