在 Istio 中使用 SkyWalking 进行分布式链路追踪

1 前提

istio组件已部署完毕

2 启用istio的skywalking链路追踪配置

#istio默认版本安装的情况下,不需要指定--set revision=1-19-1版本
istioctl install --set revision=1-19-1 -y -f - <<EOF
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    defaultProviders:
      tracing:
      - "skywalking"
    enableTracing: true
    extensionProviders:
    - name: "skywalking"
      skywalking:
        service: tracing.istio-system.svc.cluster.local
        port: 11800
EOF

如下:


image.png

3 配置采样率为100%

kubectl apply -f - <<EOF
apiVersion: telemetry.istio.io/v1alpha1
kind: Telemetry
metadata:
  name: mesh-default
  namespace: istio-system
spec:
  tracing:
  - randomSamplingPercentage: 100.00
EOF

如下:


image.png

4 安装skywalking

kubectl apply -f samples/addons/extras/skywalking.yaml

安装成功后,svc是clusterIp,改为nodePort指定对外暴露的端口,方便浏览器访问。
访问地址为:http://${ip}:32188/


image.png

5 部署bookinfo服务

使用istio官方提供的bookinfo服务验证

#开启注入
kubectl label namespace default istio-injection=enabled
#部署bookinfo服务
kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml

如下:


image.png

调用服务,有调用信息才能看到链路追踪的过程

for i in $(seq 1 100); do curl -s -o /dev/null "http://${ip}:30381/productpage"; done

6 查看效果

image.png
image.png

7 核心步骤
看bookinfo源码,发现如果想实现上述效果,必须在服务的header中透传request-id。
这点在自己服务编码使用的时候,需要注意。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容