使用SkyWalking进行分布式追踪

介绍

Apache SkyWalking 是一个专门设计用于微服务、 云原生和容器等架构的应用性能监控 (APM) 系统。SkyWalking 是可观测性的一站式解决方案, 不仅具有像 Jaeger 和 Zipkin 的分布式追踪能力,像 Prometheus 和 Grafana 的指标能力,像 Kiali 的日志记录能力,还能将可观测性扩展到许多其他场景, 例如将日志与链路关联,收集系统事件并将事件与指标关联,基于 eBPF 的服务性能分析等。

istio支持多种分布式追踪工具,上文介绍了Zipkin,这篇介绍SkyWalking。

部署SkyWalking

可以用istio官方的示例来部署,也可以参考这里来部署。

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

file

Istio 代理默认不向 SkyWalking 发送链路追踪。需要通过添加以下字段到您的配置来启用 SkyWalking 追踪扩展提供程序:

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
istioctl install -f skywalking.yaml

file

查看IstioOperator的配置。

k get IstioOperator -n istio-system installed-state -o yaml

file

重新部署了istio,所以需要再修改istio-ingressgateway类型为NodePort。

在默认的配置文件中,采样率为 1%。 使用 Telemetry API 将其提高到 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

file

访问skywalking

修改skywalking-ui为NodePort

file

file

使用bookinfo生成trace

访问 http://$GATEWAY_URL(172.16.255.183:31469)/productpage 一次或多次以生成追踪信息。

要查看追踪数据,必须向服务发送请求。请求的数量取决于 Istio 的采样率。上面已经修改了采样率为100%,所以访问一次就可以了。

curl -s -o /dev/null http://172.16.255.183:31469/productpage

查看服务列表:

file

点击trace,可以在左侧栏中看到链路列表,在右面板中看到链路详情:

file

链路由一组 span 组成,每个 span 对应在执行 /productpage 期间调用的一个 Bookinfo 服务, 或对应 istio-ingressgateway 这种内部 Istio 组件。

查看服务拓扑:

file

查看Zipkin页面,确认没有trace产生。

bookinfo没有安装 SkyWalking 代理,所有链路均由 Sidecar 代理生成。这里也有skywalking官方的示例:https://skywalking.apache.org/docs/skywalking-showcase/next/readme/

0 0 投票数
文章评分
订阅评论
提醒
guest

0 评论
最旧
最新 最多投票
内联反馈
查看所有评论

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部
0
希望看到您的想法,请您发表评论x