你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
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 的服务网格加载项的指标:
- 若要设置开源 Istio,请参阅 Istio 安装指南。
- 若要为 AKS 设置基于 Istio 的服务网格加载项,请参阅 为 Azure Kubernetes 服务部署基于 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 指标:
在 Azure 门户中,转到 AKS 群集。
在监控中,选择洞察>监控设置。
选择 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 接口的故障排除信息。