Linux Virtual Delivery Agent

日志收集

日志机制概述

下表概述了 Linux VDA 的日志记录机制。

Logging module Log file name format Log file name example Logging scope Maximum single file size Rotation threshold (defaults) Configuration
HDX hdx.log[.n] hdx.log, hdx.log.1 Graphics, login, audio, keyboard, mouse 200 MiB 1 current, 2 old Configurable through the setlog utility
Jproxy jproxy.log[.n.log] jproxy.log, jproxy.log.1.log VDA registration, user authentication 20 MiB 1 current, 10 old Configurable through the setlog utility or /etc/xdl/log4j2.xml
VDA vda.YYYY-MM-DD.hh.mm.ss.log vda.2024-05-06.20.18.40.log VDA registration 50 MiB 1 current, 1 old Configurable through the setlog utility or /etc/xdl/brokeragent.conf

注意:

  • 第一个日志文件的名称中不带数字,后续文件则按“.n”编号,其中“n”表示文件编号。例如,“hdx.log”是第一个 HDX 日志文件,“hdx.log.1”是第二个。
  • 单个日志文件的最大大小以兆字节 (MiB) 为单位。
  • 正在生成且尚未达到单个文件最大大小的日志文件称为“当前”日志文件。当“当前”日志文件达到单个文件的最大大小时,它将滚动并成为“旧”日志文件。
  • 轮换阈值可配置,用于限制可保留的“旧”日志文件的数量。达到限制时,最旧的日志文件将被删除。

日志记录配置

本节提供了有关日志记录配置的更多信息,作为对上表中详细信息的补充。

默认启用 Linux VDA 的日志记录

ctxlogd 守护程序和 setlog 实用程序包含在 Linux VDA 发布包中。默认情况下,在安装和配置 Linux VDA 后,ctxlogd 守护程序会启动。所有其他跟踪服务都依赖于 ctxlogd 守护程序。如果您不想继续跟踪 Linux VDA,可以停止 ctxlogd 守护程序。

通过 /etc/xdl/brokeragent.conf 配置 VDA 日志记录

注意:

如果您只想配置 VDA 日志记录的日志级别,而不想深入研究其他日志记录参数(例如单个日志文件的最大大小),则可以使用本文后面介绍的 setlog 实用程序。否则,请使用 /etc/xdl/brokeragent.conf

VDA 上的 /etc/xdl/brokeragent.conf 文件可用于配置 VDA 日志记录。例如:

/etc/xdl/brokeragent.conf 文件

通过 /etc/xdl/log4j2.xml 配置 Jproxy 日志记录

注意:

如果您只想配置 Jproxy 日志记录的日志级别,而不想深入研究其他日志记录参数(例如单个日志文件的最大大小),则可以使用本文后面介绍的 setlog 实用程序。否则,请使用 /etc/xdl/log4j2.xml

以下是通过 /etc/xdl/log4j2.xml 配置 Jproxy 日志记录的示例,其中 SizeBasedTriggeringPolicy 参数指定单个 Jproxy 日志文件的最大大小,DefaultRollerStrategy 参数设置可保留的 Jproxy 日志文件总数。

配置 Jproxy 日志记录

通过 setlog 实用程序配置 HDX™ 日志记录

setlog 实用程序位于 /opt/Citrix/VDA/bin/ 路径下。只有 root 用户才有权运行它。您可以使用 GUI 或运行命令来查看和更改配置选项,包括值(日志文件路径、单个文件大小限制和轮换阈值)以及日志级别。运行以下命令以获取有关 setlog 实用程序的帮助:

setlog help
<!--NeedCopy-->

默认情况下,HDX 日志保存在 /var/log/xdl/hdx.log 下,单个 HDX 日志文件的大小限制为 200 MiB,您可以在 /var/log/xdl/hdx.log 下最多保存两个“旧”HDX 日志文件。

要查看所有当前 setlog 值,请运行以下命令:

setlog values

log_path (Log Output Path) = /var/log/xdl/hdx.log

log_size (Max Log Size (MiB)) = 200

log_count (Max Old Log Files) = 2
<!--NeedCopy-->

要查看或设置单个 setlog 值,请运行以下命令:

setlog value <name> [<value>]
<!--NeedCopy-->

例如:

setlog value log_size 100
<!--NeedCopy-->

级别

默认情况下,日志级别设置为 info(不区分大小写)。

当您遇到需要故障排除的问题时,我们建议您在大多数情况下将日志级别设置为 verbose。然后,重现问题并收集日志。

要设置日志级别(包括 Disabled、Inherited、Trace、Verbose、Information、Warnings、Errors 和 Fatal Errors),请运行以下命令:

-  setlog level <class> [<level>]
<!--NeedCopy-->
日志级别 命令参数(不区分大小写)
Disabled none
Inherited inherit
Trace trace
Verbose verbose
Information info
Warnings warning
Errors error
Fatal Errors fatal

<class> 变量指定 Linux VDA 的一个组件。要涵盖所有组件,请将其设置为 all。例如:

setlog level all error
<!--NeedCopy-->

要查看所有支持的类或组件,请运行以下命令:

setlog levels
<!--NeedCopy-->

恢复默认值

将所有级别和值恢复为默认设置:

setlog default
<!--NeedCopy-->

重要提示:

ctxlogd 服务使用 /var/xdl/.ctxlog 文件进行配置,该文件只能由 root 用户创建。其他用户没有对此文件的写入权限。我们建议 root 用户不要向其他用户授予写入权限。不遵守此规定可能会导致对 ctxlogd 进行任意或恶意配置,从而影响服务器性能和用户体验。

日志收集

您可以运行 bash /opt/Citrix/VDA/bin/xdlcollect.sh 命令来收集日志。用于收集日志的 xdlcollect Bash 脚本已集成到 Linux VDA 软件中,位于 /opt/Citrix/VDA/bin 下。

日志收集完成后,将在 VDA 上的 /tmp/xdlcollect 下生成一个 ZIP 文件。

AOT 日志收集和上传

概述

此功能从 Virtual Delivery Agent (VDA) 上的组件收集 Always-On Tracing (AOT) 日志。它支持:

  • 解决难以重现的问题
  • 日常健康检查
  • 集中式日志管理

日志将转换为结构化事件并上传到集中式 Log Server 以进行查询和分析。

配置

组策略配置

要通过组策略启用此功能,请确保在 Delivery Controller (DDC) 上正确配置了 Log Server。步骤如下:

  1. 在 Citrix Studio 中,单击“设置”->“日志服务器”->“编辑”

AOT 日志服务器

  1. 设置日志服务器地址和端口以启用日志转发到日志服务器

AOT 日志配置

本地注册表配置

本地注册表具有比策略更高的优先级。要通过本地注册表启用此功能,请在 VDA 上执行以下命令(将 <ip><port> 替换为您的 IP 和端口):

启用 AOT 数据收集:

设置日志服务器端点:

sudo /opt/Citrix/VDA/bin/ctxreg create \ 
  -k "HKLM\System\CurrentControlSet\Control\Citrix\AOT" \ 
  -t "REG_DWORD" \ 
  -v "EnableAotDataCollection" \ 
  -d "0x00000001" --force 

sudo /opt/Citrix/VDA/bin/ctxreg create \ 
  -k "HKLM\System\CurrentControlSet\Control\Citrix\AOT" \ 
  -t "REG_SZ" \ 
  -v "AotDataStoreEndpoint" \ 
  -d "<http/https>://<fqdn-or-ip-address>:<port>" --force
<!--NeedCopy-->

一旦从 Studio 推送的策略设置发生更改,或本地注册表设置发生更改,ctxvector 服务将在不到 1 分钟内自动应用更改。无需手动重新启动。

TLS 身份验证

此功能支持与日志服务器的 HTTP 和 HTTPS 连接。对于 HTTPS,请在 Linux 系统密钥库中安装根 CA 证书。VDA 只有在验证日志服务器证书后才能成功建立 HTTPS 连接。日志服务器不验证 VDA。

故障排除

***/var/xdl/.ctxlog*** 文件缺失(例如,意外删除)时,**ctxlogd** 守护程序会失败,并且您无法重新启动 **ctxlogd** 服务。

/var/log/messages:

Apr 1 02:28:21 RH72 citrix-ctxlogd[17881]: Failed to open logging configuration file.

Apr 1 02:28:21 RH72 systemd: ctxlogd.service: main process exited, code=exited, status=1/FAILURE

Apr 1 02:28:21 RH72 systemd: Unit ctxlogd.service entered failed state.

Apr 1 02:28:21 RH72 systemd: ctxlogd.service failed.
<!--NeedCopy-->

为解决此问题,请以 root 用户身份运行 **setlog** 以重新创建 ***/var/xdl/.ctxlog*** 文件。然后重新启动其他服务所依赖的 **ctxlogd** 服务。