Apache SkyWalking

完成此任务后,您将了解如何让您的应用程序参与使用 Apache SkyWalking 进行跟踪,无论您使用哪种语言、框架或平台来构建它。

此任务使用 Bookinfo 示例作为示例应用程序。

要了解 Istio 如何处理跟踪,请访问 分布式跟踪概述 部分。

配置跟踪

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

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

使用此配置,Istio 将安装 SkyWalking Agent 作为默认跟踪器。跟踪数据将发送到 SkyWalking 后端。

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

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

部署 SkyWalking 收集器

按照 SkyWalking 安装 文档将 SkyWalking 部署到您的集群中。

部署 Bookinfo 应用程序

部署 Bookinfo 示例应用程序。

访问仪表板

远程访问遥测插件 详细介绍了如何通过网关配置对 Istio 插件的访问。

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

$ istioctl dashboard skywalking

使用 Bookinfo 示例生成跟踪

  1. 当 Bookinfo 应用程序启动并运行后,访问 http://$GATEWAY_URL/productpage 一次或多次以生成跟踪信息。

    要查看跟踪数据,您必须向您的服务发送请求。请求数量取决于 Istio 的采样率,可以使用 遥测 API 进行配置。使用默认的 1% 采样率,您需要发送至少 100 个请求才能看到第一个跟踪。要向 productpage 服务发送 100 个请求,请使用以下命令

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

    Service List
    服务列表
  3. 在主内容中选择“跟踪”选项卡。您可以在左侧边栏中看到跟踪列表,在右侧面板中看到跟踪详细信息

    Trace View
    跟踪视图
  4. 跟踪由一组跨度组成,每个跨度对应于 Bookinfo 服务,在执行 /productpage 请求期间调用,或内部 Istio 组件,例如:istio-ingressgateway

探索 SkyWalking 的官方演示应用程序

在本教程中,我们使用了 Bookinfo 示例应用程序,在这个示例应用程序中,没有安装 SkyWalking 代理到服务中,所有跟踪都是由 sidecar 代理生成的。

如果您想了解更多关于 SkyWalking 的语言代理 的信息,SkyWalking 团队还提供了 一个演示应用程序,它与语言代理集成在一起,您可以拥有更详细的跟踪以及其他语言代理特定功能,例如分析。

清理

  1. 使用 Ctrl+C 删除任何可能仍在运行的 istioctl 进程,或者

    $ killall istioctl
    
  2. 如果您不打算探索任何后续任务,请参考 Bookinfo 清理 指令来关闭应用程序。

这些信息对您有用吗?
您有什么改进建议吗?

感谢您的反馈!