你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

从自托管 Prometheus 迁移到适用于 Prometheus 的 Azure Monitor 托管服务

本文为计划从自管理的 Prometheus 迁移到 Azure Monitor 的 Prometheus 托管服务的组织提供指导。 Prometheus 是一种广为采用的开源监视解决方案,以其强大的功能收集、存储和查询时序数据而闻名。 可以从自管理 Prometheus 设置开始,但随着系统的规模,管理 Prometheus 环境的运营开销可能会变得很大。 适用于 Prometheus 的 Azure Monitor 托管服务提供 Prometheus 的核心优势以及可伸缩性,并减少了维护工作量。

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

借助 Prometheus 的 Azure Monitor 托管服务,可以利用 Prometheus 功能,同时受益于 Azure 的云原生企业级功能。 主要优点包括:

重要概念

指标集合

在以下任一配置中使用 Azure 托管 Prometheus:

  • 完全托管服务或自托管 Prometheus 的即插即用替代项:在这种情况下,数据由已启用 AKS 或 ARC 的 K8S 群集中的托管加载项收集。 可以使用自定义资源(Pod 和服务监控器)和/或附加组件 ConfigMaps 配置数据收集。 Pod/服务监视器和 ConfigMap 的格式与开源 Prometheus 相同,使你能够直接将现有配置与 Azure 托管 Prometheus 配合使用。
  • 远程写入目标:使用 Prometheus remote_write从 Azure 或非 Azure 环境中运行的现有 Prometheus 服务器发送指标,将数据发送到 Azure Monitor 工作区。 这非常适合从自托管到完全托管加载项的逐步迁移。

在 AKS 群集中启用托管 Prometheus 加载项将部署 PodServiceMonitor 自定义资源定义,以便您创建自己的自定义资源。 使用 Pod 监视器和服务监视器(类似于 OSS Prometheus Operator)自定义抓取目标。

注释

Azure 托管 Prometheus 目前不支持 PrometheusRule CRD。

存储

Prometheus 指标存储在 Azure Monitor 工作区(AMW)中,这是 Azure Monitor 收集的数据的唯一环境。 每个工作区都有其自己的数据存储库、配置和权限。 数据存储 18 个月。

注释

Log Analytics 工作区包含来自多个 Azure 资源的日志和指标数据,而 Azure Monitor 工作区当前仅包含与 Prometheus 相关的指标。

警报

Azure 托管 Prometheus 规则组 提供了一种托管且可扩展的方式,用于创建和更新记录规则和警报。 规则组遵循 Prometheus 规则配置 ,可以将现有录制规则和警报转换为 Azure 托管 Prometheus 规则组。 Prometheus 警报与 Azure Monitor 中的其他警报集成。

可视化

Azure 托管 Grafana 是 Grafana Labs 基于 Grafana 软件构建的数据可视化平台。 它构建为由 Microsoft 运营和支持的完全托管的 Azure 服务。 无论是使用 Azure 托管 Grafana 还是自承载 Grafana,都可以从 Azure Monitor 工作区查询指标。 为支持 AKS 或 ARC 的 Kubernetes 启用托管 Prometheus 时,我们会预配现成仪表板,这些仪表板与开源 Prometheus Operator 使用的仪表板相同。

开源 Prometheus 的限制和差异

以下限制适用于 Prometheus 的 Azure Monitor 托管服务:

1.评估当前设置

在开始迁移之前,请查看当前 Prometheus 自托管堆栈的详细信息如下:

容量要求
Azure Monitor 工作区高度可缩放,可支持大量指标引入。 默认情况下,这些限制可以根据需求的规模轻松增加。

  • 对于托管附加组件,指标的数据量取决于 AKS 群集的大小以及您计划运行的工作负荷数量。 可以在几个群集上启用 Azure 托管 Prometheus 来估计指标量。
  • 如果计划在完全迁移到托管加载项代理之前使用远程写入,则可以根据历史使用情况确定指标引入量。 还可以检查指标 prometheus_remote_storage_samples_in_total 以评估通过远程写入发送的指标量。

已安装 Prometheus 版本
如果使用 remote_write将数据发送到 Azure Monitor 工作区,则需要 Prometheus 版本。 请参阅 支持的版本

成本
定价基于指标引入和查询量。 请参阅有关 Azure Monitor 定价中的指标定价的详细信息。 可以使用 Azure 定价计算器 来估算成本。

其他详细信息
查看以下配置,了解自承载 Prometheus 设置。 此评估将有助于确定迁移过程中需要注意的任何自定义项。

  • 警报和记录规则配置
  • 活动数据源和导出程序
  • 仪表板

2.配置 Azure 托管 Prometheus

有两种方法可以配置 Azure 托管 Prometheus,如以下选项卡所述。

请参阅 为已启用 AKS 或 ARC 的群集启用托管 Prometheus ,为 AKS 群集启用托管 Prometheus 加载项并预配 Azure Monitor 工作区。

3. 配置指标收集和导出程序

有两种方法可以配置指标集合,如以下选项卡所述。

  1. 查看 Azure Monitor 中托管加载项在 默认 Prometheus 指标配置中收集的默认数据/指标。 可以启用/禁用的预定义目标与开源 Prometheus 运算符提供的预定义目标相同。 唯一的区别是,默认情况下收集的指标是自动预配仪表板查询的指标。 这些默认指标称为最小引入配置文件

  2. 若要自定义使用加载项擦除的目标,请使用 加载项 ConfigMap 或使用 自定义资源(Pod 和服务监视器)配置数据收集。

    • 如果正在使用 Pod 监视器和服务监视器来监视工作负载,请通过将 Pod/服务监视器中的 apiVersion 更改为 azmonitoring.coreos.com/v1 来将其迁移到 Azure 托管的 Prometheus。
    • Azure 托管 Prometheus 加载项 ConfigMap 遵循与开源 Prometheus 相同的格式,因此如果已有 Prometheus config yaml 文件,请将它们转换为加载项 ConfigMap。 请参阅 在 Azure Monitor 中为 Prometheus 指标创建和验证自定义配置文件
  3. 查看具有特选配置和说明的 常用工作负载 列表,以帮助你使用 Azure 托管 Prometheus 设置指标集合。

4.迁移警报和仪表板

警报规则和录制规则

Azure 托管 Prometheus 通过 Prometheus 规则组功能支持 Prometheus 的预警规则和记录规则。 请参阅 将现有规则转换为 Prometheus 规则组 ARM 模板

对于托管加载项,建议的记录规则会在为支持 AKS 或 ARC 的群集启用托管 Prometheus 时自动设置。 查看 Azure Monitor 中默认 Prometheus 指标配置中自动预配的录制规则列表。 Prometheus 社区推荐的警报也可用,并且可以开箱即用。

仪表板

如果使用 Grafana,请将 Grafana 连接到 Azure Monitor Prometheus 指标。 可以通过将现有仪表板 导入 Grafana 来重复使用它们。 如果将 Azure 托管 Grafana 或 Azure Monitor 仪表板与 Grafana 配合使用,则会自动设置和预配默认/建议的仪表板,以实现指标可视化。 查看 Azure Monitor 中默认 Prometheus 指标配置中自动预配的仪表板列表。

5. 测试和验证

迁移完成后,使用以下步骤验证设置是否按预期工作。

  1. 验证是否能够从 Azure Monitor 工作区查询指标。 可以直接通过 Azure 门户中工作区实例的 “指标 ”选项或连接到工作区的 Grafana 实例查询指标。
  2. 验证是否可以访问 Azure 托管 Prometheus 的 Prometheus 接口,以验证已擦除的作业和目标。 请参阅 Azure 托管 Prometheus 的 Access Prometheus 接口
  3. 验证任何警报工作流是否按预期触发。
  4. 验证远程写入是否按预期工作。 请参阅验证远程写入部署
  5. 有关其他故障排除指南,请参阅排查 Azure Monitor 中 Prometheus 指标的收集问题

6. 监视限制和配额

Azure Monitor 工作区对数据引入有默认限制和配额。 载入更多群集并达到引入限制时,可能会遇到限制。 监视工作区摄取限制并发出相关警报,以确保你未达到限制阈值。

后续步骤