文档章节

如何使用 Skywalking Agent ?

i
 innerpeacez
发布于 2019/08/30 11:46
字数 1034
阅读 39
收藏 0

如何使用 Skywalking Agent ?

如果你还不知道 Skywalking agent 是什么,请点击这里查看 Probe 或者这里查看快速了解agent,由于我这边大部分都是 JAVA 服务,所以下文以 Java 中使用 agent 为例,提供了以下三种方式供你选择

三种方式:

  • 使用官方提供的基础镜像
  • 将 agent 包构建到已经存在的基础镜像中
  • sidecar 模式挂载 agent
1.使用官方提供的基础镜像

查看官方 docker hub 提供的基础镜像,只需要在你构建服务镜像是 From 这个镜像即可,直接集成到 Jenkins 中可以更加方便

2.将 agent 包构建到已经存在的基础镜像中

提供这种方式的原因是:官方的镜像属于精简镜像,并且是 openjdk ,可能很多命令没有,需要自己二次安装,以下是我构建的过程

  • 下载 oracle jdk

    这个现在 oracle 有点恶心了,wget 各种不行,然后我放弃了,直接从官网下载了

  • 下载 skywalking 官方发行包,并解压(以6.3.0为例)

    wget https://www.apache.org/dyn/closer.cgi/skywalking/6.3.0/apache-skywalking-apm-6.3.0.tar.gz && tar -zxvf apache-skywalking-apm-6.3.0.tar.gz
    
  • 通过以下 dockerfile 构建基础镜像

    FROM alpine:3.8 
    
    ENV LANG=C.UTF-8
    
    RUN set -eux && \
    	apk update && apk upgrade && \
    	wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub &&\
            wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.30-r0/glibc-2.30-r0.apk &&\
            apk --no-cache add unzip vim curl git bash ca-certificates glibc-2.30-r0.apk file && \
    	rm -rf /var/lib/apk/* &&\
            mkdir -p /usr/skywalking/agent/
    
    # A streamlined jre
    ADD jdk1.8.0_221/ /usr/java/jdk1.8.0_221/
    ADD apache-skywalking-apm-bin/agent/ /usr/skywalking/agent/
    
    # set env
    ENV JAVA_HOME /usr/java/jdk1.8.0_221
    ENV PATH ${PATH}:${JAVA_HOME}/bin
    
    # run container with base path:/
    WORKDIR /
    
    CMD bash
    

这里由于 alpine 是基于mini lib 的,但是 java 需要 glibc ,所以加入了 glibc 相关的东西,最后构建出的镜像大小在 490M 左右,应为加了挺多命令还是有点大,仅供参考,同样构建出的镜像也可以直接配置到 jenkins 中。

3.sidecar 模式挂载 agent

如果你们的服务是部署在 Kubernetes 中,你还可以使用这种方式来使用 Skywalking Agent ,这种方式的好处在与不需要修改原来的基础镜像,也不用重新构建新的服务镜像,而是以sidecar 模式,通过共享volume的方式将agent 所需的相关文件挂载到已经存在的服务镜像中

构建 skywalking agent sidecar 镜像的方法

  • 下载skywalking 官方发行包,并解压

    wget https://www.apache.org/dyn/closer.cgi/skywalking/6.3.0/apache-skywalking-apm-6.3.0.tar.gz && tar -zxvf apache-skywalking-apm-6.3.0.tar.gz
    
  • 通过以下 dockerfile 进行构建

    FROM busybox:latest 
    
    ENV LANG=C.UTF-8
    
    RUN set -eux && mkdir -p /usr/skywalking/agent/
    
    ADD apache-skywalking-apm-bin/agent/ /usr/skywalking/agent/
    
    WORKDIR /
    

注意:这里我没有在dockerfile中下载skywalking 发行包是因为保证构建出的 sidecar 镜像保持最小,bosybox 只有700 k左右,加上 agent 最后大小小于20M

如何使用 sidecar 呢?

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    name: demo-sw
  name: demo-sw
spec:
  replicas: 1
  selector:
    matchLabels:
      name: demo-sw
  template:
    metadata:
      labels:
        name: demo-sw
    spec:
      initContainers:
      - image: innerpeacez/sw-agent-sidecar:latest
        name: sw-agent-sidecar
        imagePullPolicy: IfNotPresent
        command: ['sh']
        args: ['-c','mkdir -p /skywalking/agent && cp -r /usr/skywalking/agent/* /skywalking/agent']
        volumeMounts:
        - mountPath: /skywalking/agent
          name: sw-agent
      containers:
      - image: nginx:1.7.9
        name: nginx
        volumeMounts:
        - mountPath: /usr/skywalking/agent
          name: sw-agent
        ports:
        - containerPort: 80
      volumes:
      - name: sw-agent
        emptyDir: {}

以上是挂载 sidecar 的 deployment.yaml 文件,以nginx 作为服务为例,主要是通过共享 volume 的方式挂载 agent,首先 initContainers 通过 sw-agent 卷挂载了 sw-agent-sidecar 中的 /skywalking/agent ,并且将上面构建好的镜像中的 agent 目录 cp 到了 /skywalking/agent 目录,完成之后 nginx 启动时也挂载了 sw-agent 卷,并将其挂载到了容器的 /usr/skywalking/agent 目录,这样就完成了共享过程。

总结

这样除去 ServiceMesh 以外,我能想到的方式就介绍完了,希望可以帮助到你。最后给 Skywalking 一个 Star 吧,国人的骄傲。

© 著作权归作者所有

i
粉丝 0
博文 11
码字总数 11105
作品 0
杭州
私信 提问
加载中

评论(0)

skywalking 5.X 分布式链路跟踪 使用笔记

skywalking 简介(链路跟踪与分析) 随着业务越来越复杂,企业应用也进入了分布式服务化的阶段,随着模块的不断增多,一次请求可能会涉及到十几个甚至几十个服务的协同处理,那么如何准确快速...

不会飞的小龙人
2018/08/01
6.7K
1
多语言应用性能监控系统:SkyWalking

▶ 概述 SkyWalking 是一个开源的 APM 系统,核心功能如下: 服务、服务实例、端点指标分析 根本原因分析 服务拓扑图分析 服务、服务实例和端点依赖性分析 慢服务和端点检测 性能优化 分布式...

Anoyi
2019/05/08
0
0
SkyWalking 分布式追踪系统

随着微服务架构的流行,一些微服务架构下的问题也会越来越突出,比如一个请求会涉及多个服务,而服务本身可能也会依赖其他服务,整个请求路径就构成了一个网状的调用链,而在整个调用链中一旦...

BeckJin
2018/09/09
0
0
SkyWalking-netcore 无入侵分布式追踪

SkyWalking-netcore 最近更新的版本改成了无入侵的集成方式,主要思想应该是分离开发和监测,开发只管代码部分,监测的问题是代码程序之外的工作。 基于之前 SkyWalking 分布式追踪系统 的介...

BeckJin
2018/10/28
0
0
SkyWalking/skywalking-nodejs

SkyWalking Node.js SkyWalking Node.js is the Node.js instrumentation agent, which is compatible with Apache SkyWalking(Incubating) APM backend and others compatible agents/SDKs.......

SkyWalking
2018/05/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

渲染学习笔记——各种测试

1.模板测试 每个像素点都有颜色缓冲区。模板缓冲区和深度缓存区记录了像素的模板值和深度值。一个片元舍弃与否都可以更新模板缓冲区中的值。 2.深度测试 没通过深度缓冲的片元无法改变深度缓...

myctrd
14分钟前
48
0
(零)从零编写PHP容器

说明 一、前置 杂谈 关于造轮子 关于编写项目 必要知识 IOC DI Reflection * ReflectionClass * ReflectionObject * ReflectionMethod * ReflectionFunction * ReflectionProperty 拓展知识点......

calject
15分钟前
42
0
广西快3三连号最大遗漏

广西快3三连号最大遗漏 7.1.8 .5.4.7 .5.6.7

kk369369
16分钟前
33
0
linux基础第七周

1、简述OSI七层模型和TCP/IP五层模型 物理层 在OSI参考模型中,物理层(Physical Layer)是参考模型的最低层,也是OSI模型的第一层。 物理层的主要功能是:利用传输介质为数据链路层提供物理...

大雨雨雨雨雨
18分钟前
37
0
远程桌面连接服务器工具下载页面

远程桌面连接服务器工具下载页面: 远程桌面连接工具 添加机器:

汉美丽
20分钟前
34
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部