Jaeger
完成此任务后,您将了解如何让您的应用程序参与 Jaeger 的追踪,无论您用什么语言、框架或平台来构建应用程序。
此任务使用 Bookinfo 作为演示的应用程序。
要了解 Istio 如何处理追踪,请查看这个任务的概述。
开始之前
配置 Istio 进行分布式链路追踪
配置扩展提供程序
使用引用 Jaeger 收集器服务的扩展提供程序安装 Istio:
$ cat <<EOF > ./tracing.yaml
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
meshConfig:
enableTracing: true
defaultConfig:
tracing: {} # 禁用旧版 MeshConfig 链路追踪选项
extensionProviders:
- name: jaeger
opentelemetry:
port: 4317
service: jaeger-collector.istio-system.svc.cluster.local
EOF
$ istioctl install -f ./tracing.yaml --skip-confirmation
开启链路追踪
通过应用以下配置启用链路追踪:
$ kubectl apply -f - <<EOF
apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
name: mesh-default
namespace: istio-system
spec:
tracing:
- providers:
- name: jaeger
EOF
访问仪表盘
远程访问遥测插件任务详细说明了如何通过网关配置对 Istio 插件的访问。
对于测试(或临时访问),您也可以使用端口转发。假设已将 Jaeger 部署到 istio-system
命名空间,请使用以下内容:
$ istioctl dashboard jaeger
使用 Bookinfo 示例产生追踪
当 Bookinfo 应用程序启动并运行时,访问
http://$GATEWAY_URL/productpage
一次或多次以生成追踪信息。要查看追踪数据,必须向服务发送请求。请求的数量取决于 Istio 的采样率。 采样率在安装 Istio 时设置,默认采样速率为 1%。在第一个跟踪可见之前,您需要发送至少 100 个请求。 使用以下命令向
productpage
服务发送 100 个请求:$ for i in $(seq 1 100); do curl -s -o /dev/null "http://$GATEWAY_URL/productpage"; done
从仪表盘左边面板的 Service 下拉列表中选择
productpage.default
并点击 Find Traces:点击位于最上面的最近一次追踪,查看对应最近一次访问
/productpage
的详细信息:追踪信息由一组 Span 组成,每个 Span 对应一个 Bookinfo Service。这些 Service 在执行
/productpage
请求时被调用,或是 Istio 内部组件,例如:istio-ingressgateway
。
清理
使用 Control C 或删除任何可能仍在运行的
istioctl
进程:$ killall istioctl
如果您没有计划探索任何接下来的任务,请参考 Bookinfo 清理中的说明, 关闭整个应用程序。