配置日志记录

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

  • 在配置更改后诊断和解决问题。日志提供了可供回溯的完整操作路径。
  • 协助进行变更管理并跟踪配置更改。
  • 报告系统管理活动。

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

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

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

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

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

记录了什么

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

  • 计算机目录
  • 交付组(包括对电源管理设置的修改)
  • 管理员角色和范围
  • 主机资源和连接信息
  • 通过 Studio 配置的思杰策略

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

  • 虚拟机或用户桌面的电源管理操作
  • Studio 或 Director 向用户发送一条消息

以下操作不会被记录:

  • 自主操作,例如池管理对虚拟机的开机操作。
  • 通过组策略管理控制台 (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. 要手动创建数据库,请单击“生成数据库脚本”。生成的脚本包含手动创建数据库的说明。在上传架构之前,请确保数据库为空,并且至少有一个用户有权访问和更改数据库。

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

查看配置日志的详细内容

启动配置更改和管理活动时,Studio 和 Director 创建的高级操作会列在 Studio 的上方中间窗格中。一个高级操作会产生一个或多个服务和 SDK 调用,这些调用是低级操作。在上方窗格中选择高级操作时,下方窗格会显示低级操作。

如果操作在完成前失败,则日志操作可能未在数据库中完成。例如,开始记录将没有相应的停止记录。在这种情况下,日志会指示信息缺失。当您根据时间范围显示日志时,如果日志中的数据与条件匹配,则会显示不完整的日志。例如,如果请求过去五天的所有日志,并且存在一个开始时间在过去五天内但没有结束时间的日志,则该日志也会包含在内。

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

要显示配置日志内容,请在 Studio 导航窗格中选择“日志记录”。默认情况下,中心窗格按时间顺序(最新条目在前)列出日志内容,并按日期分隔。您可以:

  • 按列标题对显示内容进行排序。
  • 通过指定日期间隔或在“搜索”框中输入文本来筛选显示内容。要在使用搜索后返回标准显示,请清除“搜索”框中的文本。
  • 通过选择表格右上角的“要显示的列”图标来选择显示中出现的列。例如,要查看管理员用于访问 Web Studio 的 IP 地址,请单击该图标并添加“客户端 IP”列。

生成报告

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

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

要生成配置日志报告,请在 Studio 导航窗格中选择日志记录,然后在操作栏中选择创建自定义报告

  • 选择报告的日期范围。
  • 选择报告格式:CSV、HTML 或两者。
  • 请浏览并选择您希望保存此报告的文件夹或路径。

删除配置日志内容

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

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

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

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

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

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

      1. 在 SQL Server 管理工作室 中,创建一个 SQL Server 登录名,并为其分配一个非 ‘sysadmin’ 的服务器角色。
      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]” 创建)。名称与映射中的键匹配的属性将被删除。