前语

最近在对我的开源项目maochd-cloud在进行依靠升级,目前先对服务链路调用监控进行了升级。
1.0.0版别的时分,我选用的是zipkin + sleuth的方法来实现,这种方法可能有点过期,所以,这次我挑选了用skywalking来作为新一代的链路调用监控。

进程

这儿咱们都选用docker的方法进行布置,docker的装置进程在这儿就不过多赘述了,可参阅菜鸟教程快速装置。
首先,咱们需求在docker hub上找到skywalking的镜像包。
这儿咱们挑选8.4.0版别,我尝试过6.6.0和9.2.0版别,6.6.0的布置方法跟8.4.0一样,但是6.6.0会呈现服务没法被skywalking监控到,9.2.0版别的布置方法有所改动,因为时刻原因没有深入研究,后期会在新的文章里更新布置方法。

Springboot联手Docker、Skywalking,打造一体化监控体系,没有你想象的那么困难
按照他的overview一步步操作就能布置。这儿就直接提供一些shell命令,来快速完成建立。 因为这边是本地装备调试,没有运用es,生产运用的话请尽量运用es作为存储介质,es的装备在docker hub中都有,能够参阅官方文档进行装备。

1、装置skywaling server

docker run -d \
--restart always \  
--name maochd-skywalking \  
-p 1234:1234 \  
-p 11800:11800 \  
-p 12800:12800 \  
apache/skywalking-oap-server:8.4.0-es7

2、装置skywalking ui

docker run -d \
--restart always \  
--name maochd-skywalking-ui \  
-p 8088:8080 \  
-e SW_OAP_ADDRESS=http://127.0.0.1:12800 \  
apache/skywalking-ui:8.4.0

拜访http://127.0.0.1:8808,能呈现UI界面就算建立完成了

Springboot联手Docker、Skywalking,打造一体化监控体系,没有你想象的那么困难

3、编写Dockfile文件

cd /opt && vim Dockerfile
## 拉取镜像(这儿用jre能够让镜像的体积变小,打完会在100-300M之间,取决于jar包大小)
## docker hub上也提供了skywalking的镜像,但是那个打完包以后镜像包会特别的大,大概在800-1000M左右
FROM openjdk:8-jre-alpine  
## 界说服务称号,默认值为maochd-default-service
ARG SERVICE_NAME=maochd-default-service  
## 界说skywalking grpc地址, 默认值为127.0.0.1:11800
ENV SKYWALKING_SERVICE=127.0.0.1:11800  
## 拼接jar包称号
ENV JAR_NAME ${SERVICE_NAME}.jar  
## 把ARG中的SERVICE_NAME赋值到环境变量中,避免docker run的时分丢失参数
ENV SERVICE_NAME ${SERVICE_NAME}  
## 界说语言
ENV LANG en_US.UTF-8  
## 处理时刻、时区、字体等装备  
RUN echo "http://mirrors.aliyun.com/alpine/v3.6/main" > /etc/apk/repositories \  
&& echo "http://mirrors.aliyun.com/alpine/v3.6/community" >> /etc/apk/repositories \  
&& apk add --no-cache tzdata ttf-dejavu fontconfig \  
&& ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \  
&& echo "Asia/Shanghai" > /etc/timezone  
## 界说JVM参数 
ENV JAVA_OPTS='-Xms512m -Xmx512m -Xss512k'  
## 复制jar到镜像内  
COPY ${JAR_NAME} /${JAR_NAME}  
## 复制agent探针到镜像指定目录下
COPY agent /usr/local/agent  
## 执行java命令
CMD java -javaagent:/usr/local/agent/skywalking-agent.jar \  
-Dskywalking.agent.service_name=$SERVICE_NAME \  
-Dskywalking.collector.backend_service=$SKYWALKING_SERVICE \  
$JAVA_OPTS -jar $JAR_NAME

4、下载agent

wget -P /opt https://archive.apache.org/dist/skywalking/8.4.0/apache-skywalking-apm-es7-8.4.0.tar.gz \
&& cd /opt \
&& tar -zvxf apache-skywalking-apm-es7-8.4.0.tar.gz \
&& cp -r apache-skywalking-apm-bin-es7/agent . \

5、打包镜像

docker build --build-arg SERVICE_NAME=test.jar -t test:1.0.0 .

6、运行镜像

docker run -itd \
--restart always \  
--name maochd-test \  
-p 9191:9191 \  
-e SKYWALKING_SERVICE=127.0.0.1:11800 \  
test:1.0.0  

因为skywalking是懒加载模式,需求调用接口后才干呈现作用,所以咱们能够调用一个jar包内的接口,当页面呈现接口请求的时分就算成功了。

Springboot联手Docker、Skywalking,打造一体化监控体系,没有你想象的那么困难

总结

在研究进程中,遇到了比较多的问题:第一个问题是skywalking的版别,用新不用旧,老版别可能会有些不可思议的问题,6.6.0的版别折腾了快3个小时,换成8.4.0后10分钟就布置成功了,第二个问题便是想封装一个轻量又适配性的Dockerfile文件,然后在Dockerfile的编写上出了很多的问题,最搞笑的是单词拼错了导致变量没有赋值成功。
其实,布置一些使用广泛的服务,没那么困难,先看下官方文档,然后再结合一些技术博客,最终再加上一点细心,什么都能够战胜的。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。