(4) -- Jaeger, Prometheus, Kiali, GRAFANA使用指引

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(4) -- Jaeger, Prometheus, Kiali, GRAFANA使用指引相关的知识,希望对你有一定的参考价值。

参考技术A 官方文档: https://docs.openshift.com/container-platform/3.11/servicemesh-install/servicemesh-install.html#install_chapter_6

Jaeger是一个开源的分布式跟踪系统。您可以使用jaeger来监控和排查基于微服务的分布式系统的故障。使用jaeger,您可以执行跟踪组成应用程序的各种微服务执行请求的路径。默认情况下,jaeger是作为 Service Mesh 的一部分安装的。

1.1.1 部署了bookinfo应用程序后,通过访问http://$gateway_url/productpage并刷新页面几次来生成一些访问痕迹。

1.1.2 将jaeger的路径设置到环境变量

1.1.3 从浏览器访问jaeger

1.1.4 在Jaeger仪表板的左侧窗格中,从Service菜单中选择“productpage”,然后单击窗格底部的“Find Traces”按钮。将显示跟踪列表,如下图所示:

1.1.5 单击列表中的某个跟踪以打开该跟踪的详细视图。如果单击顶部(最新)跟踪,你将看到与`/productpage相对应的详细信息。

上一图中的跟踪由几个嵌套的span组成,每个span对应于一个bookinfo服务调用,所有这些都是响应 /productpage 请求而执行的。总体处理时间为2.62s, details service 花费3.56ms, reviews service 花费2.6s, ratings service 花费5.32ms,对远程服务的每一个调用都由客户端和服务端的span表示。例如,详细信息客户端范围标记为productpage details.myproject.svc.cluster.local:9080。嵌套在它下面的span,标记为details details.myproject.svc.cluster.local:9080,对应于请求的服务器处理。跟踪还显示对istio策略的调用,该策略反映了istio所做的授权检查。

Prometheus是一个开源的服务监控工具。Prometheus以指定的时间间隔从配置的目标收集metrics,评估规则表达式,显示结果,并在观察到某些条件为真时触发警报。Grafana或其他API Consumer被用于可视化展示收集到的数据。

2.1.1 验证prometheus服务是否正在集群中运行。

2.1.2 通过访问bookinfo应用程序生成网络流量:

2.1.3 将Prometheus访问路径写入环境变量

2.1.4 打开浏览器访问 http://$PROMETHEUS_URL

2.1.5 在Expression字段中,输入istio_request_duration_seconds_count,然后单击Execute按钮。将看到类似下图:

2.1.6 你可以使用选择器缩小查询范围。例如,istio_request_duration_seconds_count_destination_workload=“reviews-v2”仅显示具有匹配destination_workload标签的计数器。有关使用查询的更多信息,请参阅 Prometheus文档 。

2.1.7 要列出所有可用的Prometheus Metrics,请运行以下命令

Kiali运行于Isito之上,用于可视化服务网格拓扑,以提供对断路器、请求速率等功能的可见性。Kiali提供了从Application到Service和Workload的不同层次的Service Mesh组件的可见性。Kiali实时提供了namespace的交互式图形化界面。Kiali可以在多个层次(Application、versions、workloads)上显示所选图形节点或边缘的上下文和图表信息。

3.1.1 访问Kiali控制台的路径已经存在。运行以下命令获取路由和Kiali Url

3.1.2 可以看到这样的结果:

3.1.3 在浏览器访问Kiali https://$KIALI_URL

登录后,会看到OVERVIEW PAGE,该页面提供了系统中各个namespace的运行状况的快照。

3.3.1 单击左侧导航中的“Graph”。Graph page显示一个包含所有微服务的图形,这些微服务由通过它们之间的请求连接。在这个页面上,您可以看到服务是如何交互的。

3.3.2 从namespace菜单中,选择BookInfo。现在,图表只显示BookInfo应用程序中的服务。

3.3.3 单击左下角的“Legend”。Kiali显示一个包含图形图例的窗口。

3.3.4 将鼠标悬停在ProductPage节点上,将高亮显示该节点的传入和传出流量。

3.3.5 单击ProductPage节点,页面右侧显示ProductPage的详细信息。

3.4.1 单击左侧导航中的“Services”链接。在Services Page上,您可以查看集群中运行的所有Service的列表以及有关这些Service的其他信息,例如运行状况和请求错误率。

3.4.2 将鼠标hover在任何服务的运行状况图标上,以查看有关该服务的运行状况信息。当服务处于联机状态并且响应请求时没有错误,则认为它是健康的。

3.4.3 单击“Reviews ”服务查看其详细信息。请注意,此服务有三个不同的版本。

3.4.4 单击其中一个服务的名称以查看有关该服务的其他详细信息。

3.5.1 单击左侧导航中的istio config链接。在此页面上,您可以看到当前运行的所有配置,如Circuit Breakers, Destination Rules, Fault Injection, Gateways, Routes, Route Rules, and Virtual Services.

3.5.2 单击其中一个配置以查看其他附加信息。

单击左侧导航中的Distributed Tracing链接。在这个页面上,您可以看到Jaeger提供的跟踪数据。

Grafana是一个开源工具,用于创建监控、metrics分析、并提供可视化的dashboard。您可以使用grafana查询metrics、可视化metrics、告警,无论它们存储在graphite、elasticsearch、opentsdb、prometheus或infloxdb。Istio通过Prometheus和Grafana进行监控。

本节演示如何设置和使用Istio仪表板来监视Service Mesh的流量。你需要安装grafana istio插件,并使用基于Web的界面查看Service Mesh流量数据。

4.1.1 查询并设置Granfa的route到环境变量

4.1.2 打开浏览器访问Grafana, http://$GRAFANA_URL

4.1.3 在左上角的菜单中,选择istio mesh dashboard以查看istio mesh metrics。

4.1.4 通过访问bookinfo应用程序生成一些流量:

dashboard反映通过Service Mesh的流量,类似于下图:

4.1.5 要查看Service的详细指标,请单击“Services”列中的服务名称。dashboard类似于下图:

4.1.6 要切换到workloads dashboard,请单击左上角菜单上的Isito Workload Dashboard。看到类似下图:

以上是关于(4) -- Jaeger, Prometheus, Kiali, GRAFANA使用指引的主要内容,如果未能解决你的问题,请参考以下文章

「开源摘星计划」Jaeger实现Harbor的链路监控

Golang expvar原理

OpenTelemetry 实现方案

Jaeger知识点补充

Jaeger知识点补充

Jaeger demo 应用: HotROD 分析