分布式跟踪
在服务图中,您可以使用分布式跟踪视图来:
-
分析整体服务性能。
-
可视化所选服务与其相互依赖服务之间的通信流。
-
识别哪些服务指示错误并对错误服务进行故障排除。
-
查看所选服务与其每个相互依赖服务之间的事务详细信息。
先决条件
要查看服务的跟踪信息,您必须:
-
确保应用程序在发送任何东西向流量时维护以下跟踪标头:

-
对于 早于 1.7.23 的 CIC 版本,请使用
NS_DISTRIBUTED_TRACING和值yes更新 CPX YAML 文件。
-
对于 晚于 1.7.23 的 CIC 版本,您必须使用 ConfigMap。
ConfigMap 允许您将配置与 Pod 分离,并使您的工作负载可移植。使用 ConfigMap,您可以轻松更改和管理工作负载配置,并减少将配置数据硬编码到 Pod 规范的需要。
借助 ConfigMap 支持,您可以在 NetScaler Ingress Controller Pod 运行的同时自动更新配置。更新后无需重新启动 Pod。有关更多信息,请参阅 NetScaler Ingress Controller 的 ConfigMap 支持。
使用 ConfigMap,您可以启用或禁用分布式跟踪、事件、审计日志等。要使用 ConfigMap:
-
使用所需参数创建 YAML 文件。
以下示例 YAML 文件已启用分布式跟踪,并禁用了审计日志、事件和事务等其他变量:
apiVersion: v1 kind: ConfigMap metadata: name: cic-configmap namespace: default data: LOGLEVEL: 'debug' NS_PROTOCOL: 'http' NS_PORT: '80' NS_HTTP2_SERVER_SIDE: 'ON' NS_ANALYTICS_CONFIG: distributed_tracing: enable: 'true' samplingrate: 100 endpoint: server: <Console-AgentIP> / <Console-AppserverIP> timeseries: port: 5563 metrics: enable: 'true' mode: 'avro' auditlogs: enable: 'false' events: enable: 'false' transactions: enable: 'false' port: 5557 <!--NeedCopy-->注意
您可以提供介于 0 和 100 之间的
Samplingrate值。NetScaler Console 会显示指定数量的跟踪事务。 -
使用以下命令部署 ConfigMap:
kubectl create -f <configmap-yaml>.yaml -
编辑 CPX YAML 文件,并使用
envFrom或args来指定以下参数:envFrom: - configMapRef: name: cic-configmap <!--NeedCopy-->或

-
如果要更改任何变量的值,请编辑 ConfigMap 中的值。在此示例中,所有其他变量都从
false更改为true。apiVersion: v1 kind: ConfigMap metadata: name: cic-configmap namespace: default data: LOGLEVEL: 'debug' NS_PROTOCOL: 'http' NS_PORT: '80' NS_HTTP2_SERVER_SIDE: 'ON' NS_ANALYTICS_CONFIG: distributed_tracing: enable: 'true' samplingrate: 100 endpoint: server: <Console-AgentIP> / <Console-AppserverIP> timeseries: port: 5563 metrics: enable: 'true' mode: 'avro' auditlogs: enable: 'true' events: enable: 'true' transactions: enable: 'true' port: 5557 <!--NeedCopy--> -
使用以下命令重新应用 ConfigMap:
kubectl apply -f <yaml-file>.yaml
-
查看服务跟踪详细信息
在服务图中,单击一个服务,然后选择 Trace Info。

将显示所选服务的“跟踪摘要”页面。

跟踪摘要显示:
-
高级搜索,使您能够通过建议和运算符 (1) 搜索事务。有关更多信息,请参阅 高级搜索。
-
时间持续时间列表,使您能够选择时间持续时间,例如 1 小时、12 小时、1 天、1 周、1 个月和自定义时间 (2)。
-
时间线详细信息图表,使您能够拖动并选择以显示特定时间持续时间的结果 (3)。
-
筛选器面板,使您能够从每个指标中选择选项 (4)。
-
所选服务的事务详细信息 (5)。
查看事务详细信息
单击一个事务以向下钻取详细信息。您可以查看所选服务的事务详细信息,例如:
-
开始时间
-
结束时间
-
SSL 指标
-
与相互依赖服务的通信(以及每个服务的错误和响应时间)。
以下示例指示 catalogue-store-service 出现错误。单击 See Trace Details 以获取更多详细信息。

将显示“跟踪详细信息”页面。

1 – 显示事务的开始时间、响应时间、总服务和总跨度。
2 – 显示已与其相互依赖服务通信的所选服务的详细信息。您可以单击每个事务以查看详细信息。
3 – 显示每个服务的事务详细信息。
根据示例图像,catalogue-store-service 指示了一个错误。单击 catalogue-store-service 可用的事务。

product-catalogue-service 和 catalogue-store-service 之间的事务详细信息指示 HTTP 响应为 500。通过这些详细信息,作为管理员,您可以分析错误服务并对 product-catalogue-service 进行故障排除作为解决方案。
您还可以通过从 Filters 面板下的每个指标中选择选项来筛选结果。例如,如果要查看所有 5xx 事务,请单击 Response code 并选择 500。

-
Client RTT:数据包从客户端传输所需的时间。
-
Server RTT:数据包从服务器传输所需的时间。
-
App Response Time:应用程序平均响应时间。
-
Data Transfer Time:数据传输大小以及从/到服务传输的速率。
-
Location:客户端位置。
-
Browser:客户端使用的浏览器类型。例如:Chrome、Firefox。
-
Client OS:基于浏览器用户代理详细信息的客户端操作系统。
-
Device:基于浏览器用户代理详细信息的设备。例如:平板电脑、移动设备。
-
Request Type:事务请求类型。例如:GET。
-
Response code:从服务器收到的响应代码。例如:501、404、200。
-
Response content type:事务内容类型。如果客户端请求的是 text/html,则服务器的响应必须是 text/html。
-
SSL Protocol:客户端使用的 SSL 协议版本。例如:SSLv3。
-
SSL Cipher Strength:基于 SSL 证书密钥大小的密码强度,例如高、中和低。
-
SSL Key Strength:SSL 密码强度是根据 SSL 证书密钥大小计算的。密钥长度定义了 SSL 算法安全性。例如:2048。
-
SSL Front end Failure reason:前端 SSL 握手错误消息。例如:SSL CLIENTAUTH FAILURE。