UI 指标故障排除

TSB 的用户界面显示了你服务的指标和健康状态。然而,如果没有显示任何指标或跟踪信息,那么你可能面临的问题可能是与你的服务或 TSB 中的某个指标组件之一有关。

本指南将引导你了解问题是与服务还是与 TSB 中的某个指标组件有关的方法。

指标

如果你看不到指标,请使用本指南的本节进行故障排除。

首先,请确保你的应用程序中有流量流动。你需要流量来生成指标。

检查你在 TSB 中设置的时间范围窗口是否正确,并且在该期间是否有流量。

检查在浏览器中运行 UI 查询是否返回状态。使用浏览器的 inspect 命令并检查请求/响应详细信息。

从检查器中选择 Network 选项卡,然后从 TSB 用户界面中打开你的应用程序。你应该看到浏览器和 TSB 后端之间的所有请求列表。

搜索最后一个 graphql 请求。

如果你看不到查询,这可能表明你的应用程序没有处理任何流量,或者你在 OAP 部署方面存在问题。

要检查 OAP,请执行以下步骤:

通过确认tsb命名空间中的OAP Pod 是否正在运行来检查OAP Pod 是否正常运行,并检查 Pod 的日志中是否有任何错误:

kubectl -n tsb logs -l app=oap

来自日志的错误将帮助你排查问题。

如果问题与 Elasticsearch 有关,请检查控制平面命名空间(istio-system)中的 OAP 是否通过将 OAP Pod 的监视端口转发到你的本地计算机来接收来自各种 Envoy 的访问日志服务(ALS)数据,并使用以下步骤查询一些指标:

在一个 shell 中启动到 OAP 的端口转发:

kubectl -n istio-system port-forward deployment/oap-deployment 1234

如果没有问题,你应该会看到:

Forwarding from 127.0.0.1:1234 -> 1234
Forwarding from [::1]:1234 -> 1234

在另一个 shell 中,使用以下命令获取指标:

curl -s http://localhost:1234/ | grep "envoy_als_in_count"

你应该会看到类似于以下示例输出:

envoy_als_in_count{id="router~10.28.0.25~tsb-gateway-7b7fbcdfb7-726bf.bookinfo~bookinfo.svc.cluster.local",cluster="tsb-gateway",} 67492.0
envoy_als_in_count{id="sidecar~10.28.0.19~details-v1-94d5d794-kt76x.bookinfo~bookinfo.svc.cluster.local",cluster="details.bookinfo",} 33747.0
envoy_als_in_count{id="sidecar~10.28.0.23~reviews-v3-5556b6949-pvqfn.bookinfo~bookinfo.svc.cluster.local",cluster="reviews.bookinfo",} 22500.0
envoy_als_in_count{id="sidecar~10.28.0.24~productpage-v1-665ddb5664-ts6pz.bookinfo~bookinfo.svc.cluster.local",cluster="productpage.bookinfo",} 101240.0
envoy_als_in_count{id="sidecar~10.28.0.22~reviews-v2-6cb744f8ff-mf8s6.bookinfo~bookinfo.svc.cluster.local",cluster="reviews.bookinfo",} 22498.0
envoy_als_in_count{id="sidecar~10.28.0.20~ratings-v1-744894fbdb-ctvpd.bookinfo~bookinfo.svc.cluster.local",cluster="ratings.bookinfo",} 22499.0
envoy_als_in_count{id="sidecar~10.28.0.21~reviews-v1-f7c7c7b45-8v2sf.bookinfo~bookinfo.svc.cluster.local",cluster="reviews.bookinfo",} 11249.0

如果应用程序正在使用,右侧的数字应该会增加。

如果你看不到任何指标,或者指标随时间不变化,请检查你的应用程序 Sidecar(Envoy)是否通过执行 Istio Sidecar 的port-forward在端口 15000 上将 ALS 指标发送到控制平面 OAP,然后查询envoy_accesslog_service指标。 cx_active指标(即当前连接数)的标准数量是两个。

下面的示例使用bookinfo应用程序的productpage服务:

# 在一个shell中启动端口转发
kubectl -n bookinfo port-forward deployment/productpage-v1 15000
Forwarding from 127.0.0.1:15000 -> 15000
Forwarding from [::1]:15000 -> 15000

# 在另一个shell中使用curl获取配置
curl -s http://localhost:15000/clusters | grep "envoy_accesslog_service" | grep cx_active
envoy_accesslog_service::10.31.243.206:11800::cx_active::2

如果计数器不符合你的预期,请通过编辑 OAP 的config.yml文件,使用以下命令将debug日志级别添加到 OAP 中:

kubectl -n istio-system edit cm oap-config

搜索以下行并去掉注释:

<!-- uncomment following line when need to debug ALS raw data
   <logger name="io.tetrate.spm.user.receiver

.envoy" level="DEBUG"/>
-->

以使其变成:

<logger name="io.tetrate.spm.user.receiver.envoy" level="DEBUG"/>

然后,重新启动 OAP 以使配置更改生效:

kubectl -n istio-system delete pod -l app=oap

现在,你可以搜索downstream_remote_address的日志。如果你有可搜索的日志,这意味着指标已经到达了 OAP 服务。

  • 在 Elasticsearch 后端中搜索
    指标存储在 Elasticsearch(ES)索引中。你可以通过发送一些查询来检查 ES 的状态和健康状况。

由于 ES 服务器不受 TSB 管理,请参考你的文档以获取正确的连接字符串。

在示例中,我们将端口转发到tsb命名空间中的 ES Pod:

# 端口转发到ES服务器
kubectl -n tsb port-forward statefulset/elasticsearch 9200

# 检查集群健康状况
curl -s  'http://localhost:9200/_cluster/health?pretty=true'
{
    "cluster_name" : "elasticsearch",
    "status" : "yellow",
    "timed_out" : false,
    "number_of_nodes" : 1,
    "number_of_data_nodes" : 1,
    "active_primary_shards" : 64,
    "active_shards" : 64,
    "relocating_shards" : 0,
    "initializing_shards" : 0,
    "unassigned_shards" : 5,
    "delayed_unassigned_shards" : 0,
    "number_of_pending_tasks" : 0,
    "number_of_in_flight_fetch" : 0,
    "task_max_waiting_in_queue_millis" : 0,
    "active_shards_percent_as_number" : 92.7536231884058
}

status 行应该是绿色或黄色的。如果是红色的,那么问题就出在 ES 集群上。你可以使用以下命令检查索引的状态:

# 查询2020年3月26日的索引状态
curl -H'Content-Type: application/json' -s -XGET 'http://localhost:9200/_cat/shards/*20200326

你应该会看到所有索引的列表。它们都应该处于STARTED状态。下一列包含文档数和索引大小。通过在不同时间运行该命令,你应该会看到这些数字增加。

service_5xx-20200326                                 0 p STARTED  31236   1.4mb 10.28.1.12 elasticsearch-0
service_instance_relation_client_call_sla-20200326   0 p STARTED  53791   5.1mb 10.28.1.12 elasticsearch-0
endpoint_percentile-20200326                         0 p STARTED 128707  12.7mb 10.28.1.12 elasticsearch-0
endpoint_2xx-20200326                                0 p STARTED 123131   7.4mb 10.28.1.12 elasticsearch-0
...