Azure Monitor 适用于 Prometheus 的托管服务远程写入
适用于 Prometheus 的 Azure Monitor 托管服务旨在替代自我管理的 Prometheus,使你无需在 Kubernetes 群集中管理 Prometheus 服务器。 你还可以选择使用托管服务来集中处理自我管理 Prometheus 群集中的需要长期保留的数据,以及创建各个群集的集中化视图。 在这种情况下,可以使用 remote_write 将数据从自我管理的 Prometheus 发送到我们的 Azure 托管服务中。
体系结构
可以将 Kubernetes 群集上运行的 Prometheus 配置为远程写入 Azure Monitor 工作区。 在使用 Prometheus 远程写入配置将指标引入 Azure Monitor 工作区时,目前支持以下身份验证类型:用户分配的托管标识或 Microsoft Entra ID 应用程序。
Azure Monitor 还提供了一个反向代理容器(Azure Monitor 挎斗容器),该容器提供用于引入 Prometheus 远程写入指标的抽象,并帮助对数据包进行身份验证。
建议在环境中运行的自托管 Prometheus 配置中直接配置远程写入。 如果直接配置不支持首选的身份验证,可以使用 Azure Monitor 挎斗容器。
支持的版本
- 托管标识身份验证需要高于 v2.45 的 Prometheus 版本。
- Microsoft Entra ID 应用程序身份验证需要高于 v2.48 的 Prometheus 版本。
配置远程写入
配置远程写入的过程取决于群集配置和使用的身份验证类型。
- 建议将托管标识用于 Azure Kubernetes 服务 (AKS) 和已启用 Azure Arc 的 Kubernetes 群集。
- Microsoft Entra ID 可用于 Azure Kubernetes 服务 (AKS) 和已启用 Azure Arc 的 Kubernetes 群集,并且对于在另一个云或本地运行的 Kubernetes 群集是必需的。
有关为用户分配的托管标识和 Microsoft Entra ID 应用程序配置远程写入的详细信息,请参阅在 Kubernetes 上为 Prometheus Operator 配置远程写入。 此选项可用于在任何环境中运行的自托管 Prometheus。
还可以使用挎斗容器为 Kubernetes 群集上的 Prometheus 配置远程写入。 有关如何使用挎斗容器为 Kubernetes 群集配置远程写入的详细信息,请参阅以下文章。
- 使用具有托管标识身份验证的挎斗容器将 Prometheus 数据从 AKS 发送到 Azure Monitor
- 使用具有 Microsoft Entra ID 身份验证的挎斗容器将 Prometheus 数据从 AKS 发送到 Azure Monitor
- 使用具有 Microsoft Entra ID 工作负载 ID 身份验证的挎斗容器将 Prometheus 数据发送到 Azure Monitor
- 使用具有 Microsoft Entra ID Pod 托管标识身份验证的挎斗容器将 Prometheus 数据发送到 Azure Monitor。 Microsoft Entra Pod 托管标识已被弃用,将由 Microsoft Entra 工作负载 ID 取代。 建议使用 Microsoft Entra 工作负载 ID 身份验证。
从虚拟机和虚拟机规模集进行远程写入
可以使用远程写入将 Prometheus 数据从虚拟机和虚拟机规模集发送到 Azure Monitor 工作区。 服务器可以是 Azure 托管的,也可以在任何其他环境中。 有关详细信息,请参阅将 Prometheus 指标从虚拟机发送到 Azure Monitor 工作区。
验证远程写入是否正常工作
使用以下方法验证 Prometheus 数据是否正在发送到 Azure Monitor 工作区。
Kubectl 命令
使用以下命令查看挎斗容器中的日志。 如果 avgBytesPerRequest
和 avgRequestDuration
输出具有非零值,则表明远程写入数据正在流动。
kubectl logs <Prometheus-Pod-Name> <Azure-Monitor-Side-Car-Container-Name> --namespace <namespace-where-Prometheus-is-running>
# example: kubectl logs prometheus-prometheus-kube-prometheus-prometheus-0 prom-remotewrite --namespace monitoring
此命令的输出具有以下格式:
time="2022-11-02T21:32:59Z" level=info msg="Metric packets published in last 1 minute" avgBytesPerRequest=19713 avgRequestDurationInSec=0.023 failedPublishing=0 successfullyPublished=122
使用 PromQL 的 Azure Monitor 指标资源管理器
若要检查指标是否流向 Azure Monitor 工作区,请在 Azure 门户中的 Azure Monitor 工作区中选择“指标”。 使用指标资源管理器查询你期望从自托管 Prometheus 环境中获得的指标。 有关详细信息,请参阅指标资源管理器。
Azure Monitor 工作区中的 Prometheus 资源管理器
Prometheus 资源管理器提供了在 Azure 环境中与 Prometheus 指标交互的便捷方法,使监视和故障排除更高效。 若要使用 Prometheus 资源管理器,请转到 Azure 门户中的 Azure Monitor 工作区,然后选择“Prometheus 资源管理器”以查询你期望从自托管 Prometheus 环境中获得的指标。 有关详细信息,请参阅 Prometheus 资源管理器。
Grafana
在 Grafana 中使用 PromQL 查询,并验证结果是否返回预期数据。 有关为 Azure 适用于 Prometheus 的托管服务配置 Grafana 的详细信息,请参阅通过托管系统标识将 Azure Monitor 适用于 Prometheus 的托管服务用作 Grafana 的数据源
远程写入疑难解答
如果远程数据未显示在 Azure Monitor 工作区中,请参阅远程写入故障排除以了解常见问题和解决方案。