Citrix Application Delivery Management 服务

分布式跟踪

在服务图中,可以使用分布式跟踪视图来执行以下操作:

  • 分析整体服务性能。

  • 可视化选定服务与其相互依赖服务之间的通信流。

  • 确定哪项服务表示错误并对错误的服务进行故障排除。

  • 查看所选服务及其每个相互依赖服务之间的交易详细信息。

必备条件

要查看服务的跟踪信息,您必须:

  • 确保应用程序维护以下跟踪标头,同时发送任何东西流量:

    标题

  • 对于 1.7.23 之前的 CIC 内部版本,请使用 NS_DISTRIBUTED_TRACING 和值 yes 更新 CPX YAML 文件

    亚姆尔

  • 对于 1.7.23 之后的 CIC 内部版本,您必须使用 ConfigMap。

    ConfigMaps 允许您将配置与 Pod 分开,并使工作负载可移植。使用 ConfigMaps,您可以轻松更改和管理工作负载配置,并减少将配置数据硬编码到 pod 规范的需要。

    借助 ConfigMap 支持,您可以在保持 Citrix 入口控制器容器运行的同时自动更新配置。更新后不需要重新启动 Pod。有关详细信息,请参阅ConfigMap 对入口控制器的支持

    使用 ConfigMap,您可以启用或禁用分布式跟踪、事件、审核日志等。要使用 ConfigMap:

    1. 使用所需的参数创建 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: <ADM-AgentIP> / <ADM-AppserverIP>
          timeseries:
            port: 5563
            metrics:
              enable: 'true'
              mode: 'avro'
            auditlogs:
              enable: 'false'
            events:
              enable: 'false'
          transactions:
            enable: 'false'
            port: 5557
      

      注意

      您可以为 Samplingrate 提供介于 0 到 100 之间的值。Citrix ADM 显示提到的跟踪事务数量。

    2. 使用以下命令部署 ConfigMap:

      kubectl create -f <configmap-yaml>.yaml

    3. 编辑 CPX YAML 文件并使用 envFromargs 以指定以下参数:

      envFrom:
       - configMapRef:
           name: cic-configmap
      

      YAML

      ConfigMap YAML 配置部署在 CIC 中。

    4. 如果要更改任何变量的值,请在 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: <ADM-AgentIP> / <ADM-AppserverIP>
          timeseries:
            port: 5563
            metrics:
              enable: 'true'
              mode: 'avro'
            auditlogs:
              enable: 'true'
            events:
              enable: 'true'
          transactions:
            enable: 'true'
            port: 5557
      
    5. 使用以下命令重新应用 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 并将 HTTP 响应 catalogue-store-service 指示为 500。有了这些详细信息,作为管理员,您可以分析错误的服务并将其 product-catalogue-service 作为解决方案进行故障排除。

您还可以通过从 “筛选 ” 面板下的每个度量中选择选项来筛选结果。例如,如果要查看所有 5xx 交易记录,请单击 响应代码 并选择 500

筛选器面板

  • 客户端 RTT:数据包从客户端传输的时间持续时间。

  • 服务器 RTT:数据包从服务器传输的时间持续时间。

  • 应用程序响应时间:应用程序平均响应时间

  • 数据传输时间:数据传输大小以及从/到服务发生传输的速率。

  • 位置:客户端位置

  • 浏览器:客户端使用的浏览器类型。例如:铬,火狐。

  • 客户端操作系统:基于浏览器中的用户代理详细信息的客户端操作系统。

  • 设备:基于浏览器中的用户代理详细信息的设备。例如:平板电脑、手机。

  • 请求类型:事务处理请求类型。例如:GET。

  • 响应代码:从服务器接收的响应代码。例如:501、404、200

  • 响应内容类型:事务处理内容类型。如果客户端请求是文本 /html,则来自服务器的响应必须是文本 /html。

  • SSL 协议:客户端使用的 SSL 协议版本。例如:SSLv3。

  • SSL 密码强度:基于 SSL 证书密钥大小(如高、中和低)的密码强度。

  • SSL 密钥强度:SSL 密码强度是根据 SSL 证书密钥大小计算的。密钥长度定义了 SSL 算法的安全性。例如:2048

  • SSL 前端失败原因:前端 SSL 握手错误消息。例如:SSL 客户端失败

分布式跟踪