一、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”按钮。将显示跟踪列表,如下图所示:
image.png1.1.5 单击列表中的某个跟踪以打开该跟踪的详细视图。如果单击顶部(最新)跟踪,你将看到与`/productpage相对应的详细信息。
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 <none> 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}
2.1.5 在Expression字段中,输入istio_request_duration_seconds_count,然后单击Execute按钮。将看到类似下图:
image.png2.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 <all> 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}
image.png使用在Custom Resource文件配置的账户密码登陆
3.2 OVERVIEW PAGE
登录后,会看到OVERVIEW PAGE,该页面提供了系统中各个namespace的运行状况的快照。
image.png3.3 GRAPH PAGE
3.3.1 单击左侧导航中的“Graph”。Graph page显示一个包含所有微服务的图形,这些微服务由通过它们之间的请求连接。在这个页面上,您可以看到服务是如何交互的。
image.png3.3.2 从namespace菜单中,选择BookInfo。现在,图表只显示BookInfo应用程序中的服务。
3.3.3 单击左下角的“Legend”。Kiali显示一个包含图形图例的窗口。
image.png3.3.4 将鼠标悬停在ProductPage节点上,将高亮显示该节点的传入和传出流量。
3.3.5 单击ProductPage节点,页面右侧显示ProductPage的详细信息。
3.4 SERVICES PAGE
3.4.1 单击左侧导航中的“Services”链接。在Services Page上,您可以查看集群中运行的所有Service的列表以及有关这些Service的其他信息,例如运行状况和请求错误率。
3.4.2 将鼠标hover在任何服务的运行状况图标上,以查看有关该服务的运行状况信息。当服务处于联机状态并且响应请求时没有错误,则认为它是健康的。
image.png3.4.3 单击“Reviews ”服务查看其详细信息。请注意,此服务有三个不同的版本。
image.png3.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.
image.png3.5.2 单击其中一个配置以查看其他附加信息。
image.png3.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}
image.png4.1.3 在左上角的菜单中,选择istio mesh dashboard以查看istio mesh metrics。
image.png4.1.4 通过访问bookinfo应用程序生成一些流量:
$ curl -o /dev/null http://$GATEWAY_URL/productpage
dashboard反映通过Service Mesh的流量,类似于下图:
image.png4.1.5 要查看Service的详细指标,请单击“Services”列中的服务名称。dashboard类似于下图:
image.png请注意,TCP带宽metrics是空的,因为BookInfo只使用基于HTTP的服务。仪表板还显示客户端workloads和服务端workloads的metrics。通过使用dashboard顶部的菜单,你可以根据客户端和服务端workloads,切换到不同的服务或过滤metrics。
4.1.6 要切换到workloads dashboard,请单击左上角菜单上的Isito Workload Dashboard。看到类似下图:
image.png此仪表板显示客户端(入站)和服务端(出站)的workload metrics。你可以切换到不同的workload ;要按入站或出站工作workload 筛选指标,请使用仪表板顶部的菜单。
网友评论