Skywalking调用链监控平台搭建
- Skywalking架构简介
- 在Minikube中部署Skywalking监控平台
- 部署YAML文件准备
- skywalking-oap.yml文件准备:
- skywalking-ui.yml文件准备:
- 部署开始
- Ingress暴露Skywalking UI
Skywalking架构简介
服务器端: Receiver接收数据,HTTP支持UI访问,Tracing, metrics 处理模块,Analysis分析引擎,Query查询引擎
UI端
Skywalking Agent:无侵入式埋点
Skywalking Client: 侵入式埋点
后端:生产环境建议使用Elasticsearch,也支持其他数据存储机制,mysql etc.
在Minikube中部署Skywalking监控平台
部署YAML文件准备
skywalking-oap.yml文件准备:
OAP部署文件:Observability Analysis Platform 可以理解为skywalking的服务器端。
- Port 11800 用来接收Trace,Metrics.
- Port 12800 用来给skywalking UI做查询用的。
随OAP deployment发布的service是用来给UI提供后端服务的,需要在集群里暴露出来,type没有加,默认为ClusterIP类型,集群内服务地址。
apiVersion: apps/v1
kind: Deployment
metadata:
name: oap
namespace: skywalking
spec:
replicas: 1
selector:
matchLabels:
app: oap
release: skywalking
template:
metadata:
labels:
app: oap
release: skywalking
spec:
containers:
- name: oap
image: apache/skywalking-oap-server:8.3.0-es6
imagePullPolicy: IfNotPresent
ports:
- containerPort: 11800
name: grpc
- containerPort: 12800
name: rest
---
apiVersion: v1
kind: Service
metadata:
name: oap
namespace: skywalking
labels:
service: oap
spec:
ports:
- port: 12800
name: rest
- port: 11800
name: grpc
type: ClusterIP
selector:
app: oap
skywalking-ui.yml文件准备:
UI部署文件:用户访问的界面。
- value: oap:12800 为OAP服务名加端口号。
- Port 31234 可以用来访问UI。
随UI deployment发布的服务是nodeport服务,如果后续打算用ingress来暴露UI服务,可以删除—下面服务部分。
apiVersion: apps/v1
kind: Deployment
metadata:
name: ui-deployment
namespace: skywalking
labels:
app: ui
spec:
replicas: 1
selector:
matchLabels:
app: ui
template:
metadata:
labels:
app: ui
spec:
containers:
- name: ui
image: apache/skywalking-ui:8.3.0
ports:
- containerPort: 8080
name: page
env:
- name: SW_OAP_ADDRESS
value: oap:12800
---
apiVersion: v1
kind: Service
metadata:
name: ui
namespace: skywalking
labels:
service: ui
spec:
ports:
- port: 8080
name: page
nodePort: 31234
type: NodePort
selector:
app: ui
部署开始
启动MiniKube Node,如果不会
在K8S中创建namespace skywalking:
执行命令:
kubectl create ns skywalking
kubectl get ns
进入准备好的文件目录:
ls
两个个文件 skywalking-oap.yml skywalking-ui.yml
发布文件
kubectl apply -f .
查看发布的文件及容器状态:
kubectl get all -n skywalking
Skywalking UI在K8S集群外,暴露31234端口。
查看POD日志,观察是否正常运行:
kubectl logs
pod/pod_name
gRPC server 0.0.0.0:11800 表示服务起端已经启动,准备好接收数据。
jetty.server也启动成功。
使用minikube自带命令,查看service列表:
minkube service list
浏览器访问skywalking UI校验成功。数据目前为空。
本文用定制部署,并且后端数据存储用H2,生产环境建议用chart部署集群模式,后端数据存储用ES。
Ingress暴露Skywalking UI
上述部署已完成,如果想用ingress而不是nodeport,可以参照下面配置部署。
UI的部署可以去掉nodeport服务,改用ingress来暴露服务。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-skywalking-service
namespace: skywalking
annotations:
kubernetes.io/ingress.class: nginx
spec:
rules:
- host: skywalking.minikube.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: ui
port:
number: 8080
minikube node 所在VM也可以配置nginx:
server {
listen 80;
server_name skywalking.minikube.com;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header Host "skywalking.minikube.com";
proxy_pass http://skywalking.minikube.com;
}
}
然后修改相应hosts文件。
- linux上
vim /etc/hosts
192.168.49.2 skywalking.minikube.com
- windows上
编辑C:\Windows\System32\drivers\etc\hosts
192.168.44.133 skywalking.minikube.com