监视和日志记录数据

适用于:Azure Local 22H2 上的 AKS、Windows Server 上的 AKS

本文介绍如何监视 Azure Kubernetes 服务 (AKS) 部署,以及如何在 Azure Arc 启用的 AKS 中收集日志记录数据。了解如何使用 PrometheusGraphana设置和访问本地监视,以及如何使用 ElasticsearchFluent BitKibana(EFK)收集和查看日志。

提供两种类型的监视和日志记录解决方案,如下表所述:

解决方案 Azure 连接 支持和服务 成本 部署
Azure Monitor 需要使用 Azure Arc for Kubernetes 将 Kubernetes 群集连接到 Azure。 来自Microsoft的完全支持和服务。 需要注册 Azure Monitor 服务。 使用适用于监视群集的 Azure Arc。
本地监视和日志记录 不需要 Azure 连接。 作为开源软件,由Microsoft(不提供支持协议或SLA)、社区和/或外部供应商提供支持。 依赖于供应商。 以客户为导向 请参阅使用本地监视来监视群集

若要将 Azure Monitor 与 Kubernetes 群集配合使用,请参阅 Azure Monitor 概述

使用内部监控

在生产环境中运行应用时,监视群集上控制平面节点和工作负载的健康状况、性能和资源使用情况至关重要。 建议的监视解决方案包括以下两种工具:

  • Prometheus 是一种监视和警报工具包,可用于监视容器化工作负荷。 Prometheus 适用于不同类型的收集器和代理来收集指标并将其存储在数据库中,可在其中查询数据和查看报表。 使用 AKS Arc 可以轻松部署 Prometheus,本文稍后将对此进行介绍。
  • Grafana 是用于在 Grafana 仪表板上查看、查询和可视化指标的工具。 还可以将 Grafana 配置为使用 Prometheus 作为数据源。 你必须拥有与 AKS Arc 兼容的自己的 Grafana 许可副本。

监视解决方案概述

作为 Arc 启用的 AKS 中的 Prometheus 解决方案的一部分,部署并自动配置以下组件:

该部署基于公开可用的 Kube-Prometheus-stack HelmHelm 图表,该堆栈经过扩展以支持 Windows 导出程序,并保护 Prometheus 和代理之间的指标抓取。 部署 Prometheus 解决方案后,节点导出程序在每个 Linux 节点上运行,Windows 导出程序在每个 Windows 节点上运行。

注意

由于 Prometheus 运算符、Prometheus 和 Kube 状态指标组件仅在 Linux 上受支持,因此必须在 AKS 群集中预配至少一个 Linux 节点才能部署此解决方案。

Prometheus 解决方案擦除的对象和终结点包含以下项:

  • Kube 状态指标,用于收集 Kubernetes 提供的各种指标
  • Kubernetes API 服务器
  • Kubelet
  • 用于收集 Linux 节点指标的节点导出程序
  • 用于收集 Windows 节点指标的 Windows 导出程序

若要查看 AKS Arc 中提供的 Grafana 仪表板,请参阅 AKS Arc中提供的 Grafana 仪表板。

使用 PowerShell 部署监视解决方案

本部分介绍可用于在工作负荷群集上部署监视的两个选项。

选项 1:创建工作负荷群集时部署监视解决方案

若要启用监视,请在使用 New-AksHciCluster 创建工作负荷群集时提供 -enableMonitoring 参数,如以下示例所示:

New-AksHciCluster -name mynewcluster -enableMonitoring

监控安装时附带以下默认配置:

  • 预配用于存储指标(storageSizeGB)的永久性卷的大小为 100 GB。
  • 收集的指标(retentionTimeHours)的保留时间为 240 小时(或 10 天)。

选项 2:在现有工作负荷群集上部署监视解决方案

运行 Install-AksHciMonitoring 命令,在现有工作负荷群集上部署监视解决方案,如下所示:

Install-AksHciMonitoring -Name mycluster -storageSizeGB 100 -retentionTimeHours 240

-storageSizeGB 参数设置预配用于存储指标的永久性卷的大小,-retentionTimeHours 参数设置所收集指标的保留时间。

监视解决方案安装在名为 monitoring 的单独命名空间中,并使用名为 monitoring-sc的 StorageClass。 Prometheus 在内部终结点上公开,该终结点只能在 http://akshci-monitoring-prometheus-svc.monitoring:9090 的群集内访问。

使用 PowerShell 卸载监视解决方案

运行 Uninstall-AksHciMonitoring PowerShell 命令以卸载 AKS Arc 监视解决方案,如下所示:

Uninstall-AksHciMonitoring -Name <target cluster name>

卸载过程会删除所有内容,包括命名空间、StorageClass 以及永久性卷的实际数据和指标。

部署 Grafana,并将其配置为使用 Prometheus

您可以遵循任何公开提供的部署 Grafana 的指南。 还可以查看 Microsoft 的部署指南,以使用 Grafana,其中详细介绍了如何部署和配置 Grafana 以将其连接到 AKS Prometheus 实例。 此 GitHub 页面还介绍了如何添加 Microsoft 为 Arc 启用的 AKS 提供的 Grafana 仪表板。

本地日志记录

日志记录对于故障排除和诊断至关重要。 AKS Arc 中的日志记录解决方案基于 Elasticsearch、Fluent Bit 和 Kibana (EFK)。 这些组件全部都以容器的形式部署:

  • Fluent Bit 是一个日志处理器和转发器,用于从不同源收集数据和日志。 然后,它将格式、统一,并将其存储在 Elasticsearch 中。
  • Elasticsearch 是一种分布式搜索和分析引擎,能够集中存储日志,以便快速搜索和数据分析。 
  • Kibana 在 Web 仪表板上提供交互式可视化效果。 此工具允许查看和查询 Elasticsearch 中存储的日志,然后可以通过图形和仪表板将其可视化。

若要设置本地日志记录解决方案,请参阅设置日志记录以访问 Kibana 的步骤。 本文包括跨群集收集、聚合和查询容器日志所需的所有组件。

有关高级配置步骤,请参阅 Windows 日志记录

后续步骤