skywalking接入指南
说明:
skywalking分为两个部分,服务端和代理端。服务端主要开放接口,接收代理端上传的数据并且分析和展示的。
代理端采用非侵入式的数据采集方式,将微服务的链路数据收集上传到服务端。服务端我已经搭建好了,大家配置自己的微服务代理端就可以了。
微服务集成skywalking代理端最简单的方法是把代理端的jar打到微服务的镜像里面,然后在java启动命令里成加入代理端的jar即可,但是这样会破环项目的环境,而且镜像也比较大,
我没有采用。我使用的是代理端和微服务分离的方式:先将代理端单独生成docker镜像,然后在初始化微服务容器时挂载到微服务的容器中,
最后修改微服务镜像的java启动命令就可以了,
- 实例:
微服务完整部署文件如下:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: springcloud-gateway
labels:
wayne-app: springcloud
wayne-ns: demo
app: springcloud-gateway
spec:
selector:
matchLabels:
app: springcloud-gateway
template:
metadata:
labels:
wayne-app: springcloud
wayne-ns: demo
app: springcloud-gateway
spec:
#声明挂载的目录
volumes:
- name: sky-agent-volume
emptyDir: {}
#初始化代理端并挂载在上面声明的目录上
initContainers:
- name: skywalking-agent-gateway
image: 'registry.cn-beijing.aliyuncs.com/wangxiulong/test:skywalking-agent-6.5'
command:
- cp
- '-rf'
- /agent
- /tmp
resources: {}
volumeMounts:
- name: sky-agent-volume
mountPath: /tmp
containers:
- resources:
limits:
memory: 0
cpu: 0
requests: {}
envFrom: []
imagePullPolicy: Always
#镜像服务的IP和端口
image: 'IP:PORT/bims/zuul-gateway'
name: gateway
ports:
- containerPort: 9900
#配置代理端环境,只需要修改SW_AGENT_NAME为你自己的微服务名字即可
env:
- name: SW_AGENT_NAME
value: zlt-gateway
- name: SW_AGENT_COLLECTOR_BACKEND_SERVICES
value: 'oap-svc:11800'
#将代理端挂载到容器中
volumeMounts:
- name: sky-agent-volume
mountPath: /skywalking
imagePullSecrets:
- name: 182registrysecret
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 20%
maxUnavailable: 1
2.
最后修改微服务的Dockerfile文件,在java启动命令中添加代理监听即可:
FROM java:8
VOLUME /tmp
COPY target/zuul-gateway.jar ./zuul-gateway.jar
#修改java命令,增加-javaagent:/skywalking/agent/skywalking-agent.jar,此命令要在-jar之前添加
ENTRYPOINT ["java","-javaagent:/skywalking/agent/skywalking-agent.jar","-jar","zuul-gateway.jar"]