OpenTelemetry
OpenTelemetry6 (OTel) 是一个与供应商无关的开源可观测性框架, 用于检测、生成、收集和导出遥测数据。 OpenTelemetry 协议7 (OTLP) 链路可以发送到 Jaeger8 以及许多商业服务。
要了解 Istio 如何处理链路追踪,请访问此任务的概述9。
完成此任务后,无论您使用什么语言、框架或平台来构建应用程序, 您都将了解如何让您的应用程序接入 OpenTelemetry10 的链路追踪。
此任务使用 Bookinfo11 示例作为示例应用程序, 并使用 OpenTelemetry Collector12 作为链路接收器。 要查看如何将链路直接发送到 OTLP 兼容后端的示例, 请参阅 Jaeger 任务8。
要了解 Istio 如何处理链路追踪,请访问此任务的概述9。
部署 OpenTelemetry Collector
为 OpenTelemetry Collector 创建命名空间:
部署 OpenTelemetry Collector。 您可以使用此示例配置14作为起点。
安装
所有链路追踪选项都可以通过 MeshConfig
进行全局配置。
为了简化配置,建议创建一个 YAML 文件,
您可以将其传递到 istioctl install -f
命令。
选择 Exporter
Istio 可以被配置为通过 gRPC 或 HTTP 导出 OpenTelemetry Protocol(OTLP)15链路。 一次只能配置一个 Exporter(gRPC 或 HTTP)。
通过 gRPC 导出
在此示例中,链路将通过 OTLP/gRPC 导出到 OpenTelemetry Collector。
该示例还启用了环境资源检测器。
环境检测器将环境变量 OTEL_RESOURCE_ATTRIBUTES
中的属性添加到导出的 OpenTelemetry 资源中。
通过 HTTP 导出
在此示例中,链路将通过 OTLP/HTTP 导出到 OpenTelemetry Collector。
该示例还启用了环境资源检测器。
环境检测器将环境变量 OTEL_RESOURCE_ATTRIBUTES
中的属性添加到导出的 OpenTelemetry 资源中。
通过 Telemetry API 启用网格链路追踪
通过应用以下配置启用链路:
部署 Bookinfo 应用程序
部署 Bookinfo 示例应用程序。
使用 Bookinfo 示例生成链路
当 Bookinfo 应用程序启动并运行时, 访问
http://$GATEWAY_URL/productpage
一次或多次以生成链路信息。要查看追踪数据,必须向服务发送请求。请求的数量取决于 Istio 的采样率。 采样率在安装 Istio 时设置,默认采样速率为 1%。在第一个跟踪可见之前,您需要发送至少 100 个请求。 使用以下命令向
productpage
服务发送 100 个请求:在示例中使用的 OpenTelemetry Collector 被配置为将链路导出到控制台。 如果您使用示例中的 Collector 配置,则可以通过查看 Collector 日志来验证链路是否已到达。它应该包含类似以下内容:
清理
删除 Telemetry 资源:
使用 Ctrl+C 或以下命令来删除可能仍在运行的任何
istioctl
进程:卸载 OpenTelemetry Collector:
如果您不打算探索任何后续任务, 请参阅 Bookinfo 清理说明来关闭应用程序。