背景
之前介绍了AWS云上面的EKS的集中日志方案。这次主要介绍调用链监控了,这里我们用的是Skywalking。监控三王者(EFK+Prometheus+Skywalking)之一。之前AWS云上面使用fluent bit替代EFK方案,其实,AWS云在调用链方面,也有X-ray来替代Skywalking,但是,Skywalking与k8s契合度挺好,这里我们继续使用Skywalking进行调用链监控方案。
前提
假设你已经有k8s集群了。并且本地kubectl能够连上集群正常使用,而且,已经熟悉了helm chart的使用。假设我们已经在AWS云上面已经有一个ES数据库作为Skywalking的存储。
skywalking的一下概念
- oap:全称Observability Analysis Platform,这个是skywalking的后台服务。
- ui:这个skywalking的ui界面。
简单架构如下:
helm chart部署skywalking
这种方式,会顺便部署一个es数据库在集群中。具体情况,让我们一步步试试看吧。
export SKYWALKING_RELEASE_VERSION=4.5.0 # skywalking的helm chart项目版本
export SKYWALKING_RELEASE_NAME=skywalking # helm chart发布skywalking的发布名称
export SKYWALKING_RELEASE_NAMESPACE=skywalking # 名字空间
开始安装:
helm install "${SKYWALKING_RELEASE_NAME}" \
oci://registry-1.docker.io/apache/skywalking-helm \
--version "${SKYWALKING_RELEASE_VERSION}" \
-n "${SKYWALKING_RELEASE_NAMESPACE}" \
--set oap.image.tag=9.7.0 \
--set oap.storageType=elasticsearch \
--set ui.image.tag=9.7.0 \
--set oap.replicas=1 \
--set elasticsearch.enabled=false \
--set elasticsearch.config.host=xxx.xxx.xxx.xxxx \
--set elasticsearch.config.port.http=9200 \
--set elasticsearch.config.user="" \
--set elasticsearch.config.password="" \
--create-namespace
这里我选择的skywalking版本是9.7.0版本,这个版本也可以去官网或者docker hub上面翻一翻。
检查
使用如下命令:
# 检查pod
kubectl get pod -n skywalking
得到如下效果:
NAME READY STATUS RESTARTS AGE
skywalking-skywalking-helm-oap-86cc5d8645-dx2bh 1/1 Running 0 154m
skywalking-skywalking-helm-oap-init-2jklz 0/1 Completed 0 154m
skywalking-skywalking-helm-ui-6ff86cbb54-k7bd8 1/1 Running 0 154m
检查svc命令:
kubectl get svc -n skywalking
结果如下:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
skywalking-skywalking-helm-oap ClusterIP 10.100.2.192 <none> 11800/TCP,12800/TCP 155m
skywalking-skywalking-helm-ui ClusterIP 10.100.156.114 <none> 80/TCP 155m
使用如下命令,打开skywalking-ui页面:
kubectl port-forward svc/skywalking-skywalking-helm-ui 8080:80 --namespace skywalking
打开SkyWalking页面,如下链接:
http://127.0.0.1:8080
具体效果如下:
总结
这就是Skywalking在k8s上面的部署方式。前提是我们有ES作为Skywalking的存储。下一次,我们通过自己制作一个边车镜像作为spring boot的skywalking的agent,把调用链监控使用起来。