docker部署skywalking 6.0a

前言

  • 阅读前提:大致了解skywalking以及docker基础知识。
  • 关于skywalking是什么,自行搜索吧。标题里面写的是skywalking的6.0 alpha版本( 正式版本还没出)。为什么选择6.0a是因为他支持undertow 2.0的版本,我这里spring boot的运行容器是undertow,而5.0的版本不支持。所以具体选择什么版本,要根据自己的运行环境来定,当然目前的6.0也不是稳定版(skywalking的support list)。目前我也不打算上生产环境。
  • 其实本身skywalking的部署是比较简单的,如果不是集群模式,只需要运行sh startup.sh就行了,之后部署服务的agent。所以如果你不打算用docker部署的话,也不用看这篇文章,因为侧重点在docker。
  • 因为skywalking并没有发布任何官方镜像在doker hub,倒是有私人的镜像,如果直接拿来用,也只能部署在本机玩玩看。

说正事吧

  • skywalking的架构大致分为三块(我只是粗略理解):
  1. agent:此模块跟你的app集成在一起,收集app的信息,然后发送到collector
  2. oap:主要处理agent发来的消息,并持久化到存储层(官方推荐elasticsearch来做存储)。
  3. ui层当然就是展现收集来的信息了。

所以我制作docker image的时候,把skywalking分成两块,一块是oap,一块是ui。

  • 制作镜像:
  1. 去github官网下载master分支代码,进入到docker分支,可以看到ui和oap两个目录,然后再去官网下载skywalking 6.0a的版本下载压缩包,改名为apache-skywalking-apm-incubating.tar.gz,然后分别放到上面所说的两个目录中。如图所示,ui里面的web.yml 改为webapp.yml
docker部署skywalking 6.0a_第1张图片
屏幕快照 2018-12-07 18.04.50.png
  1. 先看oap的dockerfile
FROM openjdk:8-jre-alpine

ENV DIST_NAME=apache-skywalking-apm-incubating \
    JAVA_OPTS=" -Xms256M -Xmx512M"

# Install required packages
RUN apk add --no-cache \
    bash 

COPY "$DIST_NAME.tar.gz" /

RUN set -ex; \
    tar -xzf "$DIST_NAME.tar.gz"; \
    rm -rf "$DIST_NAME.tar.gz"; rm -rf "$DIST_NAME/config/log4j2.xml"; \
    rm -rf "$DIST_NAME/bin"; rm -rf "$DIST_NAME/webapp"; rm -rf "$DIST_NAME/agent"; \
    #改为gmt时区
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
    echo "Asia/Shanghai" > /etc/timezone  

WORKDIR $DIST_NAME

COPY application.yml config/
COPY log4j2.xml config/
COPY docker-entrypoint.sh .

EXPOSE 12800 11800

ENTRYPOINT ["sh", "docker-entrypoint.sh"]

在oap目录下运行 docker build -t oap:1.0 . ,生成oap镜像。
然后运行 docker run -d -p 11800:11800 -p 12800:12800 oap:1.0
接着 docker ps ,然后会看到

屏幕快照 2018-12-07 18.13.10.png

至此,oap服务部署完成。

  1. ui的dockerfile
FROM openjdk:8-jre-alpine

ENV DIST_NAME=apache-skywalking-apm-incubating \
    JAVA_OPTS=" -Xms256M -Xmx512M"

# Install required packages
RUN apk add --no-cache \
    bash

COPY "$DIST_NAME.tar.gz" /

RUN set -ex; \
    tar -xzf "$DIST_NAME.tar.gz"; \
    rm -rf "$DIST_NAME.tar.gz"; rm -rf "$DIST_NAME/config"; \
    rm -rf "$DIST_NAME/bin"; rm -rf "$DIST_NAME/oap-libs"; rm -rf "$DIST_NAME/agent"; \
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
    echo "Asia/Shanghai" > /etc/timezone  

WORKDIR $DIST_NAME

COPY docker-entrypoint.sh .
COPY logback.xml webapp/

EXPOSE 8080

ENTRYPOINT ["sh", "docker-entrypoint.sh"]

同时修改webapp.yml中的listOfServers属性,将ip改为oap容器上所在宿主机的真实ip,端口不变。

在ui目录下运行 docker build -t oap:1.0 .,生成ui镜像。
然后运行docker run -d -p 8080:8080 ui:1.0
至此ui服务部署完成。

然后可以在浏览器上敲 http:ip(ui服务所在宿主机的ip):8080,可以看到skywalking的界面。


docker部署skywalking 6.0a_第2张图片
屏幕快照 2018-12-07 18.06.12.png

最后将你的app集成agent,运行之后会看到skywalking上多一个服务

你可能感兴趣的:(docker部署skywalking 6.0a)