前提准备:docker
创建skywalking的bridge网络
docker network create -d bridge skywalking-bridge
如果不知道啥是bridge网络可以看看b站这个十分钟的视频,用桥接(bridge)网络的原因主要是因为在公司部署遇到了ui服务访问oap服务访问不到的问题,明明让网络把端口开了,还是不能互相通信。但是在我自己买的腾讯云和阿里云就没这个问题,不创建桥接网络照样玩.....所以还闹了是不是内部防火墙也防自己端口的乌龙。
docker网络模式十分钟入门,我也不知道为什么尚硅谷和黑马不讲这个
将8.5.0版本的skywalking的oap和ui服务放入此网络中并启动,这个es7的后缀没关系,高版本和低版本的es都兼容的。
docker run \
--name skywalking-oap \
-p 11800:11800 \
-p 12800:12800 -d \
--privileged=true \
-e TZ=Asia/Shanghai \
-v /etc/localtime:/etc/localtime:ro \
-v /usr/local/skywalking/8.5.0/config/application.yml:/skywalking/config/application.yml \
-v /xyb/docker_volume/skywalking8.5.0/config/application.yml:/skywalking/config/application.yml \
-v /usr/local/skywalking/8.5.0/config/alarm-settings.yml:/skywalking/config/alarm-settings.yml \
-v /xyb/docker_volume/skywalking8.5.0/config/alarm-settings.yml:/skywalking/config/alarm-settings.yml \
--network skywalking-bridge \
apache/skywalking-oap-server:8.5.0-es7
docker run \
--name skywalking-ui \
--restart always \
-p 8080:8080 -d \
--privileged=true \
-e TZ=Asia/Shanghai \
-e SW_OAP_ADDRESS=http://skywalking-oap:12800 \
--network skywalking-bridge \
-v /etc/localtime:/etc/localtime:ro \
apache/skywalking-ui:8.5.0
运行完后将application.yml改为es7启动,即可成功访问;能看到我文章的应该都会配application.yml,就是改四个属性(数据库从h2改成elasticsearch7,然后es的ip和账户密码),如果没配es密码那只要改ip和数据库方式就行;对了,如果es也连不上记得也加到同一个bridge网络里,加网络的操作是可以启动完容器后加的,不一定是run命令的时候加,不然生产环境你也不可能重新run对吧。
docker network connect <network_name> <container_name>
link参数的建法,无需建网络
创建oap
docker run \
--name skywalking-oap \
-p 11800:11800 \
-p 12800:12800 -d \
--privileged=true \
-e TZ=Asia/Shanghai \
-v /etc/localtime:/etc/localtime:ro \
-v /usr/local/skywalking/8.5.0/config/application.yml:/skywalking/config/application.yml \
-v /xyb/docker_volume/skywalking8.5.0/config/application.yml:/skywalking/config/application.yml \
-v /usr/local/skywalking/8.5.0/config/alarm-settings.yml:/skywalking/config/alarm-settings.yml \
-v /xyb/docker_volume/skywalking8.5.0/config/alarm-settings.yml:/skywalking/config/alarm-settings.yml \
apache/skywalking-oap-server:8.5.0-es7
创建ui,利用--link将ui和oap连接在一起
docker run \
--name skywalking-ui \
--restart always \
-p 8080:8080 -d \
--privileged=true \
--link skywalking-oap:skywalking-oap \
-e TZ=Asia/Shanghai \
-e SW_OAP_ADDRESS=http://skywalking-oap:12800 \
-v /etc/localtime:/etc/localtime:ro \
apache/skywalking-ui:8.5.0
skywalking的坑
1、性能剖析只有8.5.0能用,8.6.0用不了;这玩意版本问题蛮严重的
2、性能剖析如果java应用配置了server.servlet.context-path属性,需要把这个属性带上进行性能剖析,否则也没有数据,记得加上/
3、如果访问ui服务(8080端口)白屏,第一种可能性是ui服务启动的比oap服务快,可以docker logs瞄一眼日志看看;第二种可能性是之前启动失败,浏览器没有缓存js和css,F12检查一下看看关于js和css的请求是不是都报了404,如果是,就ctrl + alt + delete 清理一下缓存就可以了
最后看下效果吧
现在监控的是我自己的博客网站
仪表盘长这样
拓扑图长这样
追踪长这样
日志长这样,日志还是要对项目引pom文件和log4j2的哈,这个教程很多我这里不赘述了;可以直接看官网
配日志的时候记得把agent的config文件加上这四段话
# 指定要向其报告日志数据的grpc服务器的主机,也就是SkyWalking OAP服务主机地址
plugin.toolkit.log.grpc.reporter.server_host=${SW_GRPC_LOG_SERVER_HOST:127.0.0.1}
# SkyWalking OAP收集数据的端口,默认11800
plugin.toolkit.log.grpc.reporter.server_port=${SW_GRPC_LOG_SERVER_PORT:11800}
# 日志信息最大size
plugin.toolkit.log.grpc.reporter.max_message_size=${SW_GRPC_LOG_MAX_MESSAGE_SIZE:10485760}
# 数据上报超时时间,单位 S
plugin.toolkit.log.grpc.reporter.upstream_timeout=${SW_GRPC_LOG_GRPC_UPSTREAM_TIMEOUT:30}
性能剖析,8.6.0版本这里某个地方会转圈圈,我就不说啥了
告警功能。这个有配置文件可以配置告警的规则,我就不赘述了,教程很多。
集群的部署应该这几天更新方法,估计是用k8s