Azure Monitor 和 Prometheus

Prometheus 是一种常用的开源监视和警报解决方案,在云原生生态系统中广泛使用。 Azure Monitor 为 Prometheus 提供完全托管的服务,使你可以收集、存储和分析 Prometheus 指标,而无需维护自己的 Prometheus 服务器。 可以利用此托管服务从 Kubernetes 群集和虚拟机收集 Prometheus 指标,也可以从自管理 Prometheus 服务器与它集成。

适用于 Prometheus 的 Azure Monitor 托管服务

适用于 Prometheus 的 Azure Monitor 托管服务为运行 Prometheus 提供了完全托管且可缩放的环境。 它简化了在 AKS 和已启用 Azure Arc 的 Kubernetes 中部署、管理和扩展 Prometheus,从而可以专注于监控应用程序和基础设施。 作为完全托管服务,它提供高可用性、服务级别协议(SLA)保证、自动软件更新和高度可缩放的指标存储,可保留最多 18 个月的数据。

适用于 Prometheus 的 Azure Monitor 托管服务提供预配置的警报、规则和仪表板。 它完全支持 Prometheus 查询语言(PromQL), 并在 Azure 门户中提供用于 以交互方式查询和可视化 Prometheus 指标的工具。 借助 Prometheus 社区推荐的仪表板和与 Grafana 的无缝集成,你可以立即实现全面监控。 它与 Azure 托管 Grafana 集成,并为 具有 Grafana(预览版)的 Azure Monitor 仪表板提供无缝的数据源,还能为您现有的自管理 Grafana 环境提供数据。

显示托管 Prometheus 及其使用的 Azure Monitor 工具概览的图示。

适用于 Prometheus 的 Azure Monitor 托管服务的优点

适用于 Prometheus 的 Azure Monitor 托管服务的主要优势包括:

Pricing

使用 Prometheus 的 Azure Monitor 托管服务或创建 Azure Monitor 工作区不会产生直接成本。 定价基于引入和查询收集的数据。 有关详细信息,请参阅 Azure Monitor 定价中的“指标”选项卡。

数据收集

Prometheus 的 Azure Monitor 托管服务当前直接从 AKS 和已启用 Azure Arc 的 Kubernetes 收集数据。 Azure Monitor 提供一个 载入过程 ,用于在群集中安装 Azure Monitor 代理 ,并创建一个 数据收集规则(DCR), 用于定义数据收集过程并将数据定向到相应的工作区。 可以使用 Azure 门户、CLI、PowerShell 和 ARM/Bicep 模板轻松启用和配置监视或直接使用 ConfigMap 和 DCR,以实现更高级的方案。

有关在群集上启用托管的 Prometheus 的详细信息,请参阅 为 Kubernetes 群集启用监视。 若要为 Microsoft Azure 实体隔离云启用托管 Prometheus,请联系支持人员。

数据存储

为 Prometheus 启用 Azure Monitor 托管服务的唯一要求是创建一个 Azure Monitor 工作区 ,该工作区为 Prometheus 指标提供存储。 添加 Azure Monitor 工作区以分隔不同区域、环境或团队的数据。 载入用于监视 Azure Kubernetes 服务(AKS)群集等资源的载入将指导你完成创建新的 Azure Monitor 工作区或连接到现有工作区的过程。 数据存储 18 个月,无需额外付费。

与自主管理的 Prometheus 集成

适用于 Prometheus 的 Azure Monitor 托管服务旨在替代自我管理的 Prometheus,使你无需在 Kubernetes 群集中管理 Prometheus 服务器。 在某些情况下,你可能希望在 Kubernetes 群集中继续使用自管理 Prometheus,同时将数据发送到托管 Prometheus 进行长期数据保留,并跨群集创建集中式视图。 迁移到托管 Prometheus 时,这或许是一个临时解决方案;如果您有特定要求需要维护现有环境,则也可能是一个长期解决方案。

Remote_write 是 Prometheus 中的一项功能,可用于将指标从本地 Prometheus 实例发送到远程存储或其他 Prometheus 实例。 使用此功能可将指标从在 Kubernetes 群集或虚拟机中运行的自托管 Prometheus 发送到由托管 Prometheus 使用的 Azure Monitor 工作区。

下图说明了此策略。 Azure Monitor 中的 数据收集规则(DCR) 为自管理 Prometheus 提供终结点,用于向 Azure Monitor 工作区发送指标并定义要在其中发送数据的 Azure Monitor 工作区。

图表显示如何使用远程写入将指标从本地 Prometheus 发送到托管 Prometheus。

请参阅 将自管理 Prometheus 连接到适用于 Prometheus 的 Azure Monitor 托管服务,配置远程写入以便从自管理 Prometheus 服务器收集数据。

查询和分析 Prometheus 指标

Azure Monitor 提供了多个工具来查询和分析存储在 Azure Monitor 工作区中的 Prometheus 指标。 可以使用 PromQL 编写自己的查询,使用来自开源社区的查询,以及使用和创建 Grafana 仪表板。 下表介绍了可用于查询和分析存储在 Azure Monitor 工作区中的 Prometheus 指标的工具。

Tool Description
容器见解 容器见解提供了各种交互式视图,用于分析 Kubernetes 群集的 Prometheus 指标。 查看群集的高级指标或向下钻取,以分析群集组件(包括节点、控制器和容器)的详细信息指标。 请参阅 使用容器见解分析 Kubernetes 群集数据
使用 PromQL 的 Azure Monitor 性能指标浏览器 将指标资源管理器与 PromQL(预览版)配合使用,在 Azure 门户中分析和可视化平台和 Prometheus 指标。 请参阅 支持 PromQL 的 Azure Monitor 指标资源管理器
Azure Monitor 工作簿 使用 Azure 工作簿和 PromQL 查询创建由 Azure Monitor 适用于 Prometheus 的托管服务提供支持的图表和仪表板。 请参阅 使用 Azure 工作簿查询 Prometheus 指标
Grafana 使用 Grafana 仪表板 可视化 Prometheus 指标是可视化 Prometheus 数据的常见解决方案,并且提供了各种社区仪表板。 使用 Grafana 的 Azure Monitor 仪表板(预览版) 提供内置体验,无需任何费用。 使用 Azure 托管 Grafana 用于将不同数据源组合到一个仪表板中。 请参阅 使用 Grafana 的可视化
Prometheus 查询 API 将 PromQL 与 REST API 配合使用,查询存储在 Azure Monitor 工作区中的 Prometheus 指标。 有关详细信息,请参阅使用 API 和 PromQL 查询 Prometheus 指标

规则和警报

使用 Prometheus 中的记录规则可以预计算存储在时序中的值,而警报规则在收集的指标中提供预定义条件的主动通知。 适用于 Prometheus 的 Azure Monitor 托管服务会自动部署一组预定义的录制规则,容器见解允许你轻松为 Kubernetes 群集启用一组常见警报规则。

录制和警报规则存储在 Azure Monitor 工作区中,你可以轻松地管理现有规则,并使用各种方法(例如 Azure 门户、CLI、Bicep 和 ARM)手动创建自定义规则。 有关详细信息,请参阅 Prometheus 规则组的 Azure Monitor 托管服务