Azure Kubernetes 服务中的监控

小窍门

此内容摘自电子书《为 Azure 架构云原生 .NET 应用程序》,可在 .NET 文档 查阅或下载免费的 PDF 离线阅读。

Azure 平台的云原生 .NET 应用电子书封面缩略图。

Kubernetes 中的内置日志记录功能非常原始。 有一些很好的方法可以将日志从 Kubernetes 中转移到一个能够正确分析的位置。 如果需要监视 AKS 群集,为 Kubernetes 设定 Elastic Stack 是一种极好的选择。

用于容器的 Azure Monitor

Azure Monitor for Containers 不仅支持从 Kubernetes 收集日志,还支持从 DC/OS、Docker Swarm 和 Red Hat OpenShift 等其他编排引擎收集日志。

使用不同容器中的日志 图 7-10。 使用不同容器中的日志

Prometheus 是一种常用的开源指标监视解决方案。 它是云原生计算基础的一部分。 通常,使用 Prometheus 需要管理一个具有自己存储的 Prometheus 服务器。 但是, 用于容器的 Azure Monitor 提供与 Prometheus 指标终结点的直接集成,因此不需要单独的服务器。

日志和指标信息不仅从群集中运行的容器收集,而且还从群集主机本身收集。 它允许将两者中的日志信息相关联,以便更轻松地跟踪错误。

WindowsLinux 群集上安装日志收集器有所不同。 但在这两种情况下,日志收集都作为 Kubernetes DaemonSet 实现,这意味着日志收集器作为容器在每个节点上运行。

无论哪个业务流程协调程序或作系统运行 Azure Monitor 守护程序,日志信息都转发到用户熟悉的同一 Azure Monitor 工具。 此方法可确保在混合不同的日志源(如混合 Kubernetes/Azure Functions 环境)的环境中提供并行体验。

一个示例仪表板,显示许多正在运行的容器中的日志记录和指标信息。 图 7-11. 示例仪表板显示许多正在运行容器的日志记录和指标信息。

Log.Finalize()

日志记录是大规模部署任何应用程序的最被忽视但最重要的部分之一。 随着应用程序的大小和复杂性的增加,调试应用程序的难度也随之增加。 提供高质量的日志可以更轻松地进行调试,并将其从“几乎不可能”的领域移动到“愉快的体验”。