高级概念

Use Citrix ADM to Troubleshoot Citrix Cloud™ Native Networking

概述

本文档回顾了如何使用 Citrix ADM 交付和监控 Kubernetes 微服务应用程序。我们还将深入探讨如何使用 CLI、服务图和跟踪来帮助平台和 SRE 团队进行故障排除。

应用程序性能和延迟概述

TLS 加密

TLS 是一种旨在保护互联网通信安全的加密协议。TLS 握手是启动使用 TLS 加密的通信会话的过程。在 TLS 握手期间,通信双方交换消息以相互确认、验证彼此、建立它们使用的加密算法并就会话密钥达成一致。TLS 握手是 HTTPS 工作方式的基础部分。

TLS 与 SSL 握手协议

SSL(即安全套接字层)是为 HTTP 开发的原始加密协议。TLS(即传输层安全)已在一段时间前取代了 SSL。尽管“SSL”这个名称仍被广泛使用,但 SSL 握手现在被称为 TLS 握手。

TLS 握手何时发生?

每当用户通过 HTTPS 导航到网站并且浏览器首次开始查询网站的源服务器时,就会发生 TLS 握手。此外,每当任何其他通信使用 HTTPS 时,包括 API 调用和基于 HTTPS 的 DNS 查询,也会发生 TLS 握手。

TLS 握手在通过 TCP 握手建立 TCP 连接之后发生。

TLS 握手期间会发生什么?

  • 在 TLS 握手期间,客户端和服务器共同执行以下操作:
    • 指定他们使用的 TLS 版本(TLS 1.0、1.2、1.3 等)。
    • 决定他们使用的密码套件(请参阅下一节)。
    • 通过服务器的公钥和 SSL 证书颁发机构的数字签名来验证服务器的身份。
    • 在握手过程完成后,会生成会话密钥,用于后续的对称加密通信。

TLS 握手有哪些步骤?

  • TLS 握手是客户端和服务器之间交换的一系列数据报或消息。TLS 握手涉及多个步骤,因为客户端和服务器会交换完成握手和进行后续通信所需的信息。

TLS 握手中的具体步骤因所使用的密钥交换算法类型以及双方支持的密码套件而异。RSA 密钥交换算法最常使用。其过程如下:

  1. “客户端问候”消息:客户端通过向服务器发送“hello”消息来启动握手。该消息包括客户端支持的 TLS 版本、支持的密码套件以及一个称为“客户端随机数”的随机字节字符串。
  2. “服务器问候”消息:作为对客户端问候消息的回复,服务器发送一条消息,其中包含服务器的 SSL 证书、服务器选择的密码套件以及“服务器随机数”(由服务器生成的另一个随机字节字符串)。
  3. 身份验证:客户端使用颁发服务器 SSL 证书的证书颁发机构来验证该证书。这确认了服务器的身份,并确认客户端正在与域的实际所有者进行交互。
  4. 预主密钥:客户端发送另一个随机字节字符串,即“预主密钥”。预主密钥使用公钥加密,并且只能由服务器使用私钥解密。(客户端从服务器的 SSL 证书中获取公钥。)
  5. 使用私钥:服务器解密预主密钥。
  6. 会话密钥创建:客户端和服务器都从客户端随机数、服务器随机数和预主密钥生成会话密钥。它们应该得到相同的结果。
  7. 客户端就绪:客户端发送一条使用会话密钥加密的“完成”消息。
  8. 服务器就绪:服务器发送一条使用会话密钥加密的“完成”消息。
  9. 安全对称加密已成功建立:这意味着握手过程已完成,并且后续的通信将使用生成的会话密钥进行加密。

所有 TLS 握手都使用非对称加密(公钥和私钥),但并非所有握手都在生成会话密钥的过程中使用私钥。例如,临时 Diffie-Hellman 握手过程如下:

  1. 客户端问候:客户端发送一个客户端问候消息,其中包含协议版本、客户端随机数和密码套件列表。
  2. 服务器问候:服务器回复其 SSL 证书、其选定的密码套件和服务器随机数。与上一节中描述的 RSA 握手不同,在此消息中,服务器还包括以下内容(步骤 3)。
  3. 服务器的数字签名:服务器使用其私钥加密客户端随机数、服务器随机数及其 DH 参数*。此加密数据用作服务器的数字签名,证明服务器拥有与 SSL 证书中的公钥匹配的私钥。
  4. 数字签名已确认:客户端使用公钥解密服务器的数字签名,验证服务器控制私钥并确认其身份。客户端 DH 参数:客户端将其 DH 参数发送给服务器。
  5. 客户端和服务器计算预主密钥:与 RSA 握手中客户端生成预主密钥并将其发送给服务器不同,客户端和服务器使用它们交换的 DH 参数分别计算匹配的预主密钥。
  6. 会话密钥已创建:现在,客户端和服务器从预主密钥、客户端随机数和服务器随机数计算会话密钥,就像在 RSA 握手中一样。
    • 客户端已准备就绪: 与 RSA 握手相同
    • 服务器已准备就绪
    • 已实现安全对称加密

    *DH 参数:DH 代表 Diffie-Hellman。Diffie-Hellman 算法使用指数计算来获得相同的预主密钥。服务器和客户端各自为计算提供一个参数,当它们组合时,会在每一侧产生不同的计算,但结果是相等的。

要了解有关临时 Diffie-Hellman 握手与其他类型握手之间的对比以及它们如何实现前向保密性的更多信息,请参阅此 TLS 协议文档

什么是密码套件?

  • 密码套件是一组加密算法,用于建立安全的通信连接。(加密算法是对数据执行的一组数学运算,旨在使数据看起来是随机的。)目前有各种广泛使用的密码套件,TLS 握手的一个重要部分是就该握手使用哪个密码套件达成一致。

要开始使用,请参阅参考资料:TLS 协议文档

Citrix 应用交付管理 SSL 仪表板

Citrix Application Delivery Management (ADM) 现在为您简化了证书管理的各个方面。通过单个控制台,您可以建立自动化策略,以确保正确的颁发者、密钥强度和正确的算法,同时密切关注未使用或即将过期的证书。要开始使用 Citrix ADM 的 SSL 仪表板及其功能,您必须了解什么是 SSL 证书以及如何使用 Citrix ADM 跟踪您的 SSL 证书。

A Secure Socket Layer (SSL) certificate, which is a part of any SSL transaction, is a digital data form (X509) that identifies a company (domain) or an individual. The certificate has a public key component that is visible to any client that wants to initiate a secure transaction with the server. The corresponding private key, which resides securely on the Citrix Application Delivery Controller™ (ADC) appliance, is used to complete asymmetric key (or public key) encryption and decryption.

您可以通过以下任一方式获取 SSL 证书和密钥:

  • 从授权证书颁发机构 (CA) 获取
  • 通过在 Citrix ADC 设备上生成新的 SSL 证书和密钥

Citrix ADM 提供了所有托管 Citrix ADC 实例上安装的 SSL 证书的集中视图。在 SSL 仪表板上,您可以查看图表,这些图表可帮助您跟踪证书颁发者、密钥强度、签名算法、过期或未使用的证书等。您还可以查看在虚拟服务器上运行的 SSL 协议的分布以及在其上启用的密钥。

您还可以设置通知,以便在证书即将过期时通知您,并包含有关哪些 Citrix ADC 实例使用这些证书的信息。

您可以将 Citrix ADC 实例的证书链接到 CA 证书。但是,请确保链接到同一 CA 证书的证书具有相同的来源和相同的颁发者。将证书链接到 CA 证书后,您可以取消链接它们。

SSL 仪表板

要开始使用,请参阅以下 SSL 仪表板文档

第三方集成功能

应用程序延迟以毫秒为单位测量,根据所使用的指标,它可能表示两种情况之一。更常见的延迟测量方法称为“往返时间”(或 RTT)。RTT 计算数据包在网络上从一个点传输到另一个点以及响应发送回源所需的时间。另一种测量方法称为“首字节时间”(或 TTFB),它记录数据包从网络上的一个点发出到到达目的地所需的时间。RTT 更常用于测量延迟,因为它可以从网络上的单个点运行,并且不需要在目标点安装数据收集软件(而 TTFB 需要)。

通过实时监控应用程序带宽使用情况和性能,ADM 服务可以轻松识别问题并抢先解决潜在问题,以免它们在您的网络上显现并影响用户。这种基于流的解决方案按接口、应用程序和会话跟踪使用情况,为您提供有关网络活动详细信息。

使用 Splunk 工具

基础设施和应用程序性能相互依存。为了全面了解情况,SignalFx 在云基础设施及其上运行的微服务之间提供了无缝关联。如果您的应用程序因内存泄漏、嘈杂的邻居容器或任何其他与基础设施相关的问题而出现异常,SignalFx 会通知您。为了完善情况,对 Splunk 日志和事件的上下文访问可以实现更深入的故障排除和根本原因分析。

斯普伦克

有关 SignalFx 微服务应用性能管理 (APM) 以及使用 Splunk 进行故障排除的更多信息,请查看 Splunk DevOps 解决方案 信息。

MongoDB 的支持服务

MongoDB 将数据存储在灵活的、类似 JSON 的文档中。这意味着字段可以因文档而异,并且数据结构可以随时间变化。

文档模型映射到应用程序代码中的对象,使数据易于处理。

按需查询、索引和实时聚合提供了访问和分析数据的强大方式。

MongoDB 本质上是一个分布式数据库,因此高可用性、水平扩展和地理分布是内置的且易于使用。

MongoDB 旨在通过以下技术基础满足现代应用程序的需求:

  • 文档数据模型 – 为您提供了处理数据的最佳方式。
  • 分布式系统设计 – 让您能够智能地将数据放置在您想要的位置。
  • 统一的体验,让您可以在任何地方自由运行 – 使您的工作面向未来并消除供应商锁定。

凭借这些功能,您可以构建一个由 MongoDB 支持的智能运营数据平台。有关更多信息,请参阅 MongoDB Documentation

如何对 Ingress 流量进行负载均衡到基于 TCP 或 UDP 的应用程序

在 Kubernetes 环境中,Ingress 是一个允许从 Kubernetes 集群外部访问 Kubernetes 服务的对象。标准的 Kubernetes Ingress 资源假定所有流量都是基于 HTTP 的,并且不适用于非 HTTP 协议,例如 TCP、TCP-SSL 和 UDP。因此,基于 L7 协议(例如 DNS、FTP、LDAP)的关键应用程序无法使用标准的 Kubernetes Ingress 进行公开。

标准的 Kubernetes 解决方案是创建负载均衡器类型的服务。有关更多信息,请参阅 Citrix ADC 中的负载均衡器服务类型

第二个选项是注释入口对象。Citrix Ingress Controller 使您能够对基于 TCP 或 UDP 的 Ingress 流量进行负载均衡。它提供了以下注解,您可以在 Kubernetes Ingress 资源定义中使用这些注解来对基于 TCP 或 UDP 的 Ingress 流量进行负载均衡:

  • ingress.citrix.com/insecure-service-type: The annotation enables L4 load balancing with TCP, UDP, or ANY as protocol for Citrix ADC.
  • ingress.citrix.com/insecure-port: 此注解配置 TCP 端口。当微服务需要在非标准端口上访问时,此注解非常有用。默认情况下,配置端口 80。

有关详细信息,请参阅如何对基于 TCP 或 UDP 的应用程序的 Ingress 流量进行负载均衡

监控和改进基于 TCP 或 UDP 的应用程序的性能

应用程序开发人员可以通过 Citrix ADC 中的丰富监视器(例如 TCP-ECV、UDP-ECV)密切监控基于 TCP 或 UDP 的应用程序的运行状况。ECV(扩展内容验证)监视器有助于检查应用程序是否返回预期内容。

此外,还可以通过使用源 IP 等持久性方法来提高应用程序性能。您可以通过 Kubernetes 中的智能注解使用这些 Citrix ADC 功能。以下是其中一个示例:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
    name: mongodb
    annotations:
        ingress.citrix.com/insecure-port: “80”
        ingress.citrix.com/frontend-ip: “192.168.1.1”
        ingress.citrix.com/csvserver: ‘{“l2conn”:”on”}’
        ingress.citrix.com/lbvserver: ‘{“mongodb-svc”:{“lbmethod”:”SRCIPDESTIPHASH”}}’
        ingress.citrix.com/monitor: ‘{“mongodbsvc”:{“type”:”tcp-ecv”}}’
Spec:
    rules:
    - host: mongodb.beverages.com
      http:
        paths:
        - path: /
          backend:
            serviceName: mongodb-svc
            servicePort: 80
<!--NeedCopy-->

Citrix 应用交付管理 (ADM) 服务

Citrix ADM 服务提供以下优势:

  • 敏捷 – 易于操作、更新和使用。Citrix ADM 服务的服务模型可通过云获取,使其易于操作、更新和使用所提供的功能。更新频率与自动化更新功能相结合,可快速增强您的 Citrix ADC 部署。
  • 更快实现价值 – 更快地实现业务目标。与传统的本地部署不同,您只需点击几下即可使用 Citrix ADM 服务。您不仅可以节省安装和配置时间,还可以避免在潜在错误上浪费时间和资源。
  • 多站点管理 – 跨多站点数据中心实例的单一管理平台。借助 Citrix ADM 服务,您可以管理和监控各种部署类型的 Citrix ADC。您可以对本地和云中部署的 Citrix ADC 进行一站式管理。
  • 运营效率 – 优化和自动化方式,实现更高的运营生产力。借助 Citrix ADM 服务,您可以通过节省维护和升级传统硬件部署的时间、金钱和资源来降低运营成本。

Kubernetes 应用程序的服务图

使用 Citrix ADM 中云原生应用程序功能的服务图,您可以:

  • 确保端到端应用程序的整体性能
  • 识别由您的应用程序不同组件之间的相互依赖性所造成的瓶颈
  • 深入了解您的应用程序不同组件之间的依赖关系
  • 监控 Kubernetes 集群内的服务
  • 监控哪些服务存在问题
  • 检查导致性能问题的各项因素
  • 查看服务 HTTP 事务的详细可见性
  • 对 HTTP、TCP 和 SSL 指标进行分析

通过在 Citrix ADM 中可视化这些指标,您可以更快地分析问题的根本原因并采取必要的故障排除措施。服务图以各种组件服务的形式显示您的应用程序。这些在 Kubernetes 集群中运行的服务可以与应用程序内部和外部的各种组件进行通信。

要开始使用,请参阅 设置服务图

适用于三层 Web 应用程序的服务图

使用应用程序仪表板中的服务图功能,您可以查看:

  • 有关应用程序如何配置的详细信息(包括内容交换虚拟服务器和负载平衡虚拟服务器)
    • 对于 GSLB 应用程序,您可以查看数据中心、ADC 实例、CS 和 LB 虚拟服务器
  • 从客户端到服务的端到端事务
  • 客户端正在访问应用程序的来源位置
  • 处理客户端请求的数据中心名称以及相关的数据中心 Citrix ADC 指标(仅适用于 GSLB 应用程序)
  • 客户端、服务和虚拟服务器的指标详细信息
  • 错误是来自客户端还是来自服务
  • 服务状态,例如严重审查良好。Citrix ADM 根据服务响应时间和错误计数显示服务状态。
    • 严重(红色) - 表示平均服务响应时间 > 200 毫秒且错误计数 > 0
    • 审查(橙色) - 表示平均服务响应时间 > 200 毫秒或错误计数 > 0
    • 良好(绿色) - 表示无错误且平均服务响应时间 < 200 毫秒
  • 客户端状态,例如严重审查良好。Citrix ADM 根据客户端网络延迟和错误计数显示客户端状态。
    • 严重(红色) - 表示平均客户端网络延迟 > 200 毫秒且错误计数 > 0
    • 审查(橙色) - 表示平均客户端网络延迟 > 200 毫秒或错误计数 > 0
    • 良好(绿色) - 表示无错误且平均客户端网络延迟 < 200 毫秒
  • 虚拟服务器状态,例如严重审查良好。Citrix ADM 根据应用程序分数显示虚拟服务器状态。
    • 严重(红色) - 表示应用程序分数 < 40
    • 审查(橙色) - 表示应用程序分数在 40 到 75 之间
    • 良好(绿色) - 表示应用分数 > 75 时

注意事项:

  • 服务图中仅显示负载均衡、内容交换和 GSLB 虚拟服务器。
  • 如果自定义应用程序未绑定任何虚拟服务器,则该应用程序的详细信息在服务图中不可见。
  • 只有当虚拟服务器和 Web 应用程序之间发生活动事务时,您才能在服务图中查看客户端和服务的指标。
  • 如果虚拟服务器和 Web 应用程序之间没有活动事务,您只能根据配置数据(例如负载均衡、内容交换、GSLB 虚拟服务器和服务)在服务图中查看详细信息。
  • 应用程序配置的更新可能需要 10 分钟才能反映在服务图中。

有关更多信息,请参阅应用程序的服务图

服务流程图

要开始使用,请参阅服务图文档

Citrix ADC 团队故障排除

让我们讨论一些用于排查 Citrix ADC 平台故障的最常见属性,以及这些故障排除技术如何应用于微服务拓扑的 Tier-1 部署。

Citrix ADC 具有命令行界面 (CLI),可实时显示命令,有助于确定运行时配置、静态信息和策略配置。这通过 “SHOW” 命令实现。

显示 - 执行 ADC CLI 操作:

>Show running config (-summary -fullValues)

 Ability to search (grep command)
>“sh running config | -i grep vserver”

Check the version.
>Show license
  “sh license"
<!--NeedCopy-->

显示 SSL 统计信息

>Sh ssl
        System
        Frontend
        Backend
        Encryption
<!--NeedCopy-->

显示 SSL 统计信息(/zh-cn/advanced-concepts/media/show-ssl-statistics.png)

Citrix ADC 有一个命令,用于根据七 (7) 秒的计数器间隔枚举所有对象的统计信息。这通过 “STAT” 命令实现。

Citrix ADC 提供高度精细的 L3-L7 遥测

  • 系统级别:ADC 的 CPU 和内存利用率。
  • HTTP 协议:请求/响应数量、GET/POST 分割、南北向和东西向的 HTTP 错误(仅适用于 service mesh lite,sidecar 即将推出)。
  • SSL:仅适用于 service mesh lite 的南北向和东西向流量的会话数量和握手数量。
  • IP 协议:接收/发送的数据包数量、接收/发送的字节数、截断的数据包数量和 IP 地址查找数量。
  • 思杰 ADC 认证、授权和计费:活动会话数
  • 接口:多播数据包总数、传输字节总数以及接收/发送的巨型数据包数量。
  • 负载均衡虚拟服务器和内容交换虚拟服务器:数据包数量、命中次数以及接收/发送的字节数。

统计 - 执行 ADC CLI 操作:

>Statistics
“stat ssl”
<!--NeedCopy-->

启动安全套接层

Citrix ADC 具有日志归档结构,允许在通过 “NSCONMSG” 命令排查特定错误时搜索统计信息和计数器。

NSCONMSG - 主日志文件 (ns 数据格式)

    Cd/var/nslog

    “Mac Moves”
    nsconmsg -d current -g nic_err
<!--NeedCopy-->

命令流(/zh-cn/advanced-concepts/media/command-flow.png)

Nstcpdump

您可以使用 nstcpdump 进行低级别故障排除。nstcpdump 收集的信息比 nstrace 详细程度低。打开 ADC CLI 并键入 shell。您可以使用 nstcpdump 进行过滤,但不能使用特定于 ADC 资源的过滤器。转储输出可以直接在 CLI 屏幕中查看。

CTRL + C – 同时按下这些键以停止 nstcpdump

nstcpdump.sh dst host x.x.x.x – 显示发送到目标主机的流量。

nstcpdump.sh -n src host x.x.x.x – 显示来自指定主机的流量,并且不将 IP 地址转换为名称 (-n)。

nstcpdump.sh host x.x.x.x – 显示往返于指定主机 IP 的流量。

示例 `nstcpdump`

NSTRACE - 数据包跟踪文件

NSTRACE 是一种用于网络故障排除的低级别数据包调试工具。它允许您存储捕获文件,您可以使用分析器工具进一步分析这些文件。两种常用工具是 Network Analyzer 和 Wireshark。

`nstrace` 输出

数据包跟踪输出

在 ADC 上的 /var/nstrace 中创建 NSTRACE 捕获文件后,您可以将捕获文件导入 Wireshark 进行数据包捕获和网络分析。

SYSCTL - 详细的 ADC 信息:描述、型号、平台、CPU 等

    sysctl -a grep hw.physmem

    hw.physmem: 862306304
    netscaler.hw_physmem_mb: 822
<!--NeedCopy-->

aaad.debug - 用于身份验证调试信息的开放管道

AAAD 调试信息

有关如何通过 ADC 或 ADC Gateway 使用 aaad.debug 模块排查身份验证问题的更多信息,请参阅此aaad.debug 支持文章

还可以直接获取 ADC 的性能统计信息和事件日志。有关此内容的更多信息,请参阅此ADC 支持文档

SRE 和平台团队的故障排除

酷伯内特斯流量流

南北向流量:

  • 南北向流量是指从用户流向集群,并通过入口的流量。

东西向流量:

  • 东西向流量是指在 Kubernetes 集群中流动的流量:服务到服务或服务到数据存储。

Citrix ADC CPX 如何在 Kubernetes 环境中对东西向流量进行负载均衡

部署 Kubernetes 集群后,您必须通过在 ADM 中提供 Kubernetes 环境的详细信息来将集群与 ADM 集成。ADM 监控 Kubernetes 资源(例如服务、端点和入口规则)中的更改。

当您在 Kubernetes 集群中部署 ADC CPX 实例时,它会自动向 ADM 注册。作为注册过程的一部分,ADM 会了解 CPX 实例的 IP 地址以及可以通过 NITRO REST API 访问该实例进行配置的端口。

下图显示了 ADC CPX 如何在 Kubernetes 集群中对东西向流量进行负载均衡。

负载均衡 酷伯内特斯

在此示例中,

Kubernetes 集群的节点 1 和节点 2 包含前端服务和后端服务的实例。当 ADC CPX 实例部署在节点 1 和节点 2 中时,ADC CPX 实例会自动向 ADM 注册。您必须通过在 ADM 中配置 Kubernetes 集群详细信息来手动将 Kubernetes 集群与 ADM 集成。

当客户端请求前端服务时,入口资源会在两个节点上的前端服务实例之间进行请求负载均衡。当前端服务实例需要从集群中的后端服务获取信息时,它会将请求定向到其节点中的 ADC CPX 实例。该 ADC CPX 实例会在集群中的后端服务之间进行请求负载均衡,从而提供东西向流量。

应用程序的 ADM 服务图

Citrix ADM 中的服务图功能使您能够以图形方式监控所有服务。此功能还提供详细分析和有用的指标。您可以查看以下服务图:

要开始使用,请参阅服务图中的详细信息

查看微服务应用程序计数器

服务图还显示属于 Kubernetes 集群的所有微服务应用程序。将鼠标指针悬停在服务上可查看指标详细信息。

您可以查看:

  • 服务名称
  • 服务使用的协议,例如 SSL、HTTP、TCP、基于 HTTP 的 SSL
  • 命中数 – 服务收到的总命中数
  • 服务响应时间 – 服务平均响应时间。 (响应时间 = 客户端 RTT + 请求最后一个字节 – 请求第一个字节)
  • 错误 – 总错误数,例如 4xx、5xx 等
  • 数据量 – 服务处理的数据总量
  • 命名空间 – 服务的命名空间
  • 集群名称 – 托管服务的集群名称
  • SSL 服务器错误 – 服务产生的 SSL 错误总数

慢速应用程序(/zh-cn/advanced-concepts/media/slow-application.png)

这些特定的计数器和事务日志可以通过 Citrix 可观测性导出器 (COE) 使用一系列支持的端点进行提取。有关 COE 的更多信息,请参阅以下部分。

Citrix ADC 统计信息导出器

这是一个简单的服务器,它抓取 Citrix ADC 统计信息并通过 HTTP 将其导出到 Prometheus。然后可以将 Prometheus 添加为 Grafana 的数据源,以图形方式查看 Citrix ADC 统计信息。

为了监控 Citrix ADC 实例的统计信息和计数器,citrix-adc-metric-exporter 可以作为容器或脚本运行。导出器从 Citrix ADC 实例收集 Citrix ADC 统计信息,例如虚拟服务器的总命中数、HTTP 请求速率、SSL 加密-解密速率等,并将其保存,直到 Prometheus 服务器拉取统计信息并带时间戳存储它们。然后可以将 Grafana 指向 Prometheus 服务器,以获取统计信息、绘制图表、设置警报、创建热力图、生成表格等,以根据需要分析 Citrix ADC 统计信息。

有关如何在图中所示环境中设置导出器工作的详细信息将在以下部分中提供。还将解释导出器默认抓取哪些 Citrix ADC 实体/指标以及如何修改它们。

有关 Citrix ADC 导出器的更多信息,请参阅 指标导出器 GitHub

ADM 服务分布式追踪

在服务图中,您可以使用分布式追踪视图来:

  • 分析服务的整体性能。
  • 对所选服务及其相互依赖服务之间的通信流进行可视化呈现。
  • 识别哪个服务指示错误并对错误服务进行故障排除
  • 查看所选服务与每个相互依赖服务之间的事务详细信息。

ADM 分布式跟踪先决条件

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

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

跟踪标头

  • 使用 NS_DISTRIBUTED_TRACING 和值 YES 更新 CPX YAML 文件。 要开始使用,请参阅 分布式跟踪

Citrix 可观测性导出器 (COE) 解析

Citrix 可观测性导出器是一个容器,它从 Citrix ADC 收集指标和事务,并将其转换为适合支持的端点的格式(例如 JSON、AVRO)。您可以将 Citrix 可观测性导出器收集的数据导出到所需的端点。通过分析导出到端点的数据,您可以在微服务级别为由 Citrix ADC 代理的应用程序获取有价值的见解。

有关 COE 的更多信息,请参阅 COE GitHub

卓越中心以 Elasticsearch 作为事务端点

卓越中心

当 Elasticsearch 被指定为事务端点时,Citrix 可观测性导出器将数据转换为 JSON 格式。在 Elasticsearch 服务器上,Citrix 可观测性导出器每小时为每个 ADC 创建 Elasticsearch 索引。这些索引基于数据、小时、ADC 的 UUID 以及 HTTP 数据类型(http_event 或 http_error)。然后,Citrix 可观测性导出器将 JSON 格式的数据上传到每个 ADC 的 Elasticsearch 索引下。所有常规事务都放入 http_event 索引中,任何异常都放入 http_error 索引中。

卓越中心 JSON

支持 Zipkin 的分布式跟踪

在微服务架构中,单个最终用户请求可能跨越多个微服务,这使得跟踪事务和修复错误源变得具有挑战性。在这种情况下,传统的性能监控方法无法准确查明故障发生在哪里以及性能不佳的原因。您需要一种方法来捕获处理请求的每个微服务特有的数据点,并对其进行分析以获得有意义的见解。

分布式跟踪通过提供一种端到端跟踪事务并了解其如何在多个微服务中处理的方式来解决这一挑战。

OpenTracing 是一种用于设计和实现分布式跟踪的规范和标准 API 集合。分布式跟踪器可让您可视化微服务之间的数据流,并有助于识别微服务架构中的瓶颈。

Citrix 可观测性导出器 为 Citrix ADC 实现了分布式跟踪功能,并目前支持 Zipkin 作为其分布式跟踪器。

目前,您可以使用 Citrix ADC 在应用程序级别监控性能。通过将 Citrix Observability Exporter 与 Citrix ADC 结合使用,您可以获取由 Citrix ADC CPX、MPX 或 VPX 代理的每个应用程序的微服务的跟踪数据。

要开始使用,请参阅 GitHub 可观测性导出器

COE 应用交付控制器

Zipkin 用于应用程序调试

Zipkin 是一个基于 Google 的 Dapper 论文开源 分布式跟踪系统。Dapper 是 Google 用于生产系统分布式跟踪的系统。Google 在其论文中解释道:“我们构建 Dapper 是为了向 Google 的开发人员提供有关复杂分布式系统行为的更多信息。” 在故障排除时,从不同角度观察系统至关重要,尤其是在系统复杂且分布式的情况下。

以下 Zipkin 跟踪数据标识了与 Watches 示例应用程序相关的总共 5 个跨度和 5 个服务。跟踪数据显示了跨 5 个微服务的特定跨度数据。

要开始使用,请参阅以下 Zipkin

齐普金 追踪数据

亚马逊跨度

显示初始页面加载请求的应用程序延迟的 Zipkin 跨度示例:

采金服务示例

Kibana 用于查看数据

Kibana 是一个开放的用户界面,可让您可视化 Elasticsearch 数据并导航 Elastic Stack。您可以执行从跟踪查询负载到了解请求在应用程序中流动方式的任何操作。

无论您是分析师还是管理员,Kibana 都能通过提供以下三个关键功能使您的数据具有可操作性:

  • 一个开源分析和可视化平台。 使用 Kibana 探索您的 Elasticsearch 数据,然后构建精美的可视化和仪表板。
  • 用于管理 Elastic Stack 的 UI。 管理您的安全设置、分配用户角色、创建快照、汇总数据等等——所有这些都可以在方便的 Kibana UI 中完成。
  • Elastic 解决方案的集中式枢纽。 从日志分析到文档发现再到 SIEM,Kibana 是访问这些及其他功能的门户。

Kibana 旨在将 Elasticsearch 用作数据源。可以将 Elasticsearch 视为存储和处理数据的引擎,而 Kibana 则位于其之上。

在主页上,Kibana 提供了以下添加数据的选项:

Kibana 使用 索引模式 来指示要探索哪些 Elasticsearch 索引。如果您上传文件、运行内置教程或添加示例数据,您将免费获得一个索引模式,并可以开始探索。如果您加载自己的数据,可以在 堆栈管理 中创建索引模式。

步骤 1:配置 Logstash 的索引模式

步骤 2:选择索引并生成流量以填充数据。

步骤 3: 从日志源的非结构化数据生成应用程序。

步骤 4: Kibana 格式化 Logstash 输入以创建报告和仪表板。

  • 时间范围
  • 表格视图
  • 基于应用程序的命中计数。
    • 时间、IP、代理、机器操作系统、响应代码 (200)、URL
    • 按值筛选

步骤 5: 在聚合报告中可视化数据。

  • 图表报告中的结果聚合(饼图、图形等)

Kibana 仪表板视图

Kibana 网页内容视图