回顾:从 Nginx 迁移到 Kong 3.0 API 可观测性提升 40%

发布: (2026年5月5日 GMT+8 01:54)
7 分钟阅读
原文: Dev.to

Source: Dev.to

Introduction

深入探讨我们团队将 Nginx 替换为 Kong 3.0 的过程,以及原生可观测性功能如何实现 40 % 的 API 可视化提升

我们的团队管理着 120 多个内部和外部 API,全部通过一组 Nginx 反向代理进行路由。多年来,Nginx 在基本路由、SSL 终止和限流方面表现良好。随着 API 生态系统的扩展,我们遇到了关键的可观测性限制:

  • 日志分散 – Nginx 访问日志需要自定义解析才能提取 API‑特定的元数据(消费者 ID、端点版本、错误码),导致故障排查延迟。
  • 缺乏原生指标 – 我们依赖第三方导出器获取 Nginx 状态指标,但这些指标缺乏对每个 API 的请求量、延迟和错误率的细粒度。
  • 手动仪表化 – 为新 API 添加可观测性需要编辑 Nginx 配置并重新部署,给 DevOps 团队造成瓶颈。
  • 追踪缺口 – 分布式追踪需要手动注入 Header,且在微服务之间的追踪链经常中断。

到 2023 年第三季度,我们的 API 事件平均恢复时间(MTTR)已上升至 47 分钟,其中 60 % 的时间花在收集可观测性数据上。我们需要一种能够原生集成可观测性的解决方案,而无需自定义工具。

API 网关评估

我们评估了多个 API 网关,但 Kong 3.0 因以下三大关键原因脱颖而出:

  1. 原生可观测性插件 – Kong 的插件生态系统提供了开箱即用的日志(HTTP、TCP、Syslog)、指标(Prometheus、StatsD)和追踪(OpenTelemetry、Zipkin)工具,无需编写自定义代码。
  2. 兼容性 – Kong 基于 OpenResty(类似 Nginx),因此将我们现有的 Nginx 配置迁移过来,只需对路由规则和 SSL 设置做极少的修改。
  3. 性能 – Kong 3.0 优化的请求处理为每个请求仅增加 < 2 ms 的延迟,远低于我们的 SLA 要求。

我们的目标是在三个月内完成所有生产 API 的迁移,并实现 30 % 的可观测性提升。我们超额完成,达到了 40 %

迁移方案

1. 评估

  • 审计了所有 Nginx 配置。
  • 绘制了 120 多条 API 路由。
  • 确认了 18 个需要转换为 Kong 插件的自定义 Nginx Lua 脚本。

2. 预发布验证

  • 在预发布环境部署了 Kong 3.0。
  • 通过 shadowing(流量影子)复制生产流量。
  • 验证了路由、SSL 和限流行为。

3. 插件配置

为所有 API 启用了三个核心可观测性插件:

PluginPurpose
opentelemetry自动注入跟踪头部并将跨度导出到我们的 Jaeger 后端。
prometheus为每个 API 暴露请求计数、延迟(p50、p95、p99)以及 4xx/5xx 错误率等指标。
http-log将结构化的 JSON 日志流式传输到我们的 ELK 堆栈,包含消费者 ID、API 版本和上游响应时间。

4. 渐进式发布

  • 以每批 10 条 API 的方式迁移,先从低流量的内部 API 开始。
  • 使用 DNS 加权一次性切换 10 % 流量,并持续监控错误率和延迟。

5. 退役

  • 在迁移后 2 周 零流量后退役 Nginx 节点。

结果

我们使用一个自定义评分来衡量可观测性提升,该评分依据四个因素加权:指标粒度(30 %)、日志结构(25 %)、追踪完整性(25 %)和数据访问时间(20 %)。

  • 迁移前得分: 62 / 100
  • 迁移后得分: 87 / 100 (+40 %)

关键量化成果

  • MTTR47 分钟 降至 28 分钟(下降 40 %)。
  • 追踪完整性68 % 提升至 99 %——不再出现断裂的追踪链。
  • 日志解析时间 从每次事件的 12 分钟 降至 几乎为零(结构化 JSON 自动索引)。
  • 实时的每 API 指标现在无需手动配置即可用于新 API。
  • Kong 的限流和认证插件取代了 12 个自定义 Nginx Lua 脚本,使配置体积减少了 35 %

面临的挑战

问题解决方案
插件冲突opentelemetryprometheus 注入了冲突的头部。已更新至 Kong 3.0.1,其中包含了冲突的修复。
流量影子开销 – 对 100 % 生产流量进行影子复制导致 Kong 节点的 CPU 负载增加 15 %将影子复制比例降低至 10 % 的流量,从而降低 CPU 影响。

Lessons Learned & Tips

  • 尽早使用可观测性插件。 将插件视为事后考虑导致我们的预演验证延迟了两周。
  • 使用 DNS 加权金丝雀 方法逐步转移流量并监控关键指标。
  • 在影子流量时关注 资源使用情况;采样可以减轻开销。

结论

从 Nginx 迁移到 Kong 3.0 对我们的团队来说是一次净收益。API 可观测性提升了 40 %,缩短了事件解决时间,消除了自定义工具,并为未来的 API 治理计划奠定了基础。对于已经超出 Nginx 基础可观测性功能的团队,Kong 3.0 提供了低延迟、兼容的升级路径,并带来巨大的可观测性提升。

0 浏览
Back to Blog

相关文章

阅读更多 »

Claude 运行快速。Codex 发布。

摘要:我给 Claude 和 Codex 两个大型编码任务。- Claude 大约在一小时内完成。- Codex 大约用了八小时。乍一看,这看起来像是……