一文搞懂基于 OpenTelemetry 进行 Kubernetes 全链路观测( 二 )


忽视观测意味着组织将无法准确地了解应用程序的运行状况和健康状态 。没有及时的观测数据,组织将无法获得关键的指标和指示器,以评估应用程序的性能表现和资源利用情况 。这将使组织难以发现潜在的性能瓶颈、资源争用或其他可能导致应用程序性能下降和可用性问题的因素 。
而同时 , 缺乏观测将导致组织拥有更长的平均解决时间(MTTR),因为组织将没有必要的指标来有效和高效地识别应用程序中问题的根本原因 。通过监控 Kubernetes Cluster 中的关键组件,可以显著降低 MTTR 。
组织可能会在没有充分观测其 Kubernetes 环境的情况下遇到一些问题,例如 Kubernetes Pod 崩溃循环、持续的卷故障和作业故障 。所有这些问题都会导致 Kubernetes 环境和在这些资源上运行的应用程序出现严重的停机时间和性能问题 。
另一个需要通过充分观测来改进的关键方面是识别应用程序的分布式组件和运行这些服务的基础设施之间的依赖关系所需的端到端可见性 。如果对应用程序的整体情况缺乏了解,组织就无法对可能出现的问题进行分析和深入研究,从而增加了缩小根本原因和减少平均解决时间(MTTR)的复杂性 。
观测还为异常检测奠定了基础 , 这允许组织识别与应用程序正常操作不符的行为 。这一点在尝试解决可能影响应用程序性能的异常时变得尤为重要 。
OpenTelemetry 提供的额外好处确保了观测实施不当造成的挑战最小化 , 团队可以通过解决 MTTR 时间增加、可见性有限等问题来充分利用这些功能 。因此 , 使用 OpenTelemetry 观测 Kubernetes 是至关重要的 。
四、最佳实践:确定关键观测目标 在收集和分析来自 Kubernetes 环境的指标时,有一些关键指标需要考虑 。以下内容提供了组织所需收集的关键指标的良好基础知识 。
1.Node 指标此指标提供有关各个 Kubernetes Cluster节点性能和资源使用情况的详细信息,包括 CPU、内存和网络使用情况 。通过监测节点指标,可以了解到节点的负载状况 , 发现资源瓶颈并进行容量规划 。
2.Pod 指标此指标提供有关在节点上运行的 Pod 资源使用和操作的信息,包括 CPU、内存和网络使用情况 。通过监测 Pod 指标,可以了解到每个 Pod 的资源消耗情况,识别资源密集型的 Pod 并进行优化 。
3.Container 指标此指标提供有关 Pod 中运行的各个容器性能和资源使用情况的详细信息,包括 CPU、内存和网络使用情况 。通过监测容器指标,可以深入了解每个容器的资源消耗情况 , 找到资源泄漏或不良配置的容器并进行调整 。
4.API Server 指标此指标包括请求延迟、响应时间和错误率,提供有关 Kubernetes API 服务器功能和可用性的详细信息 。通过监测 API 服务器指标,可以了解API服务器的性能状况 , 识别潜在的性能瓶颈和故障情况 。
5.Etcd 指标此指标包括磁盘使用情况、响应时间和错误率,提供有关 Etcd Cluster 操作和状态的详细信息 。通过监测 Etcd 指标,可以了解 Etcd Cluster 的健康状况、性能瓶颈和故障情况 。
通过收集和分析这些关键指标 , 组织可以获得关于 Kubernetes 环境中 Node、Pod、Container、API Server 和 Etcd Cluster 的详细信息 。这将帮助组织实时监测和优化 Cluster 性能,提高应用程序的可靠性和性能 。
五、基于 OpenTelemetry 进行 Kubernetes 的解决方案在 Kubernetes 上部署一个 OpenTelemetry 收集器,这个收集器将负责接收和处理跟踪数据 。一旦部署完成,我们可以使用 OpenTelemetry 提供的 OTEL 检测库(基于 Go 语言编写的应用程序)将跟踪数据发送到收集器 。
一旦跟踪数据到达收集器 , 它将被传送到 Jaeger 收集器,进一步处理和存储 。最后,我们可以使用 Jaeger 的用户界面(UI)来可视化这些跟踪数据,以便更好地理解应用程序的性能和行为 。
下面的图示展示了这个流程,包括应用程序、OpenTelemetry 收集器和 Jaeger 之间的交互,以及跟踪数据的流动路径 。具体可参考:

一文搞懂基于 OpenTelemetry 进行 Kubernetes 全链路观测

文章插图
在此方案中,我们的 OTEL 设置如下所示:
一文搞懂基于 OpenTelemetry 进行 Kubernetes 全链路观测

文章插图
在实际的业务场景中,OpenTelemetry 可与 Kubernetes 结合使用 , 从 Kubernetes Cluster 上运行的容器化应用程序收集遥测数据 。OpenTelemetry 提供了多个 Kubernetes 特定的组件和集成 , 使我们可以轻松地在 Kubernetes 环境中收集和处理遥测数据 。


推荐阅读