前语
最近在对我的开源项目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版别的布置方法有所改动,因为时刻原因没有深入研究,后期会在新的文章里更新布置方法。

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界面就算建立完成了

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包内的接口,当页面呈现接口请求的时分就算成功了。

总结
在研究进程中,遇到了比较多的问题:第一个问题是skywalking的版别,用新不用旧,老版别可能会有些不可思议的问题,6.6.0的版别折腾了快3个小时,换成8.4.0后10分钟就布置成功了,第二个问题便是想封装一个轻量又适配性的Dockerfile文件,然后在Dockerfile的编写上出了很多的问题,最搞笑的是单词拼错了导致变量没有赋值成功。
其实,布置一些使用广泛的服务,没那么困难,先看下官方文档,然后再结合一些技术博客,最终再加上一点细心,什么都能够战胜的。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。