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

使用 Prometheus 的托管服务收集 Istio 指标

Istio 是一个开放源代码服务网格,它以透明方式分层到现有的分布式应用程序上。 它提供一种统一且高效的方法来保护、连接和监视服务,尤其是在分布式应用程序体系结构中。

Istio 通过提供流量管理、可观测性、安全性和策略强制等功能,而无需修改应用程序代码,帮助开发人员处理服务到服务交互。 它广泛使用于现代云原生应用程序,尤其是在 Kubernetes 上。

Azure Kubernetes 服务(AKS)现在提供 基于 Istio 的服务网格加载项 ,该加载项经过正式支持并经过测试,以便与 AKS 和已启用 Azure Arc 的 Kubernetes 集成。

使用 适用于 Prometheus 功能的 Azure Monitor 托管服务,可以大规模收集和分析指标。 Prometheus 指标存储在 Azure Monitor 工作区中。 工作区支持分析工具,例如 Azure 托管 Grafana、具有 PromQL 的 Azure Monitor 指标资源管理器,以及 PromQL 和 Grafana 等开源工具。

本文提供了逐步指导,介绍如何使用适用于 Prometheus 的 Azure Monitor 托管服务,通过 AKS 的基于 Istio 的服务网格加载项或已启用 Azure Arc 的 Kubernetes 来收集 Istio 指标。 然后,可以在 Azure 托管 Grafana 中可视化指标。

先决条件

  • 已安装并配置 Azure CLI。 若要安装或升级,请参阅安装 Azure CLI

    如果在 AKS 中使用基于 Istio 的服务网格插件,则需要安装 Azure CLI 2.57.0 或更高版本。 可以运行 az --version 来验证版本。

  • 安装 Kubectl 以与 Kubernetes 群集交互。

局限性

  • 有关对 AKS 使用基于 Istio 的服务网格加载项的限制列表,请参阅 有关加载项的概述文章
  • 目前,不支持使用双向 TLS 身份验证从 Istio 配置中收集指标。
  • 目前,不支持将 Kiali 服务网格可视化与 Prometheus 的托管服务配合使用。

设置 Istio、适用于 Prometheus 的托管服务和 Azure 托管 Grafana

创建启用了适用于 Prometheus 的托管服务的 AKS 群集

首先,需要创建 AKS 群集(或使用现有群集),并为 Prometheus 和 Azure Managed Grafana 启用托管服务。 有关说明,请参阅 在 AKS 群集中启用 Prometheus 和 Grafana

如果使用 Azure CLI 创建新的 AKS 群集,可以使用以下命令:

az group create --name myResourceGroup --___location eastus
az aks create --resource-group myResourceGroup --name myAKSCluster --node-count 2  --enable-azure-monitor-metrics --generate-ssh-keys

设置 Istio

可以使用适用于 Prometheus 的托管服务来收集来自开源 Istio 和适用于 AKS 的基于 Istio 的服务网格加载项的指标:

获取 AKS 凭据

az account set --subscription <subscription id>
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster

为 Prometheus 设置托管服务以收集 Istio 指标

若要使用适用于 Prometheus 的托管服务从 Istio 设置中收集指标,可以使用 Pod 注释。 这些批注是使用 Istio 自动设置的。 需要在适用于 Prometheus 的托管服务中启用基于 Pod 注释的抓取。

若要启用抓取,请在适用于 Prometheus 的托管服务 (ama-metrics-settings-configmap.yaml) 中自定义配置映射,以包括 istio-system 命名空间以及 Istio sidecar 设置的相关命名空间。 例如,如果配置 Istio 将 sidecar 注入到 my-namespace,请按如下所示更新配置映射:

pod-annotation-based-scraping: |-
    podannotationnamespaceregex = "aks-istio-system|my-namespace"

警告

从许多命名空间中抓取 Pod 批注可能会生成大量指标,具体取决于具有批注的 Pod 数。

有关详细信息,请参阅启用基于 Pod 批注的抓取

将更新的配置映射应用到 AKS 群集:

kubectl apply -f ama-metrics-settings-configmap.yaml

查询 Istio 指标

从 Istio 抓取的指标存储在与 Prometheus 托管服务关联的 Azure Monitor 工作区中。 可以直接从工作区或通过连接到工作区的 Azure 托管 Grafana 实例查询指标。

在 Azure Monitor 工作区中查看 Istio 指标:

  1. 在 Azure 门户中,转到 AKS 群集。

  2. 监控中,选择洞察>监控设置

    展示用于查看 Azure Monitor 工作区的选项的图表。

  3. 选择 Azure Monitor 工作区实例。 在实例概述页上,选择“ 指标 ”部分以查询 istio_requests_total的指标。

    或者,可以选择 Azure 托管 Grafana 实例。 然后,在实例概述页上,选择终结点 URL。 此作将打开 Grafana 门户,可在其中查询 Azure 容器存储指标。 数据源会自动配置,以便您可以从关联的 Azure Monitor 工作区查询指标。

若要详细了解如何从 Azure Monitor 工作区查询 Prometheus 指标,请参阅 将 Grafana 连接到 Azure Monitor Prometheus 指标

导入适用于 Istio 的 Grafana 仪表板

若要使用 ID 或 JSON 导入以下 Grafana 仪表板,请按照 Grafana 中的“导入仪表板”中的说明作:

摘要

本文演示了如何为 Prometheus 配置托管服务配置,以便从基于 Istio 的服务网格插件收集指标。 然后,它演示了如何在 Azure Monitor 中查询收集的指标。

按照本文中的步骤作,可以使用 Azure 上的 Prometheus 托管服务来有效监视 Istio。 此监视可让你深入了解应用程序的性能和行为。

故障排除

如果遇到任何问题,请参阅 Prometheus 接口的故障排除信息