介绍
Apache SkyWalking 是一个专门设计用于微服务、 云原生和容器等架构的应用性能监控 (APM) 系统。SkyWalking 是可观测性的一站式解决方案, 不仅具有像 Jaeger 和 Zipkin 的分布式追踪能力,像 Prometheus 和 Grafana 的指标能力,像 Kiali 的日志记录能力,还能将可观测性扩展到许多其他场景, 例如将日志与链路关联,收集系统事件并将事件与指标关联,基于 eBPF 的服务性能分析等。
istio支持多种分布式追踪工具,上文介绍了Zipkin,这篇介绍SkyWalking。
部署SkyWalking
可以用istio官方的示例来部署,也可以参考这里来部署。
kubectl apply -f samples/addons/extras/skywalking.yaml
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
查看IstioOperator的配置。
k get IstioOperator -n istio-system installed-state -o yaml
重新部署了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
访问skywalking
修改skywalking-ui为NodePort
使用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
查看服务列表:
点击trace,可以在左侧栏中看到链路列表,在右面板中看到链路详情:
链路由一组 span 组成,每个 span 对应在执行 /productpage 期间调用的一个 Bookinfo 服务, 或对应 istio-ingressgateway 这种内部 Istio 组件。
查看服务拓扑:
查看Zipkin页面,确认没有trace产生。
bookinfo没有安装 SkyWalking 代理,所有链路均由 Sidecar 代理生成。这里也有skywalking官方的示例:https://skywalking.apache.org/docs/skywalking-showcase/next/readme/