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

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

一、Jaeger

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

1.1 生成跟踪并分析跟踪数据

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

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

  $ export JAEGER_URL=$(oc get route -n istio-system jaeger-query -o jsonpath='{.spec.host}')

1.1.3 从浏览器访问jaeger

https://${JAEGER_URL}

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

(4) -- Jaeger, Prometheus, Kiali, GRAFANA使用指引_第1张图片
image.png

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

(4) -- Jaeger, Prometheus, Kiali, GRAFANA使用指引_第2张图片
image.png

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

2.1 查询Metrics

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

$ oc get svc prometheus -n istio-system

NAME         CLUSTER-IP     EXTERNAL-IP   PORT(S)    AGE
prometheus   10.59.241.54           9090/TCP   2m

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

$ curl -o /dev/null http://$GATEWAY_URL/productpage

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

 $ export PROMETHEUS_URL=$(oc get route -n istio-system prometheus -o jsonpath='{.spec.host}')

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

(4) -- Jaeger, Prometheus, Kiali, GRAFANA使用指引_第3张图片
image.png

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

(4) -- Jaeger, Prometheus, Kiali, GRAFANA使用指引_第4张图片
image.png

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

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

 $ oc get prometheus -n istio-system -o jsonpath='{.items[*].spec.metrics[*].name}' requests_total request_duration_seconds request_bytes response_bytes tcp_sent_bytes_total tcp_received_bytes_total

请注意,当在查询中使用时,返回的度量名称必须以istio_开头,例如,requests_total是istio_requests_total。

三、Kiali

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

3.1 进入Kiali的控制界面

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

$ oc get routes

3.1.2 可以看到这样的结果:

NAME                   HOST/PORT                                                PATH      SERVICES               PORT              TERMINATION   WILDCARD
grafana                grafana-istio-system.127.0.0.1.nip.io                          grafana                http                            None
istio-ingress          istio-ingress-istio-system.127.0.0.1.nip.io                    istio-ingress          http                            None
istio-ingressgateway   istio-ingressgateway-istio-system.127.0.0.1.nip.io             istio-ingressgateway   http                            None
jaeger-query           jaeger-query-istio-system.127.0.0.1.nip.io                     jaeger-query           jaeger-query      edge          None
kiali                  kiali-istio-system.127.0.0.1.nip.io                            kiali                                             None
prometheus             prometheus-istio-system.127.0.0.1.nip.io                       prometheus             http-prometheus                 None
tracing                tracing-istio-system.127.0.0.1.nip.io                          tracing                tracing           edge          None

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

(4) -- Jaeger, Prometheus, Kiali, GRAFANA使用指引_第5张图片
image.png

使用在Custom Resource文件配置的账户密码登陆

3.2 OVERVIEW PAGE

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

(4) -- Jaeger, Prometheus, Kiali, GRAFANA使用指引_第6张图片
image.png

3.3 GRAPH PAGE

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

(4) -- Jaeger, Prometheus, Kiali, GRAFANA使用指引_第7张图片
image.png

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

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

(4) -- Jaeger, Prometheus, Kiali, GRAFANA使用指引_第8张图片
image.png

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

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

3.4 SERVICES PAGE

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

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

(4) -- Jaeger, Prometheus, Kiali, GRAFANA使用指引_第9张图片
image.png

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

(4) -- Jaeger, Prometheus, Kiali, GRAFANA使用指引_第10张图片
image.png

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

3.5 ISTIO CONFIG PAGE

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

(4) -- Jaeger, Prometheus, Kiali, GRAFANA使用指引_第11张图片
image.png

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

(4) -- Jaeger, Prometheus, Kiali, GRAFANA使用指引_第12张图片
image.png

3.6 DISTRIBUTED TRACING PAGE

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

4 Grafana使用指引

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

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

4.1 进入Grafana Dashboard

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

$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath='{.spec.host}')

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

(4) -- Jaeger, Prometheus, Kiali, GRAFANA使用指引_第13张图片
image.png

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

(4) -- Jaeger, Prometheus, Kiali, GRAFANA使用指引_第14张图片
image.png

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

$ curl -o /dev/null http://$GATEWAY_URL/productpage

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

(4) -- Jaeger, Prometheus, Kiali, GRAFANA使用指引_第15张图片
image.png

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

(4) -- Jaeger, Prometheus, Kiali, GRAFANA使用指引_第16张图片
image.png

请注意,TCP带宽metrics是空的,因为BookInfo只使用基于HTTP的服务。仪表板还显示客户端workloads和服务端workloads的metrics。通过使用dashboard顶部的菜单,你可以根据客户端和服务端workloads,切换到不同的服务或过滤metrics。

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

(4) -- Jaeger, Prometheus, Kiali, GRAFANA使用指引_第17张图片
image.png

此仪表板显示客户端(入站)和服务端(出站)的workload metrics。你可以切换到不同的workload ;要按入站或出站工作workload 筛选指标,请使用仪表板顶部的菜单。

你可能感兴趣的:((4) -- Jaeger, Prometheus, Kiali, GRAFANA使用指引)