Tyk API Gateway 的原生 OpenTelemetry 集成

博客文章在发布后不会更新。这篇文章已经发布一年多了,其内容可能已过时,部分链接可能无效。在依赖任何信息之前,请务必核实。

OTel 集成!

我们很高兴地宣布 Tyk API 网关 已获得对 OpenTelemetry 的一流支持,并在网关中直接构建了原生仪器化。借助 Tyk 的原生 OpenTelemetry 支持,开发人员和 API 平台团队可以获得对其 API 流量的端到端可观测性,从而能够更快地进行故障排除和问题解决。

为什么选择 OpenTelemetry

API 网关作为 API 的前线代理,在 API 流量的管理和安全方面发挥着至关重要的作用。API 网关层面会发生许多关键操作。监视所有请求至关重要,包括那些由于速率限制规则、身份验证问题或缓存机制而永远无法到达上游服务的请求。在 API 网关收集遥测数据提供了清晰的入口点,并对所有 API 消费者的旅程有了完整的了解。

在 OpenTelemetry 之前,Tyk 网关已经支持超过 10 种不同的格式来导出指标、日志和跟踪。维护这些支持需要大量的工程资源。OpenTelemetry 简化了这一过程,实现了更高效、更标准化的遥测数据收集和导出方法。因此,我们的用户可以选择将遥测数据传输到更广泛的 可观测性工具和供应商

我们已弃用对 OpenTracing 的支持,转而使用 OpenTelemetry 进行分布式跟踪,并计划在未来利用 OpenTelemetry 来简化指标和日志的导出。

如何将 Tyk 与 OpenTelemetry 集成

从 5.2 版本开始,Tyk API 网关支持原生 OpenTelemetry 分布式跟踪。以下是如何配置它、为特定 API 启用详细跟踪以及如何仪器化自定义插件。

在网关层面启用 OpenTelemetry

编辑 Tyk 网关配置文件以启用 OpenTelemetry 支持,如下所示:

{
  "opentelemetry": {
    "enabled": true
  }
}

您还可以通过设置相应的环境变量来启用 OpenTelemetry:TYK_GW_OPENTELEMETRY_ENABLED=TRUE

默认情况下,OpenTelemetry 跨度使用 gRPC 协议导出到 localhost:4317。有关更多配置选项和默认值,请参阅 文档

Tyk 将导出两个跨度:一个用于 API 调用总时长,另一个用于调用上游服务的跨度,如下面的 Jaeger 截图所示。

Typ API Gateway distributed trace

为 API 进行详细跟踪

在网关级别启用 OpenTelemetry 后,您可以灵活地为特定 API 激活详细跟踪。为此,只需调整相应的 API 定义并将 detailed_tracing 选项切换为 truefalse。此设置的默认值为 false。通过此配置,Tyk 将为 API 请求/响应生命周期中执行的每个中间件操作生成一个跨度。这包括 API 版本验证、身份验证、授权、速率限制以及请求和响应转换等操作。

在这里,您可以快速发现速率限制中间件报告的问题

Typ API Gateway distributed trace with middleware details

使用 OpenTelemetry 仪器化自定义插件

Tyk 支持使用自定义插件(也称为自定义中间件)来扩展其功能,使其成为高度灵活和可定制的 API 网关解决方案。这种可扩展性允许开发人员根据其特定需求定制 Tyk,无论是为了增强安全性、添加新的身份验证方法、与第三方服务集成还是实现自定义请求/响应转换。

通过使用 OpenTelemetry SDK 或 Tyk 的 OpenTelemetry 库实现(所有 Tyk 组件共享的 OpenTelemetry SDK 的包装器,以方便使用)来仪器化自定义插件,Tyk 用户可以深入了解其自定义插件的行为,从而实现更好的监控和更快的故障排除。更多信息请参阅 Tyk 文档:Go 插件中的 OpenTelemetry 仪器化

下一步?

现在 OTel Go 指标 SDK 已发布首个稳定版本,我们将继续研究对 OpenTelemetry 指标的支持。请继续关注更新,如有任何反馈,请随时 在 Tyk 社区联系我们

最后修改于 2023 年 11 月 7 日:添加 Tyk API 网关博客文章 (#3431) (974e9be1)