博客 | NGINX

如何提高 Kubernetes 中的可见性

NGINX-F5-horiz-black-type-RGB 的一部分
Jenn Gile 缩略图
詹妮弗·吉尔
2021 年 3 月 8 日发布

编辑– 这篇文章是10 篇系列文章的一部分:

  1. 使用生产级 Kubernetes 降低复杂性
  2. 如何通过高级流量管理提高 Kubernetes 的弹性
  3. 如何提高 Kubernetes 中的可见性(本篇博文)
  4. 使用流量管理工具保护 Kubernetes 的六种方法
  5. 选择入口控制器的指南,第 1 部分: 确定您的需求
  6. 选择入口控制器的指南,第 2 部分: 风险与未来保障
  7. 选择入口控制器的指南,第 3 部分: 开源与…… 默认与…… 商业的
  8. 选择入口控制器的指南,第 4 部分: NGINX 入口控制器选项
  9. 如何选择服务网格
  10. 在动态 Kubernetes 云环境中对 NGINX Ingress 控制器进行性能测试

您还可以下载完整的博客作为免费的电子书 -将 Kubernetes 从测试带到生产
采用微服务可以加速数字体验,但微服务架构也可能使这些体验变得更加脆弱。 当您的开发人员正在快速推出新应用程序时,您的架构可能会使您面临更高的停机、安全漏洞风险,并且会在低效的故障排除或修复可预防的问题上浪费时间。 在我们关于生产级 Kubernetes 系列的第二篇博客中,我们研究了提供流量可见性的组件如何降低复杂性并提高微服务环境中的安全性。

获得可见性以获得洞察力

首先,让我们看几个定义:

  • 可见性——能够看到或被看到的状态
  • 洞察力——对一个人或一件事的深刻理解

StackRox 2020 年的一项调查中,75% 的 Kubernetes 用户认为可视性是一项“必备”功能。 我们同意可见性是 Kubernetes 的关键,因为了解部署了什么尤其困难。 然而,F5 2021 年application战略状况(SOAS) 的 95% 受访者表示,尽管他们拥有大量数据,但他们缺乏保护和发展基础设施和业务所需的应用性能、安全性和可用性方面的洞察。 那么为什么洞察力很重要以及如何获得洞察力?

凭借洞察力,您可以:

  • 通过检测漏洞和可能的攻击媒介来增强安全性和合规性
  • 先于客户发现问题,减少停机和停机时间
  • 通过查找应用程序问题的根本原因来提高故障排除效率
  • 确认你的流量只流向你想要去的地方
  • 准确了解 Kubernetes 环境中正在运行的内容,以及它是否已正确配置和保护
  • 根据延迟和性能历史记录确定您是否使用了正确数量的资源
  • 根据过去的交通模式预测季节性需求
  • 衡量响应时间方面的性能,以跟踪服务水平协议 (SLA) 的性能,并在问题影响用户体验之前充当预警系统

为了获得洞察力,您需要两种类型的可见性数据:实时数据和历史数据。 实时数据能让你诊断出当前问题的根源,而历史数据则能让你了解什么是“正常”、什么是异常。 结合起来,这两种类型的可见性源可以为应用程序和 Kubernetes 性能提供重要的见解。

与其他技术投资一样,您也需要制定一个如何获取收益的策略。 伦敦大学亚非学院的报告还指出,人们未能获得有价值的见解,原因是与招聘和员工发展、战略和流程相关的组织因素,以及对数据用途、何时使用和由谁使用的共识。 这些发现包括:

  • 相关技能——熟练技术专业人员的短缺已不是什么秘密,47% 的受访者表示,他们很难找到所需的人才。
  • 数据共享计划——只有 12% 的受访者制定了向业务决策者报告数据的过程和策略,以使他们了解弹性技术对业务的影响(或缺乏弹性技术)。
  • 可视性的目的——大多数受访者被动地使用遥测(即用于故障排除),而只有 24% 的受访者主动使用数据和见解来监视潜在的性能下降,16% 的受访者跟踪 SLA 性能。

这篇文章的其余部分将重点讨论洞察力的技术方面。 请关注有关策略、流程和其他主题的未来博客。

NGINX 如何提供帮助

我们知道大多数 Kubernetes 部署已经在使用监控工具,不需要再添加另一个。 因此,我们已经对NGINX Plus API进行了改进,以便轻松导出指标,并提供与OpenTracingGrafana 和 Prometheus等流行工具的集成,这样您就可以全面了解集群内部的性能。 您可以通过深度跟踪获得有关应用程序性能和可用性的有针对性的见解,以便了解如何在微服务应用程序中处理请求。

请继续阅读,了解我们如何帮助解决两个常见问题:

如果您已准备好了解该技术的实际应用,请观看此现场直播演示以及与 NGINX 和 Grafana 专家的 AMA。 您将看到他们演示如何实时监控关键的负载平衡和性能指标、将指标导出到 Prometheus,以及创建 Grafana 仪表板以查看累积性能。

问题: 我的应用程序很慢(或崩溃了!)

您是否怀疑遭受了 DDoS 攻击? 用户是否报告您的网站有错误? 你只有弄清楚问题究竟出在哪里,才能开始解决问题。

  • 使用 NGINX Ingress Controller 进行实时监控
    借助 NGINX Plus,由NGINX Plus API提供支持的实时活动监控仪表板可显示数百个关键负载和性能指标。 获取精确到单个 pod 级别的细粒度细节,以便您可以快速轻松地测量应用程序的响应时间并诊断问题的根源。 如果您的 Kubernetes 环境扩大,您将自动获得每个附加 NGINX Ingress Controller 实例的仪表板。

    举例来说, HTTP 上游选项卡上的两列可让您即时读取应用和基础设施的状态:

    • 请求– 如果每秒的请求数 ( Req/s ) 低于给定应用的标准(例如,正常情况下每秒请求数为 40,但实际为 5),则入口控制器或应用可能配置错误。
    • 响应时间– 如果响应时间为 10 毫秒 (ms) 或更短,则说明情况良好。 30-40ms 以上的延迟表明上游应用存在问题。

  • NGINX Ingress Controller 的存根状态
    借助 NGINX 开源,NGINX Ingress Controller 包含一个报告八个基本指标的状态页面
  • NGINX 服务网格中的 OpenTracing
    NGINX Service Mesh 通过NGINX OpenTracing 模块支持 OpenTracing。 截至撰写本文时,该模块支持 Datadog、LightStep、Jaeger 和 Zipkin。

问题: 我的集群或平台资源不足

遇到 HTTP 错误了吗?50340x错误表示你的资源有问题,而502意味着配置更改不起作用。 使用历史数据来诊断可能耗尽资源的地方。

  • 使用 NGINX Ingress Controller 进行日志记录
    诊断网络问题的第一步是检查NGINX Ingress Controller 日志,其中每个日志条目都带有相关的 Kubernetes 服务的注释。 有关错误的条目标识相关的服务。 日志包含通过 Ingress Controller 的所有流量的详细信息,包括时间戳、源 IP 地址和响应状态代码。 您还可以将日志导出到流行的聚合器,例如 Datadog、Grafana 和 Splunk。
  • Prometheus 指标
    NGINX Ingress Controller 最受欢迎的功能之一是其不断扩展的Prometheus 指标列表,其中包括网络性能和 Ingress 控制器流量指标。 使用 NGINX Plus,NGINX Ingress Controller可以导出有关连接、缓存、由共享内存区域中的数据的 NGINX 工作器组处理的 HTTP 和 TCP/UDP 流量、由后端服务器组处理的 HTTP 和 TCP/UDP 流量等的指标。

    NGINX Service Mesh部署了一个 Prometheus 服务器,该服务器使用NGINX Plus API从 NGINX Service Mesh sidecar 和 NGINX Ingress Controller pod 中抓取指标。 如果您更喜欢使用现有的 Prometheus 部署,我们还提供可添加到您的 Prometheus 配置文件中的抓取配置。

  • Grafana 仪表板
    我们为 NGINX Ingress Controller 和NGINX Service Mesh提供官方 Grafana 仪表板,以可视化 Prometheus Exporter 公开的指标。 用户重视数据的粒度,包括精确到毫秒的细节、逐日叠加和流量高峰。 例如,NGINX Service Mesh 仪表板可以通过显示任何一个服务或 pod 上的流量以及正在监控的活动 pod 数量来指示您的 pod 是否已满容量。

使用 NGINX 做好生产准备

已投入生产的 NGINX Ingress Controller(基于 NGINX Plus)可享受30 天免费试用,其中包括NGINX App Protect ,可保护您的容器化应用程序。 永久免费的 NGINX Service Mesh 可在f5.com下载


“这篇博文可能引用了不再可用和/或不再支持的产品。 有关 F5 NGINX 产品和解决方案的最新信息,请探索我们的NGINX 产品系列。 NGINX 现在是 F5 的一部分。 所有之前的 NGINX.com 链接都将重定向至 F5.com 上的类似 NGINX 内容。”