本指南介绍如何设置并使用 Azure 托管 Prometheus,从 Azure Kubernetes 集群上的 Istio 服务网格加载项工作负载中收集指标。
先决条件
按照文档中的说明,在集群上启用 Istio 加载项的完整步骤
启用适用于 Prometheus 的 Azure Monitor 托管服务
Azure Monitor 的 Prometheus 托管服务从 Azure Kubernetes 群集收集数据。 若要为 Prometheus 启用Azure Monitor托管服务,必须创建Azure Monitor工作区来存储指标:
export AZURE_MONITOR_WORKSPACE=<azure-monitor-workspace-name>
export AZURE_MONITOR_WORKSPACE_ID=$(az monitor account create \
--name $AZURE_MONITOR_WORKSPACE \
--resource-group $RESOURCE_GROUP \
--location $LOCATION \
--query id -o tsv)
启用 Prometheus 加载项
若要从 Kubernetes 群集收集 Prometheus 指标,请启用 Prometheus 加载项:
az aks update --enable-azure-monitor-metrics --name $CLUSTER --resource-group $RESOURCE_GROUP --azure-monitor-workspace-resource-id $AZURE_MONITOR_WORKSPACE_ID
在 Azure Monitor 托管服务中自定义抓取 Prometheus 指标
在名为 prometheus-config 的文件中创建抓取配置,参照下面提供的示例。 此配置支持基于 Pod 注释的抓取,这允许 Prometheus 使用特定批注从 Pod 中自动发现和抓取指标。
重要
下面的抓取配置仅作示例。 我们 强烈建议 根据你的需求自定义它。 如果未进行调整,可能会导致频繁的指标收集以及增加数据存储产生的意外成本。
global:
scrape_interval: 30s
scrape_configs:
- job_name: workload
scheme: http
kubernetes_sd_configs:
- role: endpoints
relabel_configs:
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
action: keep
regex: true
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
action: replace
target_label: __metrics_path__
regex: (.+)
- source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
action: replace
regex: ([^:]+)(?::\d+)?;(\d+)
replacement: $1:$2
target_label: __address__
若要启用基于 Pod 注解的抓取,请创建 ConfigMapama-metrics-prometheus-config,以引用prometheus-config命名空间中的kube-system文件。
kubectl create configmap ama-metrics-prometheus-config --from-file=prometheus-config -n kube-system
验证指标集合
配置访问权限:在Azure门户中导航到Azure Monitor工作区,并为自己创建角色分配,以授予工作区资源的“监视数据读取者”角色。
生成示例流量:向之前创建的产品页发送一些请求,例如:
curl -s "http://${GATEWAY_URL_EXTERNAL}/productpage" | grep -o "<title>.*</title>"在 Azure 门户中查看/查询指标:导航到 Azure Monitor 工作区下的 Prometheus 资源管理器,并查询指标。 下面的示例显示了查询
istio_requests_total结果。
删除资源
如果要清理 Istio 服务网格和入口(留下群集),请运行以下命令:
az aks mesh disable --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}
如果要清理根据 Istio 操作指南文档创建的所有资源,请运行以下命令:
az group delete --name ${RESOURCE_GROUP} --yes --no-wait