服务网格ASM的Mixerless Telemetry技术,为业务容器提供了无侵入式的遥测数据。遥测数据作为监控指标被ARMS Prometheus或Prometheus采集,实现服务网格可观测性。本文以Prometheus为例,介绍如何基于ASM采集应用监控指标实现服务网格的可观测性。
前提条件
- 已创建ASM实例。具体操作,请参见创建ASM实例。
- 已创建Kubernetes托管版集群。具体操作,请参见创建Kubernetes托管版集群。
- 已添加集群到ASM实例。具体操作,请参见添加集群到ASM实例。
步骤一:安装Prometheus
- 下载Istio安装包,并解压。关于Istio安装包下载地址,请参见Download Istio。
- 通过kubectl连接集群。具体操作,请参见获取集群KubeConfig并通过kubectl工具连接集群。
- 执行以下命令,安装Prometheus。
kubectl --kubeconfig <kubeconfig位置> apply -f <解压后Istio安装包位置>/samples/addons/prometheus.yaml
步骤二:创建集群外服务(ServiceEntry)
- 登录ASM控制台。
- 在左侧导航栏,选择 。
- 在网格管理页面,找到待配置的实例,单击实例的名称或在操作列中单击管理。
- 在网格详情页面左侧导航栏,选择功能设置。 ,然后在右侧页面,单击
- 在功能设置更新面板选中开启采集Prometheus监控指标,选择启用已有Prometheus,在文本框中输入Prometheus服务地址,本文使用默认服务地址http://prometheus:9090,然后单击确定。说明 本文已自建Prometheus为例,如果您使用的是ARMS Prometheus,请参见集成ARMS Prometheus实现网格监控。在网格详情页面左侧导航栏选择,可以看到生成的相关EnvoyFilter。
步骤三:配置Prometheus
- 配置Istio的监控指标。
- 删除Prometheus Pod,使Prometheus配置生效。
- 登录容器服务管理控制台。
- 在控制台左侧导航栏,单击集群。
- 在集群列表页面,单击目标集群名称或者目标集群右侧操作列下的详情。
- 在集群管理页左侧导航栏,选择 。
- 在容器组页面单击Prometheus操作列下的删除。
- 在删除容器组对话框单击确定。
- 执行以下命令,查看Prometheus配置中的
job_name
。kubectl --kubeconfig <kubeconfig位置> get cm prometheus -n istio-system -o jsonpath={.data.prometheus\\.yml} | grep job_name
预期输出:
- job_name: 'istio-mesh' - job_name: 'envoy-stats' - job_name: 'istio-policy' - job_name: 'istio-telemetry' - job_name: 'pilot' - job_name: 'sidecar-injector' - job_name: prometheus job_name: kubernetes-apiservers job_name: kubernetes-nodes job_name: kubernetes-nodes-cadvisor - job_name: kubernetes-service-endpoints - job_name: kubernetes-service-endpoints-slow job_name: prometheus-pushgateway - job_name: kubernetes-services - job_name: kubernetes-pods - job_name: kubernetes-pods-slow
步骤四:生成监控指标数据
- 执行以下命令,在ACK集群中部署podinfo示例应用。
- 执行以下命令,请求podinfo应用,以产生监控指标数据。
podinfo_pod=$(k get po -n test -l app=podinfo -o jsonpath={.items..metadata.name}) for i in {1..10}; do kubectl --kubeconfig "$USER_CONFIG" exec $podinfo_pod -c podinfod -n test -- curl -s podinfo:9898/version echo done
- 在Envoy容器内确认监控指标已生成。
结果验证
- 使用负载均衡的方式对外暴露Prometheus服务。具体操作,请参见使用Service对外暴露应用。
- 登录容器服务管理控制台。
- 在控制台左侧导航栏,单击集群。
- 在集群列表页面,单击目标集群名称或者目标集群右侧操作列下的详情。
- 在集群管理页左侧导航栏,选择 。
- 在服务页面单击Prometheus外部端点列下的IP地址。
- 在Prometheus中输入istio_requests_total,单击Execute。如下图所示,说明Prometheus采集应用监控指标成功。