使用 Grafana 可视化指标
此任务展示了如何设置和使用 Istio Dashboard 监控网格流量。作为此任务的一部分, 您将使用 Grafana 的 Istio 附加组件和基于 Web 的界面来查看服务网格流量数据。
此任务使用 Bookinfo 作为示例应用。
在开始之前
- 在自身集群中安装 Istio。
- 安装 Grafana 附加组件。
- 安装 Prometheus 附加组件。
- 部署 Bookinfo 应用。
查看 Istio Dashboard
验证
prometheus
服务正在本集群中运行。在 Kubernetes 环境中,执行以下命令:
$ kubectl -n istio-system get svc prometheus
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
prometheus ClusterIP 10.100.250.202 <none> 9090/TCP 103s
验证 Grafana 服务正在本集群中运行。
在 Kubernetes 集群中,执行以下命令:
$ kubectl -n istio-system get svc grafana
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
grafana ClusterIP 10.103.244.103 <none> 3000/TCP 2m25s
通过 Grafana UI 打开 Istio Dashboard。
在 Kubernetes 集群中,执行以下命令:
$ istioctl dashboard grafana
在浏览器中访问 http://localhost:3000/d/G8wLrJIZk/istio-mesh-dashboard。
Istio Dashboard 看上去类似于:
发送流量到网格应用。
对于 Bookinfo 示例,在浏览器中访问
http://$GATEWAY_URL/productpage
或者执行以下命令:要查看追踪数据,必须向服务发送请求。请求的数量取决于 Istio 的采样率。 采样率在安装 Istio 时设置,默认采样速率为 1%。在第一个跟踪可见之前,您需要发送至少 100 个请求。 使用以下命令向
productpage
服务发送 100 个请求:$ for i in $(seq 1 100); do curl -s -o /dev/null "http://$GATEWAY_URL/productpage"; done
$GATEWAY_URL
是在 Bookinfo 示例中设置的值。刷新几次页面(或发送几次命令)以产生少量流量。
再次查看 Istio Dashboard,它应该反映出所产生的流量,看起来类似于:
这提供了网格以及网格中的服务和工作负载的全局视图,可以通过导航到特定的仪表盘来获取更多关于服务和工作负载的详细信息, 如下所述。
可视化服务仪表盘。
从 Grafana 仪表盘左上角的导航菜单中,可以导航到 Istio Service Dashboard 或者在浏览器中访问 http://localhost:3000/d/LJ_uJAvmk/istio-service-dashboard。
您可能需要在服务下拉列表中选择一项服务
Istio Service Dashboard 看上去类似于:
这里给出了服务,以及更进一步的服务的客户端工作负载(调用该服务的工作负载)和服务工作负载(提供该服务的工作负载) 的详细指标。
可视化工作负载仪表盘。
从 Grafana 仪表盘左上角的导航菜单中,可以导航到 Istio Workload Dashboard 或者在浏览器中访问 http://localhost:3000/d/UbsSZTDik/istio-workload-dashboard。
Istio Workload Dashboard 看上去类似于:
这里给出了每一个工作负载,以及更进一步的该工作负载的入站工作负载(将请求发送到该工作负载的工作负载) 和出站服务(此工作负载向其发送请求的服务)的详细指标。
关于 Grafana Dashboard
Istio Dashboard 包括三个主要部分:
网格摘要视图:这部分提供网格的全局摘要视图,并显示网格中(HTTP/gRPC 和 TCP)的工作负载。
单独的服务视图:这部分提供关于网格中每个单独的(HTTP/gRPC 和 TCP) 服务的请求和响应指标以及关于该服务的客户端和服务工作负载的指标。
单独的工作负载视图:这部分提供关于网格中每个单独的(HTTP/gRPC 和 TCP) 工作负载的请求和响应指标以及关于该工作负载的入站工作负载和出站服务的指标。
有关如何创建,配置和编辑仪表盘的更多信息,请参见 Grafana 文档。
清除
移除任何可能正在运行的
kubectl port-forward
进程:$ killall kubectl
如果不打算探索任何后续任务,请参阅清除 Bookinfo 的说明来关闭应用。