配置日志记录
配置日志记录是一项功能,可将站点配置更改和管理活动捕获到数据库中。此功能默认启用。您可以使用记录的内容来:
- 在配置更改后诊断和解决问题。日志提供了可供回溯的完整操作路径。
- 协助进行变更管理并跟踪配置更改。
- 报告系统管理活动。
您可以在 Citrix Studio 中设置配置日志记录首选项、显示配置日志以及生成 HTML 和 CSV 报告。您可以按日期范围和全文搜索结果筛选配置日志显示。强制日志记录(启用后)可防止进行配置更改,除非这些更改可以被记录。在获得适当权限的情况下,您可以从配置日志中删除条目。您不能使用配置日志记录功能编辑日志内容。
配置日志记录使用 PowerShell SDK 和配置日志记录服务。配置日志记录服务在站点中的每个控制器上运行。如果一个控制器发生故障,另一个控制器上的服务会自动处理日志记录请求。
默认情况下,配置日志记录功能处于启用状态,并使用在创建站点时创建的数据库(站点配置数据库)。您可以为数据库指定不同的位置。配置日志记录数据库支持与站点配置数据库相同的高可用性功能。
对配置日志记录的访问通过委派管理进行控制,具有“编辑日志记录首选项”和“查看配置日志”权限。
配置日志在创建时已本地化。例如,以英语创建的日志将以英语读取,无论读取者的区域设置如何。
记录了什么
从 Studio、Director 和 PowerShell 脚本启动的配置更改和管理活动都会被记录。记录的配置更改示例包括处理(创建、编辑、删除、分配):
- 计算机目录
- 交付组(包括对电源管理设置的修改)
- 管理员角色和范围
- 主机资源和连接信息
- 通过 Studio 配置的思杰策略
已记录的管理更改示例包括:
- 虚拟机或用户桌面的电源管理操作
- Studio 或 Director 向用户发送一条消息
以下操作不会被记录:
- 自主操作,例如池管理对虚拟机的开机操作。
- 通过组策略管理控制台 (GPMC) 实施的策略操作;使用 Microsoft 工具查看这些操作的日志。
- 通过注册表、直接访问数据库或来自 Studio、Director 或 PowerShell 以外的源进行的更改。
- 部署初始化后,当第一个配置日志记录服务实例向配置服务注册时,配置日志记录功能才可用。因此,配置的早期阶段不会被记录(例如,获取和应用数据库架构时,以及初始化管理程序时)。
管理配置日志记录
默认情况下,配置日志记录使用创建站点时创建的数据库(也称为站点配置数据库)。Citrix 建议将配置日志记录数据库(和监视数据库)放置在单独的位置,原因如下:
- 配置日志记录数据库的备份策略,预计会与站点配置数据库的备份策略有所不同。
- 为配置日志记录(和监视服务)收集的数据量可能会对站点配置数据库的可用空间产生不利影响。
- 它将三个数据库的单点故障分离开来。
不支持配置日志记录的产品版本在 Studio 中没有“日志记录”节点。
启用和禁用配置日志记录以及强制日志记录
默认情况下,配置日志记录处于启用状态,强制日志记录处于禁用状态。
- 登录 Web Studio 并在左侧窗格中选择“日志记录”。
- 在操作栏中选择“首选项”。配置日志记录对话框包含数据库信息,并指示配置日志记录和强制日志记录是处于启用状态还是禁用状态。
-
选择所需操作:
要启用配置日志记录,请选择“启用”。这是默认设置。如果无法写入数据库,则日志记录信息将被丢弃,但操作会继续。
要禁用配置日志记录,请选择“禁用”。如果以前启用了日志记录,则现有日志仍可通过 PowerShell SDK 读取。
要启用强制日志记录,请选择“当数据库不可用时阻止更改站点配置”。除非可以写入配置日志记录数据库,否则不允许进行通常会记录的任何配置更改或管理活动。仅当配置日志记录处于启用状态(选择“启用”时)才能启用强制日志记录。如果配置日志记录服务失败且未使用高可用性,则假定为强制日志记录。在这种情况下,通常会记录的操作将不会执行。
要禁用强制日志记录,请选择“当数据库不可用时允许更改站点配置”。即使无法访问配置日志记录数据库,也允许进行配置更改和管理活动。这是默认设置。
更改配置日志记录数据库位置
当强制日志记录处于启用状态时,您无法更改数据库位置,因为位置更改包括一个无法记录的短暂断开连接间隔。
- 使用受支持的 SQL Server 版本创建数据库服务器。
- 登录 Web Studio 并在左侧窗格中选择“日志记录”。
- 在操作栏中选择“首选项”。
- 在“日志记录首选项”对话框中,选择“更改日志记录数据库”。
- 在“更改日志记录数据库”对话框中,指定包含新数据库服务器的服务器位置。有关有效格式,请参阅数据库地址格式。
- 要允许 Studio 创建数据库,请单击“确定”。出现提示时,单击“确定”,数据库将自动创建。Studio 尝试使用当前 Studio 用户的凭据访问数据库。如果失败,系统会提示您输入数据库用户的凭据。然后,Studio 会将数据库架构上传到数据库。(凭据仅在数据库创建期间保留。)
- 要手动创建数据库,请单击“生成数据库脚本”。生成的脚本包含手动创建数据库的说明。在上传架构之前,请确保数据库为空,并且至少有一个用户有权访问和更改数据库。
以前数据库中的配置日志记录数据不会导入到新数据库中。检索日志时,无法从两个数据库聚合日志。新配置日志记录数据库中的第一个日志条目指示发生了数据库更改,但它未标识以前的数据库。
查看配置日志的详细内容
启动配置更改和管理活动时,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 数据库登录名,该角色允许您在数据库服务器上执行任何活动。或者,
serveradmin或setupadmin服务器角色允许您执行删除操作。 -
如果您的部署需要更高的安全性,请使用映射到数据库用户的非 sysadmin 数据库登录名,该用户具有从数据库中删除记录的权限。
- 在 SQL Server 管理工作室 中,创建一个 SQL Server 登录名,并为其分配一个非 ‘sysadmin’ 的服务器角色。
- 将登录名映射到数据库中的用户。SQL Server 会自动在数据库中创建一个与登录名同名的用户。
- 在数据库角色成员身份中,为数据库用户指定至少一个角色成员:
ConfigurationLoggingSchema_ROLE或dbowner。
有关详细信息,请参阅 SQL Server 管理工作室文档。
-
要删除配置日志,请执行以下操作:
- 登录 Web Studio 并在左侧窗格中选择 Logging。
- 在操作栏中选择 Delete logs。
- 系统会询问您是否要在删除日志之前创建日志备份。如果您选择创建备份,请浏览到保存备份存档的位置。备份将创建为 CSV 文件。
清除配置日志后,日志删除是发布到空日志的第一项活动。该条目提供了有关谁在何时删除了日志的详细信息。
查看应用程序接口和 PowerShell 日志
要监视当前会话期间发出的 API 请求,请单击 APIs 选项卡。API 日志在您退出 Web Studio 后会被清除。
要查看与您当天执行的 UI 操作对应的 PowerShell 命令,请单击 PowerShell 选项卡。
将元数据与配置日志关联
您可以通过将一个名为 MetadataMap 的 name-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]” 创建)。名称与映射中的键匹配的属性将被删除。