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

Azure Monitor 和 Prometheus 介绍了适用于 Prometheus 的 Azure Monitor 托管服务,这是一项完全托管的服务,可用于收集、存储和分析 Prometheus 指标,而无需维护自己的 Prometheus 服务器。 本文提供有关从现有自管理 Prometheus 迁移到此 Azure 服务的指南,用于监视虚拟机和 Kubernetes 群集。

重要概念

指标集合

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

  • 完全托管服务或替代自管理 Prometheus
    Azure Monitor 在已启用 AKS 或已启用 Arc 的 Kubernetes 群集中安装托管加载项以收集数据。 可以使用自定义资源(pod 和服务监控器)以及附加的 ConfigMaps 来配置数据收集。 Pod/服务监视器和 ConfigMap 的格式与开源 Prometheus 相同。 通过这种方式,可以直接将现有配置与 Azure 托管 Prometheus 配合使用。
  • 远程写入目标
    使用 Prometheus 远程写入功能,将运行在 Azure 或非 Azure 环境中的现有 Prometheus 服务器的指标发送到 Azure Monitor 工作区。 然后,你可以逐渐从自托管迁移到完全托管的插件。

存储

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

Alerting

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

Visualization

Azure 托管 Grafana 是 Grafana Labs 基于 Grafana 软件构建的数据可视化平台。 Azure 运行并支持此完全托管的 Azure 服务。 无论是使用 Azure 托管 Grafana 还是自承载 Grafana,都可以从 Azure Monitor 工作区查询指标。 为您的 AKS 或支持 Azure Arc 的 Kubernetes 启用托管 Prometheus 时,您将获得开箱即用的仪表板,这些仪表板与开源 Prometheus Operator 使用的相同。

Cost

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

开源 Prometheus 的限制和差异

评估当前配置

在开始迁移之前,请查看您当前自托管的 Prometheus 堆栈的以下信息。

已安装 Prometheus 版本

如果使用远程写入将数据发送到 Azure Monitor 工作区,则需要 Prometheus 版本。 请参阅 支持的版本

容量需求

Azure Monitor 工作区高度可缩放,可支持大量指标引入。 可以增加默认限制,因为规模需要它。

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

其他详细信息

查看以下配置,以配置您的自托管 Prometheus 环境。 此评估有助于确定迁移过程中需要注意的任何自定义。

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

配置 Azure 托管 Prometheus

通过创建 Azure Monitor 工作区 作为远程终结点,以将 Prometheus 设定中的指标通过远程写入发送,从而启用 Azure 托管 Prometheus。

启用托管 Prometheus 后,可以为 AKS 和已启用 Arc 的群集启用托管 Prometheus 加载项,也可以配置 远程写入 以将数据从自承载 Prometheus 环境发送到 Azure 托管 Prometheus,而无需直接载入现有群集。 可以选择长期保留本地托管 Prometheus 环境,或者在迁移到托管的附加组件时,作为过渡期的解决方案来保留远程写入功能。

配置指标收集和导出程序

托管加载项

查看 Azure Monitor 中托管插件在 默认 Prometheus 指标配置中所收集的默认指标。 可以启用或禁用的预定义目标与开源 Prometheus 运算符可用的目标相同。 唯一的区别是,默认收集的指标是自动配置的仪表板所查询的那些指标。

  • 通过 修改指标设置 ConfigMap 自定义默认目标的集合。 对于其他目标或更复杂的自定义,请使用 ConfigMaps自定义资源定义(CRDs)创建自定义抓取任务。
  • 查看具有特选配置和说明的 常用工作负载 列表,以帮助你使用 Azure 托管 Prometheus 设置指标集合。
  • 如果您使用 Pod 监视器和服务监视器来监视工作负荷,请通过将 apiVersion 更改为 azmonitoring.coreos.com/v1 来迁移到 Azure 托管 Prometheus。
  • 如果有现有的 Prometheus 配置 YAML 文件,请将它们转换为 ConfigMap 加载项。 请参阅 将配置文件部署为 ConfigMap

远程写入

如果使用远程写入将已擦除的指标转发到 Azure Monitor 工作区,请在发送指标之前配置筛选或重新标记。 请参阅 Prometheus 远程写入配置。 此外,请考虑 进行远程写入优化 ,以调整配置设置以提高性能。 考虑减少 max_shards 和增加容量并 max_samples_per_send 避免内存问题。

迁移警报和仪表板

警报规则和录制规则

Azure 托管 Prometheus 支持 Prometheus 警报规则,并使用 Prometheus 规则组记录规则。 为 Kubernetes 群集启用托管 Prometheus 时,会自动配置建议的录制规则,并且可以启用 Prometheus 社区建议的一组警报。

如果想要保留的自承载 Prometheus 环境中存在现有的警报和记录规则,请参阅 将现有规则转换为 Prometheus 规则组 Azure 资源管理器模板

Dashboards

如果使用 Grafana,请将 Grafana 连接到 Azure Monitor Prometheus 指标。 可以通过将现有仪表板 导入 Grafana 来重复使用它们。

如果将 Azure 托管 Grafana 或 Azure Monitor 仪表板与 Grafana 配合使用,则会自动预配默认或推荐的仪表板。 请参阅 Azure Monitor 中的默认 Prometheus 指标配置 ,查看自动预配的仪表板列表。

测试和验证

迁移完成后,验证设置是否按预期工作:

监视限制和配额

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