分布式跟踪
在服务图中,您可以使用分布式跟踪视图来:
-
分析整体服务性能。
-
可视化选定服务与其相互依赖服务之间的通信流。
-
确定哪项服务表示错误并对错误的服务进行故障排除。
-
查看所选服务及其每个相互依赖服务之间的交易详细信息。
必备条件
要查看服务的跟踪信息,您必须:
-
确保应用程序在发送任何东西向流量时维护以下跟踪标头:
-
对于 1.7.23 之前的 CIC 内部版本,请使用
NS_DISTRIBUTED_TRACING
和值yes
更新 CPX YAML 文件 -
对于 1.7.23 之后的 CIC 内部版本,您必须使用 ConfigMap。
ConfigMaps 允许您将配置与 Pod 分开,并使工作负载可移植。使用 ConfigMaps,您可以轻松更改和管理工作负载配置,并减少将配置数据硬编码到 pod 规范的需要。
有了 ConfigMap 的支持,您可以自动更新配置,同时保持 NetScaler Ingress Controller 容器保持运行。更新后不需要重新启动 Pod。有关更多信息,请参阅对 入口控制器的 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: <AgentIP> / <AppserverIP> timeseries: port: 5563 metrics: enable: 'true' mode: 'avro' auditlogs: enable: 'false' events: enable: 'false' transactions: enable: 'false' port: 5557 <!--NeedCopy-->
注意
您可以为
Samplingrate
提供介于 0 到 100 之间的值。NetScaler 控制台显示上述的跟踪交易数量。 -
使用以下命令部署 ConfigMap:
kubectl create -f <configmap-yaml>.yaml
-
编辑 CPX YAML 文件并使用
envFrom
或args
以指定以下参数:envFrom: - configMapRef: name: cic-configmap <!--NeedCopy-->
或者
ConfigMap YAML 配置部署在 CIC 中。
-
如果要更改任何变量的值,请在 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: <AgentIP> / <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
-
查看服务跟踪详细信息
在服务图中,单击服务,然后选择 跟踪信息。
将显示所选服务的“跟踪摘要”页面。
跟踪摘要 显示:
-
一种高级搜索,使您能够通过搜索包含建议和运算符的事务 (1)。有关详细信息,请参阅 高级搜索。
-
使您可以选择时间持续时间(如 1 小时、12 小时、1 天、1 周、1 个月和自定义时间 (2))的时间持续时间列表。
-
时间轴详细信息图表允许您拖动并选择显示特定时间段内的结果 (3)。
-
筛选器面板允许您从每个指标中选择选项 (4)。
-
所选服务的交易详情 (5)。
查看交易详情
单击交易可向下钻取以获取详细信息。您可以查看所选服务的交易详情,例如:
-
开始时间
-
结束时间
-
SSL 指标
-
与相互依赖的服务的通信(以及每项服务的错误和响应时间)。
以下示例表示来自 catalogue-store-service
的错误。单击“查看跟踪详情”了解更多详情。
屏幕上将显示“跟踪详细信息”页面。
1 — 显示事务的开始时间、响应时间、服务总数和总跨度。
2 — 显示已与其相互依赖关系服务通信的所选服务的详细信息。您可以点击每笔交易查看详情。
3 — 显示每项服务的交易详情。
根据示例图片, catalogue-store-service
表示有错误。点击 catalogue-store-service
的可用事务。
product-catalogue-service
和 catalogue-store-service
之间的事务详细信息表明 HTTP 响应为 500。有了这些详细信息,作为管理员,您可以分析错误的服务并进行故障排除 product-catalogue-service
作为解决方案。
您还可以通过从“筛选器”面板下的每个指标中选择选项来 筛选 结果。例如,如果您要查看所有 5xx 交易,请单击 响应代码 并选择 500。
-
客户端 RTT:数据包从客户端传输的持续时间。
-
服务器 RTT:数据包从服务器传输的持续时间。
-
应用程序响应时间:应用程序的平均响应时间
-
数据传输时间:数据传输大小和从/向服务传输的速率。
-
位置:客户位置
-
浏览器:客户端使用的浏览器类型。例如:Chrome、Firefox。
-
客户端操作系统:基于浏览器中的用户代理详细信息的客户端操作系统。
-
设备:基于浏览器中的用户代理详细信息的设备。例如:平板电脑、手机。
-
请求类型:事务处理请求类型。例如:GET。
-
响应代码:从服务器接收到的响应代码。例如:501、404、200。
-
响应内容类型:事务内容类型。如果客户端请求是 text/html,则来自服务器的响应必须是 text/html。
-
SSL 协议:客户端使用的 SSL 协议版本。例如:SSLv3。
-
SSL 密码强度:基于 SSL 证书密钥大小(例如高、中和低)的密码强度。
-
SSL 密钥强度:SSL 密码强度是根据 SSL 证书密钥大小计算得出的。密钥长度定义了 SSL 算法的安全性。例如:2048
-
SSL 前端失败原因:前端 SSL 握手错误消息。例如:SSL CLIENTAUTH FAILURE