成本优化
Citrix Monitor 现已推出一项名为“成本优化”的新功能,可帮助您有效分析虚拟机和会话的使用情况。此功能提供有关如何优化成本的富有洞察力的可视化表示。它还有助于您消除不必要的计算机,从而降低成本。
-
为支持成本优化,还引入了以下警报:
- 开机操作失败和关机操作失败
-
您还可以检查具有近期电源操作的计算机,以分析导致用户问题的开机故障和增加成本的关机故障。有关详细信息,请参阅检查具有近期电源操作的计算机部分。
-
在主页上,单击左侧菜单中的成本优化选项卡以访问成本优化页面。
-

-
在成本优化主页上,您可以执行以下操作:
- 入门链接 - 访问此链接以了解有关成本优化功能的更多信息。
- 查看成本优化页面 - 您可以在成本优化页面上提供反馈
- 刷新数据。
- 查看警报 - 您可以查看严重警报和警告警报。
- 导出数据
成本优化页面包括以下功能:
如何计算成本优化成本
每台计算机每小时的成本以管理程序支持的货币显示。本节介绍如何计算 Azure 计算机和其他计算机的成本。
Azure 计算机的成本
计算成本的优先级顺序如下:
-
当 ‘Microsoft.Consumption/pricesheets/read 权限可用时,有效价格将以 Azure 订阅中配置的货币显示。此成本计算方法处于预览阶段。
-
如果权限不可用,则显示 Azure 零售价格。有关详细信息,请参阅 Azure 零售价格概述。
注意:
请确保您可以访问
https://prices.azure.com终结点,以启用有效价格或零售价格详细信息的检索。
-
- 当有效价格或零售价格不可用时,成本将根据管理员在 Web Studio 中输入的成本显示。有关详细信息,请参阅文档的计算机成本部分。
-
- 如果 Web Studio 中未提及成本,则默认成本为 1 美元。
要查找 Azure 的帐户详细信息并添加查找有效价格所需的权限,请执行以下操作:
- 导航到 Citrix DaaS。
- 单击托管选项卡以查找托管连接帐户。
- 查找托管选项卡中提及的应用程序 ID。
-

-
- 转到 Microsoft Entra ID 并查找步骤 3 中记下的应用程序 ID。
-
- 转到订阅 > 访问控制 (IAM) > 选择为托管连接 SPN 配置的自定义角色。
-


- 将 Microsoft.Consumption/pricesheets/read 权限添加到角色。
如何验证 Azure 零售价格
如果 Microsoft.Consumption/pricesheets/read 不可用,则显示 Azure 零售价格。现在,您可以使用零售价格 API 获取所有 Azure 服务的零售价格。以前,检索 Azure 服务价格的唯一方法是使用 Azure 定价计算器或使用 Azure 门户。有关详细信息,请参阅 Azure 零售价格概述。
计算非 Azure 计算机的成本
-
对于其他计算机,成本将根据管理员在 Web Studio 中输入的成本显示。如果 Web Studio 中未提及成本,则默认成本为 1 美元。
-
导出数据
您可以使用数据集成和 ODATA 查询导出成本优化页面上的数据。要导出数据,请在成本优化页面上单击导出数据,将显示以下选项:
- 设置数据集成
- 用于成本优化的 ODATA 查询

设置数据集成
您可以将成本优化数据与 Monitor Service API 集成,通过该 API 可以收集数据以进行故障排除和问题分类。有关详细信息,请参阅集成和数据导出页面。
用于成本优化的 ODATA 查询
您可以使用成本优化页面上提供的 ODATA 示例查询来导出数据。
ODATA 入门
以下链接可帮助您开始使用 ODATA:
- ODATA 概述
- 使用 Citrix Cloud 中的 OData v4 终结点访问 Citrix Monitor Service 数据的不同方法
- 在 Citrix Monitor Service 数据中使用 OData V4 聚合查询
- 如何使用 OData 和 API 客户端将 PowerBI 连接到 DaaS Monitor
- 使用 Postman 获取登录持续时间较长的用户的详细信息
- 如何访问 Monitor Service 数据
- 数据访问协议
ODATA 示例查询
查找未使用的 VDA
要查找未使用的 VDA,您必须提供桌面组 ID、VDA 的开始日期和结束日期。
有关减少未使用的资源开支的更多信息,请参阅工作负载规模调整。
示例查询:
https://api-us.cloud.com/monitorodata/ResourceUtilizationSummary?$apply=filter(DesktopGroupId eq desktop-group-id and granularity eq 1440 and SummaryDate ge startdate and SummaryDate lt enddate)/groupby((MachineId), aggregate(cast(TotalSessionCount, Edm.Int32) with average as AvgTotalSessionCount))/filter(AvgTotalSessionCount eq 0.0)/aggregate($count as UnusedVDACount)
<!--NeedCopy-->
查找每日平均正常运行时间(分钟)
要查找每日平均正常运行时间(分钟),您必须提供以下信息:
- 桌面组 ID
- 开始日期
- 结束日期
- 结束日期和开始日期之间的天数差。
有关减少未使用的资源开支的更多信息,请参阅工作负载大小调整。
示例查询:
https://api-us.cloud.com/monitorodata/ResourceUtilizationSummary?$apply=filter(desktopGroupId eq desktop-group-id and granularity eq 1440 and SummaryDate ge startdate and SummaryDate lt enddate)/groupby((MachineId), aggregate(cast(UptimeInMinutes, Edm.Int32) div day-difference with sum as TotalUptimeInMinutes))/aggregate(TotalUptimeInMinutes with average as DailyAverageUptimeInMinutes)
<!--NeedCopy-->
查找失败的计算机电源操作
有关失败的计算机电源操作的更多信息,请参阅失败的开机操作和失败的关机操作。
示例查询:
https://api-us.cloud.com/monitorodata/Machines?$filter=LifecycleState eq 0 and DesktopGroup/SessionSupport eq 1 and (cast(LastPowerActionReason,'Edm.Int32') eq 6 or cast(LastPowerActionReason,'Edm.Int32') eq 7 or cast(LastPowerActionReason,'Edm.Int32') eq 8) and (cast(LastPowerActionFailureReason,'Edm.Int32') eq 300 or cast(LastPowerActionFailureReason,'Edm.Int32') eq 402 or cast(LastPowerActionFailureReason,'Edm.Int32') eq 401) and MachineRole eq 0&$orderby=Name&$skip=0&$top=50&$expand=DesktopGroup($select=Name)&$select=Sid,Id,Name,IsAssigned,IPAddress,FaultState,LastDeregisteredCode,FailureDate,CurrentPowerState,CurrentSessionCount,IsInMaintenanceMode,LastPowerActionFailureReason,LastPowerActionCompletedDate
<!--NeedCopy-->
查找总节省额
有关成本节省的更多信息,请参阅成本节省页面。
示例查询:
https://api.cloud.com/monitorodata/MachineCostSavingsSummaries?$apply=aggregate(TotalAmountSaved with sum as TotalAmountSavedSum)
<!--NeedCopy-->
查找计算机状态
有关成本节省的更多信息,请参阅成本节省页面。
示例查询:
https://api.cloud.com/monitorodata/MachineCostSavingsSummaries?$filter=SummaryDate eq 2024-08-09T06:00:00Z&$select=TotalMachinesCount,PowerManagedMachinesOff,PowerManagedMachinesInHibernate,PowerManagedMachinesOnWithSessions,PowerManagedMachinesOnWithoutSessions
<!--NeedCopy-->