查询 Prometheus 的指标
此任务说明如何使用 Prometheus 查询 Istio 指标, 作为此任务的一部分,使用基于 Web 的界面进行指标查询。
Bookinfo 示例应用程序在整个任务中用作示例应用程序。
前提条件
安装 Istio 在您的集群中并部署应用程序。
查询 Istio 度量标准
- 验证
prometheus
服务是否在您的集群中运行(从 0.8 开始, 默认情况下prometheus
设置包含在istio.yaml
和istio-demo-auth.yaml
中)
在 Kubernetes 环境中,执行以下命令:
$ kubectl -n istio-system get svc prometheus
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
prometheus 10.59.241.54 <none> 9090/TCP 2m
- 将流量发送到服务网格。
对于 Bookinfo 示例,请在 Web 浏览器中访问 http://$GATEWAY_URL/productpage
或发出以下命令:
$ curl http://$GATEWAY_URL/productpage
$GATEWAY_URL
是 Bookinfo 示例中设置的值。
- 打开 Prometheus UI。
在 Kubernetes 环境中,执行以下命令:
$ kubectl -n istio-system port-forward $(kubectl -n istio-system get pod -l app=prometheus -o jsonpath='{.items[0].metadata.name}') 9090:9090 &
在Web浏览器中访问 http://localhost:9090/graph。
- 执行 Prometheus 查询。
在网页顶部的 “Expression” 输入框中,输入文本: istio_request_count
, 然后,单击 Execute 按钮。
结果将类似于:
其他查询尝试:
- 对
productpage
服务的所有请求的总数:
istio_request_count{destination_service="productpage.default.svc.cluster.local"}
- 对
reviews
服务的v3
的所有请求的总数:
istio_request_count{destination_service="reviews.default.svc.cluster.local", destination_version="v3"}
此查询返回 reviews
服务 v3 的所有请求的当前总计数。
- 过去 5 分钟内对所有
productpage
服务的请求率:
rate(istio_request_count{destination_service=~"productpage.*", response_code="200"}[5m])
关于 Prometheus 的附加组件
Mixer 中内置了 Prometheus 适配器,这一适配器将生成的指标值以端点的形式公开出来;Prometheus 插件则是一个预配置的 Prometheus 服务器,他一方面从上述 Mixer 端点抓取 Istio 指标,另一方面还为 Istio 指标提供了持久化存储和查询的服务。
配置好的 Prometheus 插件会抓取以下的端点:
istio-mesh
(istio-telemetry.istio-system:42422
): 所有 Mixer 生成的网格指标。mixer
(istio-telemetry.istio-system:10514
): 所有特定于 Mixer 的指标, 用于监控 Mixer 本身。envoy
(istio-proxy:15090
): envoy 生成的原始统计数据。Prometheus 从 envoy 暴露的端口获取统计数据,过滤掉不想要的数据。pilot
(istio-pilot.istio-system:10514
): 所有 pilot 的指标。galley
(istio-galley.istio-system:10514
): 所有 galley 的指标。istio-policy
(istio-policy.istio-system:10514
): 所有 policy 的指标。
有关查询 Prometheus 的更多信息,请阅读他们的查询文档。
清理
- 删除任何可能仍在运行的
kubectl port-forward
进程:
$ killall kubectl
- 如果您不打算探索任何后续任务,请参阅 Bookinfo 清理说明以关闭应用程序。