Apache SkyWalking

完成本任务之后,您将明白如何使用 Apache SkyWalking 追踪应用,这与用于构建应用的语言、框架或平台无关。

本任务将使用 Bookinfo 作为示例应用。

若要学习 Istio 如何处理跟踪,请查阅分布式链路追踪概述一节。

配置链路追踪

如果您使用了 IstioOperator CR 来安装 Istio,请将以下字段添加到您的配置:

  1. apiVersion: install.istio.io/v1alpha1
  2. kind: IstioOperator
  3. spec:
  4. meshConfig:
  5. defaultProviders:
  6. tracing:
  7. - "skywalking"
  8. enableTracing: true
  9. extensionProviders:
  10. - name: "skywalking"
  11. skywalking:
  12. service: tracing.istio-system.svc.cluster.local
  13. port: 11800

采用此配置来安装 Istio 时,将使用 SkyWalking Agent 作为默认的追踪器, 链路数据会被发送到 SkyWalking 后端。

在默认的配置文件中,采样率为 1%, 使用 Telemetry API 将其提高到 100%:

  1. $ kubectl apply -f - <<EOF
  2. apiVersion: telemetry.istio.io/v1
  3. kind: Telemetry
  4. metadata:
  5. name: mesh-default
  6. namespace: istio-system
  7. spec:
  8. tracing:
  9. - randomSamplingPercentage: 100.00
  10. EOF

部署 SkyWalking 采集器

遵循 SkyWalking 安装文档将 SkyWalking 部署到集群中。

部署 Bookinfo 应用

部署 Bookinfo 示例应用。

访问仪表板

远程访问遥测插件详细说明了如何配置通过 Gateway 访问 Istio 插件。

对于测试(和临时访问),您也可以使用端口转发。 假设您已将 SkyWalking 部署到 istio-system 命名空间,使用以下命令:

  1. $ istioctl dashboard skywalking

使用 Bookinfo 示例生成链路

  1. 当 Bookinfo 应用启动且运行时,访问一次或多次 http://$GATEWAY_URL/productpage 以生成链路信息:

    要查看追踪数据,必须向服务发送请求。请求的数量取决于 Istio 的采样率。 采样率在安装 Istio 时设置,默认采样速率为 1%。在第一个跟踪可见之前,您需要发送至少 100 个请求。 使用以下命令向 productpage 服务发送 100 个请求:

    1. $ for i in $(seq 1 100); do curl -s -o /dev/null "http://$GATEWAY_URL/productpage"; done
  2. 从 “General Service” 面板中,您可以看到服务列表:

    Service List
    Service List
  3. 在主要内容中选择 Trace 页签。您可以在左侧栏中看到链路列表,在右面板中看到链路详情:

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

探索 SkyWalking 官方的演示应用

在本教程中,我们使用 Bookinfo 示例应用。 在这个示例应用中,没有安装到服务的 SkyWalking 代理,所有链路均由 Sidecar 代理生成。

如果您想探索有关 SkyWalking 语言代理的更多信息, SkyWalking 团队也提供了集成语言代理的演示应用, 您可以从中了解到更详细的链路以及其他语言代理特定的特性,例如配置文件分析。

清理

  1. 使用 Ctrl-C 或以下命令移除可能仍在运行的所有 istioctl 进程:

    1. $ killall istioctl
  2. 如果您未计划探索后续的任务,请参阅 Bookinfo 清理指示说明, 以关闭该应用。