如何使用 Skywalking Agent ?
2019-08-31 07:15:27来源:博客园 阅读 ()
如何使用 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: registry-hz.rubikstack.com/library/sidecar-sw: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 吧,国人的骄傲。
原文链接:https://www.cnblogs.com/innerpeacez/p/11434216.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:RDMA 相关 简要摘录
下一篇:LINUX开启SAMBA服务
- Linux系统如何设置开机自动运行脚本? 2020-06-11
- 信息泄漏时代,如何让自己的密码更安全? 2020-06-10
- 如何监控 Linux 服务器状态? 2020-06-06
- 树莓派使用 OLED 屏显示图片及文字 2020-06-05
- 附020.Nginx-ingress部署及使用 2020-06-02
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash