配置日志记录

配置日志记录是一项功能,可将站点配置更改和管理活动捕获到数据库中。此功能默认启用。您可以使用记录的内容来:

  • 用于诊断和解决配置更改后出现的问题。日志提供了可供追溯的详细操作轨迹。
  • 协助进行变更管理,并对配置进行跟踪。
  • 报告管理员的操作活动。

您可以从 Citrix Studio 设置配置日志记录首选项、显示配置日志以及生成 HTML 和 CSV 报告。您可以按日期范围和全文搜索结果筛选配置日志显示。强制日志记录(启用时)可防止进行配置更改,除非这些更改可以被记录。在具有适当权限的情况下,您可以从配置日志中删除条目。您不能使用配置日志记录功能编辑日志内容。

配置日志记录使用 PowerShell SDK 和配置日志记录服务。配置日志记录服务在站点中的每个控制器上运行。如果一个控制器发生故障,另一个控制器上的服务会自动处理日志记录请求。

默认情况下,配置日志记录功能处于启用状态,并使用创建站点时创建的数据库(站点配置数据库)。您可以为数据库指定其他位置。配置日志记录数据库支持与站点配置数据库相同的高可用性功能。

对配置日志记录的访问通过委派管理进行控制,具有“编辑日志记录首选项”和“查看配置日志”权限。

配置日志在创建时已本地化。例如,以英语创建的日志将以英语读取,无论读取者的区域设置如何。

记录的内容

从 Studio、Director 和 PowerShell 脚本启动的配置更改和管理活动都将被记录。记录的配置更改示例包括处理(创建、编辑、删除、分配):

  • 计算机目录
  • 交付组(包括对电源管理设置的更改操作)
  • 管理员角色和范围
  • 主机资源及其连接
  • 通过 Studio 界面配置的 Citrix 策略

已记录的管理更改的示例包括:

  • 对虚拟机或用户桌面进行的电源管理操作
  • 思杰工作室 或 思杰总监 向用户发送消息

以下操作不会被记录:

  • 自主操作,例如池管理对虚拟机的开机操作。
  • 通过组策略管理控制台 (GPMC) 实施的策略操作;使用 Microsoft 工具查看这些操作的日志。
  • 通过注册表、直接访问数据库或来自 Studio、Director 或 PowerShell 以外的源进行的更改。
  • 当部署初始化时,配置日志记录功能仅在第一个配置日志记录服务实例向配置服务注册后才可用。因此,配置的早期阶段不会被记录(例如,数据库架构的获取和应用,以及管理程序的初始化)。

管理配置日志记录

默认情况下,配置日志记录使用创建站点时创建的数据库(也称为站点配置数据库)。Citrix 建议您将配置日志记录数据库(和监视数据库)放置在单独的位置,原因如下:

  • 配置日志记录数据库的备份策略很可能与站点配置数据库的备份策略有所不同。
  • 为配置日志记录(和监视服务)收集的数据量可能会对站点配置数据库的可用空间产生不利影响。
  • 它将三个数据库的单点故障分离开来。

不支持配置日志记录的产品版本在 Studio 中没有“日志记录”节点。

启用和禁用配置日志记录以及强制日志记录

默认情况下,配置日志记录处于启用状态,强制日志记录处于禁用状态。

  1. 登录 Web Studio 并在左侧窗格中选择“日志记录”。
  2. 在操作栏中选择“首选项”。配置日志记录对话框包含数据库信息,并指示配置日志记录和强制日志记录是处于启用状态还是禁用状态。
  3. 选择所需操作:

    要启用配置日志记录,请选择“启用”。这是默认设置。如果无法写入数据库,则日志记录信息将被丢弃,但操作会继续。

    要禁用配置日志记录,请选择“禁用”。如果以前启用了日志记录,则现有日志仍可通过 PowerShell SDK 读取。

    要启用强制日志记录,请选择“当数据库不可用时阻止更改站点配置”。除非可以写入配置日志记录数据库,否则不允许进行通常会记录的配置更改或管理活动。仅当配置日志记录处于启用状态(选择“启用”时)时,才能启用强制日志记录。如果配置日志记录服务失败且未使用高可用性,则假定为强制日志记录。在这种情况下,通常会记录的操作将不会执行。

    要禁用强制日志记录,请选择“当数据库不可用时允许更改站点配置”。即使无法访问配置日志记录数据库,也允许进行配置更改和管理活动。这是默认设置。

更改配置日志记录数据库位置

启用强制日志记录后,无法更改数据库位置,因为位置更改包括一个无法记录的短暂断开连接间隔。

  1. 使用受支持的 SQL Server 版本创建数据库服务器。
  2. 登录 Web Studio 并在左侧窗格中选择“日志记录”。
  3. 在操作栏中选择“首选项”。
  4. 在“日志记录首选项”对话框中,选择“更改日志记录数据库”。
  5. 在“更改日志记录数据库”对话框中,指定包含新数据库服务器的服务器位置。有关有效格式,请参阅数据库地址格式
  6. 要允许 Studio 创建数据库,请单击“确定”。出现提示时,单击“确定”,数据库将自动创建。Studio 尝试使用当前 Studio 用户的凭据访问数据库。如果失败,系统会提示您输入数据库用户的凭据。然后,Studio 会将数据库架构上传到数据库。(凭据仅在数据库创建期间保留。)
  7. 要手动创建数据库,请单击“生成数据库脚本”。生成的脚本包含手动创建数据库的说明。在上传架构之前,请确保数据库为空,并且至少有一个用户有权访问和更改数据库。

上一个数据库中的配置日志记录数据不会导入到新数据库中。检索日志时,无法从两个数据库聚合日志。新配置日志记录数据库中的第一个日志条目指示发生了数据库更改,但它未标识上一个数据库。

查看配置日志内容

要查看配置日志内容,请在左侧窗格中选择“日志记录”,然后选择“事件”选项卡。

默认情况下,事件日志按管理员名称列出。您可以根据需要执行以下任务:

  • 查看日志详细信息。 高级操作会导致一个或多个服务和 SDK 调用,这些是低级操作。当您在上部窗格中选择高级操作时,下部窗格会显示低级操作。
  • 排序显示。 通过单击列标题对显示进行排序。
  • 筛选日志。 通过设置筛选条件(例如日期间隔或自定义周期)或在“搜索”框中输入完整或部分主任务名称来优化显示。使用搜索后要返回标准显示,请清除“搜索”框中的文本。
  • 导出日志。 将选定日志或所有日志导出到 CSV 文件以进行存档或进一步分析。
  • 自定义列。 通过添加非默认列(例如客户端 IP 和标签)来根据您的需要调整显示。
  • 管理标签。 为事件日志添加、编辑和删除标签,以增强日志组织和跟踪。

显示方式的特点:

  • 如果操作在完成前失败,日志操作可能未在数据库中完成。例如,启动记录没有相应的停止记录。在这种情况下,日志会指示信息缺失。当您根据时间范围显示日志时,如果数据符合条件,则会显示不完整的日志。

    例如,如果您请求过去五天的日志,并且如果过去五天内开始的日志没有结束时间,则该日志也会被包括在内。

  • 使用调用 PowerShell cmdlet 的脚本时,如果您创建低级别操作但未指定父高级别操作,配置日志记录会创建一个替代高级别操作。

生成报告

您可以生成包含配置日志数据的 CSV 和 HTML 报告。

  • CSV 报告包含指定时间间隔内的所有日志记录数据。数据库中的分层数据被展平为单个 CSV 表。文件中数据的任何方面都没有优先级。不使用任何格式,也不假定人类可读性。该文件(名为 MyReport)以通用可消费格式包含数据。CSV 文件通常用于存档数据,或作为报告或数据操作工具(例如 Microsoft Excel)的数据源。
  • HTML 报告以人类可读的形式提供指定时间间隔内的日志记录数据。它提供了一个结构化、可导航的视图,用于审查更改。HTML 报告包含两个文件,分别名为 Summary 和 Details。Summary 列出高级别操作:每个操作发生的时间、执行者和结果。单击每个操作旁边的 Details 链接会将您带到 Details 文件中的低级别操作,其中提供附加信息。

要生成配置日志报告,请在 Studio 导航窗格中选择 Logging,然后在操作栏中选择 Create custom report

  • 选择报告的日期范围。
  • 选择报告格式:CSV、HTML 或两者。
  • 浏览到您希望将报告保存到的位置。

删除配置日志内容

要删除配置日志,您必须拥有特定的委派管理和 SQL Server 数据库权限。

  • 委派管理: 您必须拥有允许读取部署配置的委派管理角色。完全管理员角色拥有此权限。自定义角色必须在“其他权限”类别中选择“只读”或“管理”。

    在删除配置日志记录数据之前创建备份,自定义角色还必须在“日志记录权限”类别中选择“只读”或“管理”。

  • SQL Server 数据库: 您必须拥有一个 SQL Server 登录名,该登录名具有从数据库中删除记录的权限。有两种方法可以实现此目的:

    • 使用具有 sysadmin 服务器角色的 SQL Server 数据库登录名,该角色允许您在数据库服务器上执行任何活动。或者,serveradminsetupadmin 服务器角色允许您执行删除操作。

    • 如果您的部署需要更高的安全性,请使用映射到具有从数据库中删除记录权限的数据库用户的非 sysadmin 数据库登录名。

      1. 在 SQL Server 管理工作室 中,创建一个服务器角色不是 ‘sysadmin’ 的 SQL Server 登录名。
      2. 将登录名映射到数据库中的用户。SQL Server 会自动在数据库中创建一个与登录名同名的用户。
      3. 在“数据库角色成员身份”中,为数据库用户指定至少一个角色成员:ConfigurationLoggingSchema_ROLEdbowner

      有关详细信息,请参阅 SQL Server 管理工作室文档。

要删除配置日志,请执行以下操作:

  1. 登录 Web Studio 并在左侧窗格中选择 Logging
  2. 在操作栏中选择 Delete logs
  3. 系统会询问您是否要在删除日志之前创建日志备份。如果您选择创建备份,请浏览到保存备份存档的位置。备份将创建为 CSV 文件。

清除配置日志后,日志删除是发布到空日志的第一项活动。该条目提供了有关谁在何时删除了日志的详细信息。

查看应用程序编程接口和 PowerShell 的日志

要监视当前会话期间发出的 API 请求,请单击 APIs 选项卡。API 日志在您退出 Web Studio 后清除。

要查看与您当天执行的 UI 操作相对应的 PowerShell 命令,请单击 PowerShell 选项卡。

将元数据与配置日志关联

您可以通过将一个名为 MetadataMapname-value 对与日志记录关联起来,从而将元数据附加到配置日志。

注意:

  • 您只能将元数据附加到高级操作对象。
  • 元数据会在执行时,与那些现有的记录建立关联。

设置元数据

运行 PowerShell 命令 Set-LogHighLevelOperationMetadata 以将日志记录与 MetadataMap 关联。 Set-LogHighLevelOperationMetadata 采用以下参数:

  • Id:高级操作的 ID。
  • InputObject:您向其添加元数据的高级操作。这是 Id 参数的替代方法,其中高级操作对象或对象列表传递给 PowerShell 命令。
  • Name:要添加的元数据的属性名称。该属性对于指定的高级操作必须是唯一的。该属性不能包含以下任何字符 ()\/;:#.*?=<> []”‘。
  • Value:属性的值。
  • Map:属性的(名称、值)对字典。这是使用 -Name-Value 参数设置元数据的替代方法。

例如,要将元数据附加到所有 Id 为 40 的高级日志记录,请运行以下 PowerShell 命令:

Get-LogHighLevelOperation – Id 40 | Set-LogHighLevelOperationMetadata -Name A -Value B

要将元数据附加到具有用户 abc@example.com 的高级记录,请运行以下 PowerShell 命令:

Get-LogHighLevelOperation – User `abc@example.com` | Set-LogHighLevelOperationMetadata -Name C -Value D

使用元数据检索

运行以下 PowerShell 命令,使用关联的元数据检索日志记录:

  • 按键和值搜索:

    Get-LogHighLevelOperation -Metadata "Key:Value"

  • 按值搜索任何键:

    Get-LogHighLevelOperation -Metadata "*:Value"

  • 按键和任何值搜索:

    Get-LogHighLevelOperation -Metadata "Key:*"

删除元数据

运行 PowerShell 命令 Remove-LogHighLevelOperationMetadata 以删除关联的元数据。 Remove-LogHighLevelOperationMetadata 采用以下参数:

  • Id:高级操作的 ID。
  • InputObject:要添加元数据的高级操作。这是 Id 参数的替代方法,其中高级操作对象或对象列表将传递给 PowerShell 命令。
  • Name:要删除的元数据的属性名称。设置为 $null 以删除指定对象的所有元数据。
  • Map:属性的(名称、值)对字典。这可以是哈希表(使用 @{“name1” = “val1”; “name2” = “val2”} 创建)或字符串字典(使用 new-object “System.Collections.Generic.Dictionary[String, String]” 创建)。名称与映射中的键匹配的属性将被删除。