Windows 虚拟桌面:自动启动和解除分配专用 VM
Windows Virtual Desktop: Automatically start and deallocate dedicated VM
据我了解,Windows Virtual Desktop's 主机池可以配置为 pooled(将用户分配给具有空闲资源的 VM)或 个人(每个用户专用虚拟机)模式。
我有一些用户有特殊需求(可用的应用程序、配置和 VM 资源)和不可预测的使用时间。是否可以为它们分配特定的机器并将它们的生命周期与用户登录相关联?我想要实现的是在用户注销或关闭 VM 时关闭和释放 VM,并在登录时自动启动它(接受一些初始延迟),仅在实际需要时为 VM 付费。
Start/Stop off-hours
期间的虚拟机
它按 user-defined 计划启动或停止机器,通过 Azure Monitor 日志提供见解,并使用操作组发送可选电子邮件。对于大多数情况,可以在 Azure 资源管理器和经典 VM 上启用该功能。
此功能使用 Start-AzVm cmdlet to start VMs. It uses Stop-AzVM 停止 VM。
先决条件
运行Start/Stop 下班时间 VM 功能的书籍与 Azure Run As account 一起使用。 运行 As 帐户是首选的身份验证方法,因为它使用证书身份验证而不是可能会过期或经常更改的密码。
将 运行book 作业日志和作业流结果存储在工作区中以供查询和分析的 Azure Monitor Log Analytics workspace。自动化帐户和 Log Analytics 工作区需要位于同一订阅和受支持的区域中。工作区需要已经存在,您不能在部署此功能期间创建新的工作区。
Recommended: Use a separate Automation account for working
with VMs enabled for the Start/Stop VMs during off-hours feature.
Azure module versions are frequently upgraded, and their parameters
might change. The feature isn't upgraded on the same cadence and it
might not work with newer versions of the cmdlets that it uses. Before
importing the updated modules into your production Automation
account(s), we recommend you import them into a test Automation
account to verify there aren't any compatibility issues.
权限
您必须具有某些权限才能在 off-hours 功能期间为 Start/Stop VM 启用 VM。权限会有所不同,具体取决于该功能是使用 pre-created 自动化帐户和 Log Analytics 工作区还是创建新帐户和工作区。
如果您是订阅的贡献者和 Azure Active Directory (AD) 租户中的全局管理员,则无需配置权限。如果您没有这些权限或需要配置自定义角色,请确保您拥有下述权限。
运行书籍
以下 link 列出了该功能部署到您的自动化帐户的 运行 书籍。不要更改 运行 图书代码。相反,编写您自己的 运行新功能手册。
Don't directly run any runbook with child appended to its name.
所有父 运行 书籍都包含 WhatIf 参数。当设置为 True 时,该参数支持详细说明 运行 书在 运行 没有参数时采取的确切行为,并验证是否以正确的 VM 为目标。 运行书籍仅在 WhatIf 参数设置为 False 时执行其定义的操作。
主要默认运行书籍:
- ScheduledStartStop_Parent
- SequencedStartStop_Parent
变量(被运行书籍使用)
以下table 列出了在您的自动化帐户中创建的变量。只修改前缀为 External 的变量。修改以 Internal 为前缀的变量会导致不良影响。
用于 运行 书籍的主要变量:
- External_Start_ResourceGroupNames: Comma-separated 以启动操作为目标的一个或多个资源组的列表。
- External_Stop_ResourceGroupNames:Comma-separated 一个或多个资源组的列表,这些资源组是停止操作的目标。
- External_ExcludeVMNames:Comma-separated 要排除的 VM 名称列表,限制为 140 个 VM。如果您向列表中添加超过 140 个 VM,指定排除的 VM 可能会无意中启动或停止。
时刻表
不要启用所有计划,因为这样做可能会创建重叠的计划操作。最好确定要进行哪些优化并相应地进行修改。
- Scheduled_StopVM: 运行s ScheduledStopStart_Parent 运行参数为每天指定时间停止的book .自动停止所有符合可变资产定义规则的虚拟机。启用相关计划 Scheduled-StartVM.
- Scheduled_StartVM: 运行s ScheduledStopStart_Parent 运行参数值为每天在指定时间开始的书时间。自动启动所有符合可变资产定义规则的虚拟机。启用相关计划 Scheduled-StopVM.
- Sequenced-StopVM: 运行s Sequenced_StopStop_Parent 运行参数值为每周五在指定时间停止的账簿时间。按顺序(升序)停止所有具有由适当变量定义的 SequenceStop 标记的 VM。有关标签值和资产变量的更多信息,请参阅 运行books。启用相关计划,Sequenced-StartVM.
- Sequenced-StartVM: 运行s SequencedStopStart_Parent 运行参数值为每周一在指定时间开始的书时间。按顺序(降序)启动所有具有由适当变量定义的 SequenceStart 标记的 VM。有关标签值和可变资产的更多信息,请参阅 运行books。启用相关计划,Sequenced-StopVM.
如何在 Off-hours.
期间 enable and configure Start/Stop 虚拟机
- 搜索并select 自动化帐户。
- 在“自动化帐户”页面上,select 列表中的您的自动化帐户。
- 从自动化帐户,select Start/Stop 相关资源下的 VM。从这里,您可以单击了解更多信息并启用该解决方案。如果您已经部署了该功能,您单击管理解决方案并在列表中找到它。
- 在 Start/Stop VMs during off-hours 页面上 selected 部署,查看摘要信息,然后单击创建。
创建资源后,将出现“添加解决方案”页面。系统会提示您先配置该功能,然后才能将其导入您的自动化帐户。
在“添加解决方案”页面上,select 工作区。 Select 列表中的现有 Log Analytics 工作区。如果在与工作区相同的受支持区域中没有自动化帐户,您可以在下一步中创建一个新的自动化帐户。
在“添加解决方案”页面上,如果在受支持的区域中没有可用的自动化帐户作为工作区,select 自动化帐户。您可以通过 selecting 创建一个自动化帐户来创建一个新的自动化帐户以与之关联,然后在添加自动化帐户页面上的名称字段中提供自动化帐户的名称。
所有其他选项都会根据 Log Analytics 工作区 selected 自动填充。您不能修改这些选项。 Azure 运行 As 帐户是该功能包含的 运行 书籍的默认身份验证方法。
单击“确定”后,将验证配置选项并创建自动化帐户。您可以在菜单的通知下跟踪其进度。
- 在“添加解决方案”页面上,select 配置参数。参数页面出现。
- 为目标资源组名称字段指定一个值。该字段定义包含要管理的功能的 VM 的组名称。您可以输入多个名称并使用逗号分隔名称(值不是 case-sensitive)。如果要将订阅中所有资源组中的 VM 作为目标,则支持使用通配符。这些值存储在 External_Start_ResourceGroupNames 和 External_Stop_ResourceGroupNames 变量中。
The default value for Target ResourceGroup Names is a *. This setting
targets all VMs in a subscription. If you don't want the feature to
target all the VMs in your subscription, you must provide a list of
resource group names before selecting a schedule.
为 VM 排除列表(字符串)字段指定一个值。该值是目标资源组中一个或多个虚拟机的名称。您可以输入多个名称并使用逗号分隔名称(值不是 case-sensitive)。支持使用通配符。此值存储在 External_ExcludeVMNames 变量中。
使用“计划”字段 select 该功能的 VM 管理计划。 Select 日程安排的开始日期和时间,以创建从所选时间开始的循环每日日程安排。 Select无法访问其他地区。要在配置功能后将时间表配置为您的特定时区,请参阅修改启动和关机时间表。
- 要接收来自操作组的电子邮件通知,请在电子邮件通知字段中接受默认值是,并提供有效的电子邮件地址。如果您 select 否,但稍后决定要接收电子邮件通知,您可以更新使用以逗号分隔的有效电子邮件地址创建的操作组。在订阅中创建了以下警报规则:
- AutoStop_VM_Child
- Scheduled_StartStop_Parent
- Sequenced_StartStop_Parent
配置完该功能所需的初始设置后,单击“确定”关闭“参数”页面。
单击“创建”。验证所有设置后,该功能将部署到您的订阅。此过程可能需要几秒钟才能完成,您可以在菜单的“通知”下跟踪其进度。
Scenario 1:Start/Stop 虚拟机按计划
此方案是您在 off-hours 期间首次部署 Start/Stop VM 时的默认配置。例如,您可以将该功能配置为在晚上下班时停止订阅中的所有 VM,并在早上回到办公室时启动它们。当您在部署期间配置计划 Scheduled-StartVM 和 Scheduled-StopVM 时,它们会启动和停止目标 VM。
支持配置仅停止 VM 的功能。请参阅修改启动和关闭计划以了解如何配置自定义计划。
The time zone used by the feature is your current time zone when you
configure the schedule time parameter. However, Azure Automation
stores it in UTC format in Azure Automation. You don't have to do any
time zone conversion, as this is handled during machine deployment.
要控制范围内的 VM,请配置变量:External_Start_ResourceGroupNames、External_Stop_ResourceGroupNames 和 External_ExcludeVMNames。
您可以启用针对订阅和资源组的操作,或针对特定的 VM 列表,但不能同时启用两者。
通过 VM 列表定位启动和停止操作
运行 ScheduledStartStop_Parent 运行本书已设置为开始。
在 VMList 参数字段中添加 comma-separated VM 列表(无空格)。示例列表是 vm1、vm2、vm3。
将 WHATIF 参数字段设置为 True 以预览您的 chages.
使用 comma-separated VM(VM1、VM2、VM3)列表配置 External_ExcludeVMNames 变量,comma-separated 值之间没有空格。
此方案不支持 External_Start_ResourceGroupNames 和 External_Stop_ResourceGroupnames 变量。对于这种情况,您需要创建自己的自动化计划。有关详细信息,请参阅在 Azure 自动化中安排 运行一本书。
Scenario 2: Start/Stop 虚拟机按顺序使用标签
针对订阅和资源组启动和停止操作
将具有正整数值的 sequencestart 和 sequencestop 标记添加到在 External_Start_ResourceGroupNames 和 External_Stop_ResourceGroupNames 变量中定位的 VM。启动和停止操作按升序执行。要了解如何标记 VM,请参阅在 Azure 中标记 Windows 虚拟机和在 Azure 中标记 Linux 虚拟机。
将时间表Sequenced-StartVM和Sequenced-StopVM修改为符合您要求的日期和时间并启用时间表。
运行 SequencedStartStop_Parent 运行本书的 ACTION 设置为开始,WHATIF 设置为 True 以预览您的更改。
在针对生产 VM 实施之前预览操作并进行任何必要的更改。准备就绪后,将参数设置为 False 手动执行 运行book,或者让自动化计划 Sequenced-StartVM 和 Sequenced-StopVM 运行 按照您规定的计划自动执行。
Scenario 3:根据CPU利用率自动启动或停止
Start/Stop off-hours 期间的 VM 可以通过评估 [=452] 期间未使用的机器来帮助管理 运行 在您的订阅中使用 Azure 资源管理器和经典 VM 的成本=] 时间段,例如下班后,如果处理器利用率低于指定百分比,则自动关闭它们。
默认情况下,该功能是 pre-configured 以评估百分比 CPU 指标以查看平均利用率是否为 5% 或更低。此场景由以下变量控制,如果默认值不符合您的要求,可以修改:
- External_AutoStop_MetricName
- External_AutoStop_Threshold
- External_AutoStop_TimeAggregationOperator
- External_AutoStop_TimeWindow
- External_AutoStop_Frequency
- External_AutoStop_Severity
您可以针对订阅和资源组启用和定位操作,或定位特定的 VM 列表。
当您 运行 AutoStop_CreateAlert_Parent 运行 书籍时,它会验证目标订阅、资源组和 VM 是否存在。如果 VM 存在,运行book 会为每个由父 运行book 验证的 VM 调用 AutoStop_CreateAlert_Child 运行book。本子运行书:
- 为每个经过验证的 VM 创建指标警报规则。
- 如果 CPU 在指定的时间间隔内低于配置的阈值,则触发特定 VM 的 AutoStop_VM_Child 运行 预订。
- 尝试停止 VM。
针对订阅中的所有虚拟机执行自动停止操作
确保 External_Stop_ResourceGroupNames 变量为空或设置为 *(通配符)。
[可选] 如果您想从自动停止操作中排除某些虚拟机,您可以将 comma-separated 虚拟机名称列表添加到 External_ExcludeVMNames 变量。
启用 Schedule_AutoStop_CreateAlert_Parent 计划以 运行 为订阅中的所有 VM 创建所需的停止 VM 指标警报规则。 运行使用这种类型的计划,您可以在向订阅添加新 VM 时创建新的指标警报规则。
针对一个或多个资源组中的所有 VM 执行自动停止操作
将 comma-separated 资源组名称列表添加到 External_Stop_ResourceGroupNames 变量。
如果要从自动停止中排除某些 VM,可以将 comma-separated VM 名称列表添加到 External_ExcludeVMNames 变量。
启用 Schedule_AutoStop_CreateAlert_Parent 计划以 运行 为资源组中的所有 VM 创建所需的停止 VM 指标警报规则。 运行按计划执行此操作允许您在将新 VM 添加到资源组时创建新的指标警报规则。
将自动停止操作定位到 VM 列表
创建新计划并将其link添加到AutoStop_CreateAlert_Parent运行手册中,将comma-separated VM 名称列表添加到VMList 参数.
可选地,如果您想从自动停止操作中排除某些 VM,您可以将 comma-separated VM 名称列表(不带空格)添加到 External_ExcludeVMNames 变量。
配置电子邮件通知
- 在 Azure 门户中,单击“监视”下的“警报”,然后单击“管理操作”。在“管理操作”页面上,确保您位于“操作组”选项卡上。 Select 名为 StartStop_VM_Notification 的操作组。
[=27=
- 在 StartStop_VM_Notification 页面上,“基本信息”部分将为您填写并且无法编辑,“显示名称”字段除外。编辑名称,或接受建议的名称。在“通知”部分中,单击铅笔图标以编辑操作详细信息。这将打开 Email/SMS message/Push/Voice 窗格。更新电子邮件地址并单击确定以保存您的更改。
添加虚拟机
当功能 运行s:
时,有两种方法可以确保包含 VM
该功能的每个父 运行 书籍都有一个 VMList 参数。在为您的情况安排适当的父 运行 书籍时,您可以将 comma-separated VM 名称列表(不带空格)传递给此参数,这些 VM 将在功能 运行s 时包括在内.
对于select多个VM,设置External_Start_ResourceGroupNames和External_Stop_ResourceGroupNames为包含您要启动或停止的VM的资源组名称。您还可以将变量的值设置为 * 以针对订阅中的所有资源组使用 运行 功能。
排除虚拟机
要在 off-hours 期间从 Stop/start 个 VM 中排除一个 VM,您可以将其名称添加到 External_ExcludeVMNames 变量中。此变量是要从该功能中排除的特定 VM(无空格)的 comma-separated 列表。此列表限制为 140 个 VM。如果您向此列表添加超过 140 个 VM,则设置为排除的 VM 可能会无意中启动或停止。
修改启动和关机计划
管理此功能中的启动和关闭计划遵循与在 Azure 自动化中安排 运行一书中概述的相同步骤。启动和停止 VM 需要单独的计划。
支持配置仅在特定时间停止 VM 的功能。在这种情况下,您只需创建一个停止计划,而没有相应的开始计划。
确保您已在 External_Stop_ResourceGroupNames 变量中添加要关闭的 VM 的资源组。
为您想要关闭 VM 的时间创建您自己的时间表。
导航到 ScheduledStartStop_Parent 运行 图书并单击计划。这允许您 select 您在上一步中创建的计划。
Select 参数和 运行 设置并将 ACTION 字段设置为停止。
Select确定保存您的更改。
我认为 Start/Stop 遵循特定时间表的 Automation Runbook 不符合“不可预测的使用时间”的要求。使用 CPU 用法在注销时会起作用(尽管即使实施得当,也可能会有一小段可接受的延迟)。对于登录,我认为你有一个第 22 条军规。据我了解,用户通常绑定到 WVD 池,如果该池不可用,则用户无法登录。因此,在登录时打开机器是行不通的,因为该用户甚至能够登录都需要先打开机器。
假设您的用户不精通技术并且让他们访问 Start/Stop Runbook 可能不切实际,我能想到的唯一其他选择是使用 webhook 由自定义回调触发自动化 Runbook。参见 Azure Automation Webhooks。通过非常简单的 Web 界面和仅提供的两个选项(启动 WVD、停止 WVD),用户可以自行触发操作。
如果您想探索 Azure 逻辑应用程序等其他选项,您可以获得更多的事件侦听器。一些示例:用户可以将带有特定关键字的电子邮件发送到逻辑应用正在主动检查的收件箱,然后将触发所需的操作。
我不知道您是否使用 Log Analytics 来收集 Azure Activity 日志,但如果是,则混合使用上述选项可以达到目的。
使用 Logic App 侦听事件或带有 webhook 的 Runbook,让用户可以在需要时灵活地打开机器。
使用 Logic App 和 Log Analytics,侦听机器的注销事件或监视一段时间内的 CPU 利用率并根据结果采取行动。参见 Azure Automation Solution for VM Management
我必须自己实现类似的东西,这些是我想到的选项。我希望我能提供更具体的例子和实际用例。以后我到那儿的时候会更新这个。
编辑: 进行了一些挖掘并偶然发现了 this repo that provides more info, with screenshots and also the scripts when compared with the official Azure documentation that seem very vague。
此外,由于我之前提到过 Log Analytics,这里有一个 Log Analytics 查询,您可以使用它来查找过去 24 小时内的 start/end 个连接。
WVDConnections
| where TimeGenerated > ago(24h)
| where State == "Connected"
| project CorrelationId , UserName , StartTime=TimeGenerated, SessionHostName
| join (WVDConnections
| where State == "Completed"
| project EndTime=TimeGenerated, CorrelationId)
on CorrelationId
| parse SessionHostName with Host "domain" //If applicable use parser to remove part of a value to clean it up.
| project StartTime, EndTime, UserName, Host
| sort by StartTime desc
据我了解,Windows Virtual Desktop's 主机池可以配置为 pooled(将用户分配给具有空闲资源的 VM)或 个人(每个用户专用虚拟机)模式。
我有一些用户有特殊需求(可用的应用程序、配置和 VM 资源)和不可预测的使用时间。是否可以为它们分配特定的机器并将它们的生命周期与用户登录相关联?我想要实现的是在用户注销或关闭 VM 时关闭和释放 VM,并在登录时自动启动它(接受一些初始延迟),仅在实际需要时为 VM 付费。
Start/Stop off-hours
期间的虚拟机它按 user-defined 计划启动或停止机器,通过 Azure Monitor 日志提供见解,并使用操作组发送可选电子邮件。对于大多数情况,可以在 Azure 资源管理器和经典 VM 上启用该功能。
此功能使用 Start-AzVm cmdlet to start VMs. It uses Stop-AzVM 停止 VM。
先决条件
运行Start/Stop 下班时间 VM 功能的书籍与 Azure Run As account 一起使用。 运行 As 帐户是首选的身份验证方法,因为它使用证书身份验证而不是可能会过期或经常更改的密码。
将 运行book 作业日志和作业流结果存储在工作区中以供查询和分析的 Azure Monitor Log Analytics workspace。自动化帐户和 Log Analytics 工作区需要位于同一订阅和受支持的区域中。工作区需要已经存在,您不能在部署此功能期间创建新的工作区。
Recommended: Use a separate Automation account for working with VMs enabled for the Start/Stop VMs during off-hours feature. Azure module versions are frequently upgraded, and their parameters might change. The feature isn't upgraded on the same cadence and it might not work with newer versions of the cmdlets that it uses. Before importing the updated modules into your production Automation account(s), we recommend you import them into a test Automation account to verify there aren't any compatibility issues.
权限
您必须具有某些权限才能在 off-hours 功能期间为 Start/Stop VM 启用 VM。权限会有所不同,具体取决于该功能是使用 pre-created 自动化帐户和 Log Analytics 工作区还是创建新帐户和工作区。
如果您是订阅的贡献者和 Azure Active Directory (AD) 租户中的全局管理员,则无需配置权限。如果您没有这些权限或需要配置自定义角色,请确保您拥有下述权限。
运行书籍
以下 link 列出了该功能部署到您的自动化帐户的 运行 书籍。不要更改 运行 图书代码。相反,编写您自己的 运行新功能手册。
Don't directly run any runbook with child appended to its name.
所有父 运行 书籍都包含 WhatIf 参数。当设置为 True 时,该参数支持详细说明 运行 书在 运行 没有参数时采取的确切行为,并验证是否以正确的 VM 为目标。 运行书籍仅在 WhatIf 参数设置为 False 时执行其定义的操作。
主要默认运行书籍:
- ScheduledStartStop_Parent
- SequencedStartStop_Parent
变量(被运行书籍使用)
以下table 列出了在您的自动化帐户中创建的变量。只修改前缀为 External 的变量。修改以 Internal 为前缀的变量会导致不良影响。
用于 运行 书籍的主要变量:
- External_Start_ResourceGroupNames: Comma-separated 以启动操作为目标的一个或多个资源组的列表。
- External_Stop_ResourceGroupNames:Comma-separated 一个或多个资源组的列表,这些资源组是停止操作的目标。
- External_ExcludeVMNames:Comma-separated 要排除的 VM 名称列表,限制为 140 个 VM。如果您向列表中添加超过 140 个 VM,指定排除的 VM 可能会无意中启动或停止。
时刻表
不要启用所有计划,因为这样做可能会创建重叠的计划操作。最好确定要进行哪些优化并相应地进行修改。
- Scheduled_StopVM: 运行s ScheduledStopStart_Parent 运行参数为每天指定时间停止的book .自动停止所有符合可变资产定义规则的虚拟机。启用相关计划 Scheduled-StartVM.
- Scheduled_StartVM: 运行s ScheduledStopStart_Parent 运行参数值为每天在指定时间开始的书时间。自动启动所有符合可变资产定义规则的虚拟机。启用相关计划 Scheduled-StopVM.
- Sequenced-StopVM: 运行s Sequenced_StopStop_Parent 运行参数值为每周五在指定时间停止的账簿时间。按顺序(升序)停止所有具有由适当变量定义的 SequenceStop 标记的 VM。有关标签值和资产变量的更多信息,请参阅 运行books。启用相关计划,Sequenced-StartVM.
- Sequenced-StartVM: 运行s SequencedStopStart_Parent 运行参数值为每周一在指定时间开始的书时间。按顺序(降序)启动所有具有由适当变量定义的 SequenceStart 标记的 VM。有关标签值和可变资产的更多信息,请参阅 运行books。启用相关计划,Sequenced-StopVM.
如何在 Off-hours.
期间 enable and configure Start/Stop 虚拟机- 搜索并select 自动化帐户。
- 在“自动化帐户”页面上,select 列表中的您的自动化帐户。
- 从自动化帐户,select Start/Stop 相关资源下的 VM。从这里,您可以单击了解更多信息并启用该解决方案。如果您已经部署了该功能,您单击管理解决方案并在列表中找到它。
- 在 Start/Stop VMs during off-hours 页面上 selected 部署,查看摘要信息,然后单击创建。
创建资源后,将出现“添加解决方案”页面。系统会提示您先配置该功能,然后才能将其导入您的自动化帐户。
在“添加解决方案”页面上,select 工作区。 Select 列表中的现有 Log Analytics 工作区。如果在与工作区相同的受支持区域中没有自动化帐户,您可以在下一步中创建一个新的自动化帐户。
在“添加解决方案”页面上,如果在受支持的区域中没有可用的自动化帐户作为工作区,select 自动化帐户。您可以通过 selecting 创建一个自动化帐户来创建一个新的自动化帐户以与之关联,然后在添加自动化帐户页面上的名称字段中提供自动化帐户的名称。
所有其他选项都会根据 Log Analytics 工作区 selected 自动填充。您不能修改这些选项。 Azure 运行 As 帐户是该功能包含的 运行 书籍的默认身份验证方法。
单击“确定”后,将验证配置选项并创建自动化帐户。您可以在菜单的通知下跟踪其进度。
- 在“添加解决方案”页面上,select 配置参数。参数页面出现。
- 为目标资源组名称字段指定一个值。该字段定义包含要管理的功能的 VM 的组名称。您可以输入多个名称并使用逗号分隔名称(值不是 case-sensitive)。如果要将订阅中所有资源组中的 VM 作为目标,则支持使用通配符。这些值存储在 External_Start_ResourceGroupNames 和 External_Stop_ResourceGroupNames 变量中。
The default value for Target ResourceGroup Names is a *. This setting targets all VMs in a subscription. If you don't want the feature to target all the VMs in your subscription, you must provide a list of resource group names before selecting a schedule.
为 VM 排除列表(字符串)字段指定一个值。该值是目标资源组中一个或多个虚拟机的名称。您可以输入多个名称并使用逗号分隔名称(值不是 case-sensitive)。支持使用通配符。此值存储在 External_ExcludeVMNames 变量中。
使用“计划”字段 select 该功能的 VM 管理计划。 Select 日程安排的开始日期和时间,以创建从所选时间开始的循环每日日程安排。 Select无法访问其他地区。要在配置功能后将时间表配置为您的特定时区,请参阅修改启动和关机时间表。
- 要接收来自操作组的电子邮件通知,请在电子邮件通知字段中接受默认值是,并提供有效的电子邮件地址。如果您 select 否,但稍后决定要接收电子邮件通知,您可以更新使用以逗号分隔的有效电子邮件地址创建的操作组。在订阅中创建了以下警报规则:
- AutoStop_VM_Child
- Scheduled_StartStop_Parent
- Sequenced_StartStop_Parent
配置完该功能所需的初始设置后,单击“确定”关闭“参数”页面。
单击“创建”。验证所有设置后,该功能将部署到您的订阅。此过程可能需要几秒钟才能完成,您可以在菜单的“通知”下跟踪其进度。
Scenario 1:Start/Stop 虚拟机按计划
此方案是您在 off-hours 期间首次部署 Start/Stop VM 时的默认配置。例如,您可以将该功能配置为在晚上下班时停止订阅中的所有 VM,并在早上回到办公室时启动它们。当您在部署期间配置计划 Scheduled-StartVM 和 Scheduled-StopVM 时,它们会启动和停止目标 VM。
支持配置仅停止 VM 的功能。请参阅修改启动和关闭计划以了解如何配置自定义计划。
The time zone used by the feature is your current time zone when you configure the schedule time parameter. However, Azure Automation stores it in UTC format in Azure Automation. You don't have to do any time zone conversion, as this is handled during machine deployment.
要控制范围内的 VM,请配置变量:External_Start_ResourceGroupNames、External_Stop_ResourceGroupNames 和 External_ExcludeVMNames。
您可以启用针对订阅和资源组的操作,或针对特定的 VM 列表,但不能同时启用两者。
通过 VM 列表定位启动和停止操作
运行 ScheduledStartStop_Parent 运行本书已设置为开始。
在 VMList 参数字段中添加 comma-separated VM 列表(无空格)。示例列表是 vm1、vm2、vm3。
将 WHATIF 参数字段设置为 True 以预览您的 chages.
使用 comma-separated VM(VM1、VM2、VM3)列表配置 External_ExcludeVMNames 变量,comma-separated 值之间没有空格。
此方案不支持 External_Start_ResourceGroupNames 和 External_Stop_ResourceGroupnames 变量。对于这种情况,您需要创建自己的自动化计划。有关详细信息,请参阅在 Azure 自动化中安排 运行一本书。
Scenario 2: Start/Stop 虚拟机按顺序使用标签
针对订阅和资源组启动和停止操作
将具有正整数值的 sequencestart 和 sequencestop 标记添加到在 External_Start_ResourceGroupNames 和 External_Stop_ResourceGroupNames 变量中定位的 VM。启动和停止操作按升序执行。要了解如何标记 VM,请参阅在 Azure 中标记 Windows 虚拟机和在 Azure 中标记 Linux 虚拟机。
将时间表Sequenced-StartVM和Sequenced-StopVM修改为符合您要求的日期和时间并启用时间表。
运行 SequencedStartStop_Parent 运行本书的 ACTION 设置为开始,WHATIF 设置为 True 以预览您的更改。
在针对生产 VM 实施之前预览操作并进行任何必要的更改。准备就绪后,将参数设置为 False 手动执行 运行book,或者让自动化计划 Sequenced-StartVM 和 Sequenced-StopVM 运行 按照您规定的计划自动执行。
Scenario 3:根据CPU利用率自动启动或停止
Start/Stop off-hours 期间的 VM 可以通过评估 [=452] 期间未使用的机器来帮助管理 运行 在您的订阅中使用 Azure 资源管理器和经典 VM 的成本=] 时间段,例如下班后,如果处理器利用率低于指定百分比,则自动关闭它们。
默认情况下,该功能是 pre-configured 以评估百分比 CPU 指标以查看平均利用率是否为 5% 或更低。此场景由以下变量控制,如果默认值不符合您的要求,可以修改:
- External_AutoStop_MetricName
- External_AutoStop_Threshold
- External_AutoStop_TimeAggregationOperator
- External_AutoStop_TimeWindow
- External_AutoStop_Frequency
- External_AutoStop_Severity
您可以针对订阅和资源组启用和定位操作,或定位特定的 VM 列表。
当您 运行 AutoStop_CreateAlert_Parent 运行 书籍时,它会验证目标订阅、资源组和 VM 是否存在。如果 VM 存在,运行book 会为每个由父 运行book 验证的 VM 调用 AutoStop_CreateAlert_Child 运行book。本子运行书:
- 为每个经过验证的 VM 创建指标警报规则。
- 如果 CPU 在指定的时间间隔内低于配置的阈值,则触发特定 VM 的 AutoStop_VM_Child 运行 预订。
- 尝试停止 VM。
针对订阅中的所有虚拟机执行自动停止操作
确保 External_Stop_ResourceGroupNames 变量为空或设置为 *(通配符)。
[可选] 如果您想从自动停止操作中排除某些虚拟机,您可以将 comma-separated 虚拟机名称列表添加到 External_ExcludeVMNames 变量。
启用 Schedule_AutoStop_CreateAlert_Parent 计划以 运行 为订阅中的所有 VM 创建所需的停止 VM 指标警报规则。 运行使用这种类型的计划,您可以在向订阅添加新 VM 时创建新的指标警报规则。
针对一个或多个资源组中的所有 VM 执行自动停止操作
将 comma-separated 资源组名称列表添加到 External_Stop_ResourceGroupNames 变量。
如果要从自动停止中排除某些 VM,可以将 comma-separated VM 名称列表添加到 External_ExcludeVMNames 变量。
启用 Schedule_AutoStop_CreateAlert_Parent 计划以 运行 为资源组中的所有 VM 创建所需的停止 VM 指标警报规则。 运行按计划执行此操作允许您在将新 VM 添加到资源组时创建新的指标警报规则。
将自动停止操作定位到 VM 列表
创建新计划并将其link添加到AutoStop_CreateAlert_Parent运行手册中,将comma-separated VM 名称列表添加到VMList 参数.
可选地,如果您想从自动停止操作中排除某些 VM,您可以将 comma-separated VM 名称列表(不带空格)添加到 External_ExcludeVMNames 变量。
配置电子邮件通知
- 在 Azure 门户中,单击“监视”下的“警报”,然后单击“管理操作”。在“管理操作”页面上,确保您位于“操作组”选项卡上。 Select 名为 StartStop_VM_Notification 的操作组。
[=27=
- 在 StartStop_VM_Notification 页面上,“基本信息”部分将为您填写并且无法编辑,“显示名称”字段除外。编辑名称,或接受建议的名称。在“通知”部分中,单击铅笔图标以编辑操作详细信息。这将打开 Email/SMS message/Push/Voice 窗格。更新电子邮件地址并单击确定以保存您的更改。
添加虚拟机
当功能 运行s:
时,有两种方法可以确保包含 VM该功能的每个父 运行 书籍都有一个 VMList 参数。在为您的情况安排适当的父 运行 书籍时,您可以将 comma-separated VM 名称列表(不带空格)传递给此参数,这些 VM 将在功能 运行s 时包括在内.
对于select多个VM,设置External_Start_ResourceGroupNames和External_Stop_ResourceGroupNames为包含您要启动或停止的VM的资源组名称。您还可以将变量的值设置为 * 以针对订阅中的所有资源组使用 运行 功能。
排除虚拟机
要在 off-hours 期间从 Stop/start 个 VM 中排除一个 VM,您可以将其名称添加到 External_ExcludeVMNames 变量中。此变量是要从该功能中排除的特定 VM(无空格)的 comma-separated 列表。此列表限制为 140 个 VM。如果您向此列表添加超过 140 个 VM,则设置为排除的 VM 可能会无意中启动或停止。
修改启动和关机计划
管理此功能中的启动和关闭计划遵循与在 Azure 自动化中安排 运行一书中概述的相同步骤。启动和停止 VM 需要单独的计划。
支持配置仅在特定时间停止 VM 的功能。在这种情况下,您只需创建一个停止计划,而没有相应的开始计划。
确保您已在 External_Stop_ResourceGroupNames 变量中添加要关闭的 VM 的资源组。
为您想要关闭 VM 的时间创建您自己的时间表。
导航到 ScheduledStartStop_Parent 运行 图书并单击计划。这允许您 select 您在上一步中创建的计划。
Select 参数和 运行 设置并将 ACTION 字段设置为停止。
Select确定保存您的更改。
我认为 Start/Stop 遵循特定时间表的 Automation Runbook 不符合“不可预测的使用时间”的要求。使用 CPU 用法在注销时会起作用(尽管即使实施得当,也可能会有一小段可接受的延迟)。对于登录,我认为你有一个第 22 条军规。据我了解,用户通常绑定到 WVD 池,如果该池不可用,则用户无法登录。因此,在登录时打开机器是行不通的,因为该用户甚至能够登录都需要先打开机器。
假设您的用户不精通技术并且让他们访问 Start/Stop Runbook 可能不切实际,我能想到的唯一其他选择是使用 webhook 由自定义回调触发自动化 Runbook。参见 Azure Automation Webhooks。通过非常简单的 Web 界面和仅提供的两个选项(启动 WVD、停止 WVD),用户可以自行触发操作。
如果您想探索 Azure 逻辑应用程序等其他选项,您可以获得更多的事件侦听器。一些示例:用户可以将带有特定关键字的电子邮件发送到逻辑应用正在主动检查的收件箱,然后将触发所需的操作。
我不知道您是否使用 Log Analytics 来收集 Azure Activity 日志,但如果是,则混合使用上述选项可以达到目的。
使用 Logic App 侦听事件或带有 webhook 的 Runbook,让用户可以在需要时灵活地打开机器。
使用 Logic App 和 Log Analytics,侦听机器的注销事件或监视一段时间内的 CPU 利用率并根据结果采取行动。参见 Azure Automation Solution for VM Management
我必须自己实现类似的东西,这些是我想到的选项。我希望我能提供更具体的例子和实际用例。以后我到那儿的时候会更新这个。
编辑: 进行了一些挖掘并偶然发现了 this repo that provides more info, with screenshots and also the scripts when compared with the official Azure documentation that seem very vague。
此外,由于我之前提到过 Log Analytics,这里有一个 Log Analytics 查询,您可以使用它来查找过去 24 小时内的 start/end 个连接。
WVDConnections
| where TimeGenerated > ago(24h)
| where State == "Connected"
| project CorrelationId , UserName , StartTime=TimeGenerated, SessionHostName
| join (WVDConnections
| where State == "Completed"
| project EndTime=TimeGenerated, CorrelationId)
on CorrelationId
| parse SessionHostName with Host "domain" //If applicable use parser to remove part of a value to clean it up.
| project StartTime, EndTime, UserName, Host
| sort by StartTime desc