首页 > 代码库 > XenApp/XenDesktop监控数据查询、提取

XenApp/XenDesktop监控数据查询、提取

在XenDesktop中,Director为管理员提供了整个平台的监控和健康状态的信息,让管理员方便的了解Citrix的平台的运行状态以及实时发生的故障。这些监控数据从哪儿来?在XenDesktop的先前版本中,Director中的大多数数据都是通过直接访问Broker Service API来检索的。使用此API的缺点是此服务不包括对使用的历史信息的检索,即只能检索实时会话信息。如果管理员需要向以前的监控组件Edgesight那样检索历史数据,比如管理员可能想知道目前有多少会话处于活动状态,以及昨天有多少个会话登录使用过,仅仅是Broker Service API是无法满足的,特别是XenApp/XenDesktop 7.x在去掉监控组件Edgesight的情况下,监控功能就实在鸡肋。那么在XenApp/XenDesktop 7.x中就需要使用新的服务来提高对历史数据的检索。鉴于此,XenApp/XenDesktop 7.x提供了一项新的服务,用来检索有关会话和连接的历史信息。这个新服务称为Monitor Service。这个服务承载着访问历史数据的功能,而且为了达到便捷和易于使用,因此,选择了易于使用的API技术:OData API,该API是一个通用的API标准,可以从许多不同的平台以及接口来访问。




一、Broker Service API可以检索那些数据



Citrix Broker Service主要用于对XenApp/XenDesktop进行管理,Citrix平台中将XenApp/XenDesktop 7.x的资源按照对象进行划分,Citrix Broker Service通过对这些资源进行管理和互连关系的调度,从而实现对Citrix平台资源的管理。其对象和互连关系如下图所示:技术分享

以下部分将介绍各个对象、对象的职责、特征和基本属性。

连接

连接实体提供与虚拟化平台的管理点建立连接所需的详细信息。这些详细信息用于提供电源管理和所需的置备功能。连接定义:

  • 连接的身份,包括名称和内部 ID 值 (GUID)。

  • 类型 — XenServer、SCVMM 或 vCenter。

  • 用户名 — 用于连接到虚拟机管理程序的帐户名称。

  • 密码 — 用于连接到虚拟机管理程序的密码。

  • 连接的状态以及是否可以与虚拟机管理程序通信。

  • 虚拟机管理程序提出的电流警报。

密码设置后无法读回,并且以加密形式存储在数据库中。

在每种平台定义的模式中存在这些实体中的一个实体,但是,在运行时会与虚拟化平台建立多个连接,以服务于 XenDesktop 部署的要求。这些连接可供多个资源实体共享。

资源

注意:此对象仅适用于使用 Machine Creation Services (MCS) 或 Provisioning Services (PVS) 创建新计算机。

此设置定义虚拟化平台中供产品使用的一组资源。利用此设置,管理员可以限制部署以便仅使用平台所提供的资源的子集,并且可以针对不同的目的定义不同的资源集合。这样可以控制站点内置备的计算机的存储和网络使用情况。资源实体定义:

  • 网络 — 向虚拟化平台置备新计算机时可以使用的网络(对于 PVS,是指流网络)。

  • 存储 — 向虚拟化平台置备新计算机时使用的存储。

如果要使用置备机制,必须至少为每个连接对象定义一个资源设置。多个资源设置可以链接到同一个连接。连接详细信息由连接实体提供。

管理员

此设置定义可以管理产品的人员。产品可以有多个管理员,每个管理员负责产品中的不同功能集合。管理员定义:

  • 定义管理员的 AD 帐户,定义为管理员的名称或 SID 值。可以是单个用户或安全组。

  • 管理员具有的权限(即在哪些作用域上具有何种角色)。


计算机

计算机代表站点内可以用于向用户提供会话的虚拟机或物理计算机。计算机定义:

  • 计算机的身份,如 SAM 名称、DNS 名称、主机(虚拟机管理程序)名称、IP 地址、SID、许可证 ID 等。

  • 计算机的状态,包括电源状态、注册状态、个人虚拟磁盘状态、负载指数等。摘要状态值将这些状态汇总到一个状态值中。

  • 关于计算机环境和配置的信息,如已安装操作系统和 Citrix 组件的版本号,包括计算机的“功能级别”。

  • 有关计算机最近活动的数据,如最近一次取消注册的原因、最近一次在计算机上执行电源操作、最近一次连接故障等。

  • 用于控制计算机的启用/禁用/终止行为的维护模式和“WindowsConnectionSetting”状态。

  • 用于已分配桌面案例的计算机可见用户资源设置,如图标、已发布名称等。

  • 对于多会话计算机(服务器操作系统计算机):关于会话运行的汇总信息,如活动会话的数量、挂起会话的数量等。

  • 与已分配计算机关联的“标记”值。

  • 置备映像信息,如主映像的路径,用于创建计算机的置备方案、以及计算机是否具有在下次重新启动时挂起的更新映像。

大多数计算机值由 Broker Service SDK 展示,但是有些项目也通过其他服务展示,如 Machine Creation Service (MCS)。基于每个计算机显示的其他值继承自计算机所关联的目录或交付组(如有),或者来自用于创建计算机的方案。例如,通过多种因素(如物理还是虚拟、静态还是随机、用户更改的保留方式及其他)的组合在目录级别定义的计算机类型。对于单会话计算机(桌面操作系统计算机):计算机上正在运行的会话(如有)的信息也与计算机关联。这包括连接的用户身份、会话状态、使用的协议等。如果将计算机定义为属于某个目录,计算机仅能存在于此模式下;不能存在于此概念之外。

目录

目录定义通常(并非始终)应该相同的一组计算机。单个部署中可以存在多个目录,从而可以针对不同的目的构建和存储不同的计算机集合。目录定义:

  • 目录类型,通过以下属性值定义:

  1. 计算机的置备方法(MCS、PVS 或手动)

  2. 将目录中的计算机分配给用户的方式:永久分配给用户的静态方式或在用户每次请求资源时进行分配的随机方式

  3. 计算机是单会话(桌面操作系统计算机)还是多会话(服务器操作系统计算机)

  4. 计算机是物理计算机还是虚拟机

  5. 处理用户对计算机所做更改的方式,是在用户注销后丢弃、保留在计算机本地还是使用个人虚拟磁盘

目录是否用于 Remote PC 用户,如果是,哪些 Active Directory (AD) OU 与目录关联,以及哪些交付组与目录关联。与 MCS 置备有关的详细信息(如果要使用 MCS 置备):
  1. 计算机的主映像

  2. 内存大小和 CPU 数

  3. 个人虚拟磁盘大小、驱动器盘符和分配百分比

  4. AD 帐户命名方案和创建计算机的 OU,以及已经创建帐户的列表

与目录相关的任何 PVS 服务器的详细信息。计算机的预期功能级别;不允许功能级别较低的计算机向站点注册。

在目录级别展示的信息还包括在目录中使用或提供的计算机的使用情况值。

交付组

交付组提供用于向最终用户提供桌面和/或应用程序的计算机集合的详细信息。多个交付组可以链接到同一个目录,从而可以根据不同用户集合的要求采用各种方式来分发目录中的计算机。交付组定义:

  • 组中的计算机的分配类型,指示计算机是在多个用户之间共享(随机)还是永久分配给一个或多个用户(静态),以及计算机是单会话(桌面操作系统)计算机还是多会话(服务器操作系统)计算机。

  • 组的交付类型,指示组是为用户仅提供应用程序、仅提供桌面,还是既提供应用程序又提供桌面。

  • 控制组中的计算机电源管理的设置,包括:

  1. 将每周不同日期的哪个时间视为“高峰”时间

  2. 对于随机/未分配计算机,在每周不同日期的不同时间保持运行的计算机的数量,包括缓冲大小

  3. 针对上述设置评估每日时间的时区

  4. 是否以及如何对分配的计算机进行电源管理

  5. 是否以及如何在触发事件(如用户断开连接或注销)后关闭或挂起计算机

  6. 是否将计算机视为被其上运行的会话损坏,以及是否在每次使用后强制重新启动以将其返回到全新的已知状态

组中的桌面资源向最终用户的显示方式,包括使用的图标、颜色深度和名称。还会定义组中计算机的 ICA 连接所需的安全级别。对于桌面资源,允许每个用户从组并发访问的桌面数。建立这些计算机对最终用户的可用性所使用的规则。规则不仅考虑用户的身份,还会考虑用户从何处采用何种方式进行连接、客户端设备的状态以及支持哪些远程处理协议。是否启用组,包括维护模式的设置。是否允许最终用户自行重置计算机(例如,使用 StoreFront)。与随机/共享组关联的“标记”值。组中的计算机的预期功能级别;不允许功能级别较低的计算机向站点注册。组是否用于 Remote PC 用户,以及与组关联的 Remote PC 目录。定期在特定时间和日期重新启动多会话(服务器操作系统)计算机的计划,以及用于控制如何执行重新启动的设置。

与交付组关联的设置还包括一些功能设置(如 Profile Management)和 Storefront URL 设置,分别定义为“计算机配置”对象并与一个或多个交付组关联。

应用程序

此对象提供要向最终用户提供的无缝(即浮动窗口,与桌面分开)应用程序的详细信息。通常,每个应用程序与单个交付组关联,但是如有需要,应用程序定义可以在多个组之间共享。应用程序既可以在远程计算机上运行并显示在本地客户端桌面上,也可以安装并运行在本地客户端计算机上,而窗口覆盖在远程桌面上。应用程序定义:

  • 应用程序的类型,“HostedOnDesktop”或“InstalledOnClient”。

  • 对于 HostedOnDesktop 应用程序:

  1. 将在 VDA 计算机上运行的应用程序初始可执行文件的路径,以及应用程序启动时要应用的命令行参数(如有)。

  2. (可选)具有应用程序访问权限的特定用户集合,是具有交付组访问权限的用户的子集。

  3. 将应用到应用程序进程的应用程序特定设置,包括 CPU 优先级、应用程序是否应该等待创建代理打印机,等等。

对于 InstalledOnClient 应用程序:
  1. 指示应用程序的图标将从客户端设备获取的标志

  2. 指示要随为应用程序提供的参数一起采取额外安全措施的标志

应用程序资源向最终用户的显示方式,包括使用的图标、文件夹在客户端设备上的位置、名称以及是否在开始菜单和/或桌面上显示快捷方式。应用程序的文件夹类型关联,用于将文件扩展名与应用程序关联。所关联的交付组,以及用于在多个交付组之间进行选择的优先级值(可选)。是否启用应用程序,以及是否对最终用户可见。

桌面

在 XenDesktop 7 中,会话对象和计算机对象取代了桌面对象(用于描述计算机及计算机上的会话),这二者已扩展到可以执行桌面对象的工作。

会话

此对象提供受站点控制的计算机上运行的 Windows 会话的详细信息。会话可以是通过 XenDesktop 或 XenApp 启动的会话,也可以是通过其他方式创建的会话,如用户通过控制台或 RDP 直接登录到计算机上。

会话定义:

  • 会话运行所在的计算机的身份,包括计算机 DNS 名称、IP 地址、NetBios 名称、SID 等。

  • 运行会话的用户的身份,包括 SAM 名称、UPN、SID 等。

  • 代理会话连接的用户的身份,包括 SAM 名称、SID 等。

  • 用于连接到会话的端点客户端计算机的身份,包括设备名称、IP 地址、ID。

  • 用于请求启动的计算机的身份,即执行启动的 Web 服务器。这包括名称和 IP 地址。

  • 用于充当会话连接网关的计算机的身份,包括计算机 DNS 名称、IP 地址。

  • 会话中的重要事件的详细信息,包括开始时间、最近连接到会话的时间、最近代理到会话的时间,等。

  • 有关最近会话创建和会话连接的各种持续时间,包括代理会话的时间、创建会话的时间,等。

  • 会话的当前状态,包括会话的总体状态、ICA 连接是否安全、正在使用的协议。

  • 运行会话的计算机的当前状态,包括整体摘要状态、电源状态,等。

  • 有关建立会话连接的详细信息,如会话是通过代理连接还是自主连接,有效的会话上下文“智能访问”标记。

  • 会话是否“隐藏”。当用户启动应用程序或桌面时,如果会话遇到某些类型的问题,会话将变为隐藏。

  • 在会话中执行的代理应用程序的列表。

会话 SDK 对象还提供来自相关计算机、交付组和目录 SDK 对象的信息。此信息包括身份信息、基本配置和状态信息。

Controller

此对象提供站点中的单个 Delivery Controller 计算机的详细信息。大部分数据是来自运行站点的动态状态数据,而不是配置设置。Controller 显示:

  • 每个 Controller 上处于活动状态的“站点服务”。

  • Controller 组件的版本。

  • Controller 计算机的身份,如完全限定的 DNS 名称、SAM 名称、SID 等。

  • Controller 计算机的操作系统类型和版本。

  • 当前的 Controller 和服务状态,以及最近的活动时间。

  • 向 Controller 注册的计算机的数量。

  • 为了站点服务定位目的与 Controller 关联的虚拟机管理程序连接。

大多数 Controller 值由 Broker Service SDK 展示,但是有些项目通过其他服务展示,如 Machine Creation Service。

站点

站点是 XenDesktop 站点的顶层逻辑表示(从其中运行的配置服务角度)。站点包含许可信息、站点元数据和站点名称等。

XenDesktop 安装只有一个配置站点实例。站点对象具有以下属性:

  • 名称

  • 控制器 — 站点中的控制器列表

  • 数据库 — 站点使用的数据库列表

  • DefaultIconUid

  • LicenseInformation

  • 元数据

作用域

此对象定义指定的对象分组,分组中的对象对以各个角色为基础进行控制的对象具有管理员权限。多种类型的 SDK 对象可以具有直接与其关联的作用域,如目录、交付组、连接、资源等。这些 SDK 对象具有列出与其关联的作用域列表的属性。其他 SDK 对象通过与具有直接关联作用域的对象进行二级关联而获得管理员权限。例如,计算机对象从其所属的目录和交付组继承作用域关联;会话对象从其运行所在的计算机继承作用域关联。有些作用域是预定义的(在实际中当前仅内置了“全部”作用域),但是您可以创建其他作用域以指定适合特定部署的分组定义。

作用域定义:

  • 作用域的身份,包括名称和内部 ID 值 (GUID)。

  • 作用域是否为内置作用域。

角色

定义管理员可以执行的一组权限。角色始终被授给具有关联作用域的管理员;它们并不向自己提供权限,尽管有些角色可能具有常规权限,这些权限适用于不具有关联作用域的对象(无作用域对象)。有些角色是预定义角色,但是您可以创建其他自定义角色以指定适合特定部署的权限集合。角色定义:

  • 角色的身份,包括名称和内部 ID 值 (GUID)。

  • 角色是否为内置角色。

  • 组成角色的权限集。

内置角色包括:

  • 完全权限管理员 — 可以执行所有任务和操作。

  • 只读权限管理员 — 可以查看指定作用域内的所有对象以及全局信息,但无法更改任何内容。

  • 计算机目录管理员 — 可以创建和管理计算机目录以及置备计算机。

  • 交付组管理员 — 可以交付应用程序、桌面和计算机;还可以管理关联的会话。允许创建和管理交付组和应用程序。

  • 技术支持管理员 — 可以查看交付组,并可以管理与这些组关联的会话和计算机。允许查看最终用户资源和有限的状态更改操作,以便为最终用户排除故障,但是不允许执行大多数配置更改。

  • 主机管理员 — 可以管理主机连接及其关联的资源设置。

权限

定义当角色包含权限时所允许执行的单个控制台级别任务或操作。每个权限可以允许多个低级别的 SDK 操作 (cmdlet),特定的低级别 SDK 操作可以通过任意数量的相关权限授权。权限定义:

  • 权限的身份,包括名称和内部 ID 值 (GUID)。

  • 权限的权限组成员身份。权限组将与特定功能区域相关的权限集合在一起。

  • 权限涵盖低级别 SDK 操作集。



二、Monitor Service OData API可以检索那些数据



Monitor Service OData API包括相当多的数据。大多数属于XenApp/XenDesktop会话信息(包括用法和错误)的对象。这里的对象和上述对象有重叠有新增。这些都是历史跟踪保存的数据,并且数据保存的时间长度基于许可和用户的配置。这些设置可以使用PowerShell命令set-monitorconfiguration cmdlet进行更改。

Monitor Service 收集的多种数据包括用户会话使用情况、用户登录性能详细信息、会话负载平衡详细信息,以及连接和计算机故障信息。 根据其类别,数据以不同的方式聚合。了解使用 OData Method API 提供的数据值的聚合是解释数据的关键。 例如:

  • 一段时间内发生的连接会话故障和计算机故障,因此它们显示为一段时间内的最大值。

  • 登录持续时间是时间长度的度量,因此它们显示为一段时间内的平均值。

  • 登录计数和连接故障是一段时间内这类事件的计数,因此它们显示为一段时间内的总数。


Monitor Service提供了两个主要的API来检索数据。在下面的所有示例中,请将localhost替换为您正在查询的XenApp/XenDesktop控制器的名称(不在DDC本机上)。这些API还需要XenDesktop管理员才能成功检索数据,因此系统可能会提示您输入用户名/密码。

Methods:http://localhost/Citrix/Monitor/Odata/v1/Methods/$metadata

Data:http://localhost/Citrix/Monitor/Odata/v1/Data/$metadata

$metadata(元数据)是一些的参数或者对象。下面这个文档非常重要,它不仅描述了如何从该URL获得的内容,还介绍了如何读取OData语法的程序使用,并允许它们以编程方式生成可用于查询API的客户端代码。您可以在OData.org网站上阅读更多内容,其中描述了元数据格式:http://www.odata.org/documentation/odata-v2-documentation/overview/#3_Metadata_for_OData_Services。

Methods API

此API主要由用于Director检索显示的历史图表数据。

Data API

此API更加灵活,并提供对Monitor Service收集的所有数据的访问。

下面这幅图表表示了这些对象与数据库中的表的关系:技术分享


系统信息表

DesktopGroup - 匹配Studio中的交付组

Catalog - 这些是Studio中的计算机目录

Machine - 这些是添加到Studio中交付组的计算机

Hypervisor - 如果计算机是由Hypervisor管理的,那么计算机的基本管理信息就存储在此表中

User - 这些是已启动会话的用户 - 它们是在创建新会话时添加的,因此如果用户从未使用XenApp/XenDesktop,则他们的信息将不在此表中。

会话使用表

Session - 这是高级会话信息,如果用户启动一个全新的会话,记录将在这里,初始登录持续时间和当前会话连接信息也存在。会话注销也在这里被捕获,该表完整的记录了会话的生命周期。

Connection - 这是会话记录的子级,对于会话的每个新连接,在这些记录中跟踪该信息。每个会话可以有多个连接,这取决于用户在会话的生存期内发起了多少断开连接/重新连接。此表还包括客户端版本信息以及登录会话登录的故障时间戳。

SessionActivitySummary - 此表包括已从会话和连接表聚合的数据。此表中还捕获登录数以及连接/断开连接的会话计数。此表主要用于Director趋势数据,但也可用于查看桌面组(XenDesktop交付组)的会话计数。

计算机使用表

LoadIndexSummary - 此表捕获服务器操作系统计算机的加载索引。此信息可以提供对整个系统利用率和负载的数据参考标准。

错误/故障表

ConnectionFailureLog - 记录每一个连接错误信息。

ConnectionFailureCategory - 此表包括连接失败的分类 - 它用于Director错误分类,不包括粒度错误详细信息。它是一个静态表,不会随着错误的发生而改变。

MachineFailureLog - 这包括计算机故障状态跟踪。当计算机进入和退出故障状态并可再次使用时,此表包括开始/结束时间和故障原因。

FailureLogSummary - 这是来自ConnectionFailureLog和MachineFailureLog表的聚合数据。它包括故障的类别/代码,并且它们会随着时间的过去按桌面组(XenDesktop交付组)进行聚合。

以下是您可以在网络浏览器中运行的查询的几个示例:



三、使用Execl 2013调用Monitor Service OData API查询数据



测试:

检索所有用户:http://localhost/Citrix/Monitor/OData/v1/Data/Users

检索所有会话:http://localhost/Citrix/Monitor/OData/v1/Data/Sessions


第一步,安装打开Execl 2013启用powerpivot插件技术分享技术分享

第二步:打开powerpivot插件技术分享

技术分享

第三步:连接DDC,检索所有用户:http://DDC Address/Citrix/Monitor/OData/v1/Data/Users技术分享技术分享技术分享技术分享技术分享


这是所有可以检索的数据对象:技术分享

官网有整个API的参考说明:https://support.citrix.com/help/monitorserviceapi/7.6/html/d787ce1d-02c0-6165-fc99-c46592a5d112.htm技术分享


Monitor Service API 使用开放数据协议 (OData)。此协议是一个用于查询和更新数据的 Web 协议,并基于诸如 HTTP 之类的 Web 技术而构建。 有关 OData 协议的详细信息,请参阅 http://www.odata.org。

Monitor Service API 在使用 Windows Communication Foundation (WCF) Data Services(在处理和合并期间填充)的 SQL Server 数据库的基础上构建。 通过 wsHttpBinding 显示了两个使用 WCF 的端点。 基址为 http:// {dc-host}/Citrix/Monitor/OData/v2。

Monitor Service API 是一款基于 REST 的 API,可以使用 OData 使用者程序进行访问。 OData 使用者程序是占用使用 OData 协议显示的数据的应用程序。 从简单的 Web 浏览器到可利用 OData 协议的所有功能的自定义应用程序,OData 使用者程序的复杂程度各不相同。 通过Monitor Service API将数据拿出来之后,接下来如果要整合到统一的监控平台里面去或者基于 API 提供的数据构建自定义用户界面就好办了吧!


更多详情请访问Citrix edocs


本文出自 “我拿流年乱了浮生” 博客,请务必保留此出处http://tasnrh.blog.51cto.com/4141731/1880881

XenApp/XenDesktop监控数据查询、提取