Windows Server 2019中老王最感兴趣的三项新技术 Cluster Set,存储迁移服务,再有就是System Insights ,通过System Insights可以帮助管理员在不需要购买其它组件的情况下,实现对Windows Server 2019 CPU/硬盘/卷/网络的资源利用预测,并且能够做到当预测资源利用率将在某个时间节点达到特定状态时,自动触发补救措施。


整套System Insights方案需要用到Windows Server 2019+Windows Admin Center来共同完成,在Server上面安装System Insights功能,利用Windows Admin Center在Web界面对已安装功能的服务器进行分析预测可视化


安装先决条件


Windows Server 2019 17692版本及以上

Windows Admin Center 1804版本及以上

System Insights目前仅对已安装功能的Server 2019操作系统生效

目前仅针对单机分析预测,未来版本将实现针对群集整体进行分析预测

System Insights在本地收集和存储长达一年的数据,如果希望在将操作系统升级到最新版本时保留数据,请确保使用就地升级

System Insights可在任何Windows Server 2019操作系统上运行,它可以在物理机和虚拟机,任何虚拟机管理程序以及任何云中运行


启动System Insights功能


Powershell启用

Install-WindowsFeature -Name System-Insights -IncludeManagementTools -Restart


服务器管理器

2018-08-30_100824.png

安装System Insights功能也会安装powershell 管理模组,管理员除了可以使用WAC界面管理,也可以直接在Server 2019上面使用powershell执行相关管理操作

2018-08-30_101332.png

为WAC安装System Insights扩展,点击设置 -  管理扩展

2018-08-30_102612.png

在可用扩展里面选择 Windows Server System Insights ,点击安装,此界面需WAC服务器端能够联网才能够看见可用扩展列表,扩展列表来自第三方或微软,扩展内容包括界面展示,收集规则,仪表板等,目前只能通过在服务器端在线方式安装扩展,未来或可通过离线方式安装扩展。

2018-08-30_102640.png

点击安装之后提示安装扩展需提升网关模式,点击确认自动提升,开始安装扩展。

2018-08-30_102655.png

安装成功可在已安装的扩展看见Windows Server System Insights已安装

2018-08-30_102839.png

打开WAC服务器管理界面,点击机器名链接,中文版在左侧工具栏可以看到系统见解工具,英文版为System Insights

2018-08-30_104212.png


Powershell开启或关闭某项资源的分析预测

Enable-InsightsCapability -Name "CPU capacity forecasting"

Disable-InsightsCapability -Name "CPU capacity forecasting"


目前阶段系统见解工具仅开启了四种资源的分析预测


CPU容量预测

网络容量预测

总存储消耗预测

卷消耗预测


每种功能都会分析每日数据以预测未来的使用,但是CPU,网络或是存储使用情况可能会在一天内频繁更改,从而动态调整到计算机上的工作负载。由于使用量在一天中不是恒定的,因此在单个数据点中正确表示每日使用情况非常重要,在评估下面的过滤逻辑时,重要的是要注意每个功能都试图通知管理员未来的使用将有意义地超过可用容量 - 即使CPU暂时达到100%利用率,CPU使用率可能不会导致有意义的性能下降或资源争用。对于CPU和网络,应该持续高使用而不是瞬间峰值。然而,在一整天中平均CPU和网络使用会丢失重要的使用信息,因为几小时的高CPU或网络使用可能会对关键工作负载的性能产生重大影响。每天最多2小时的平均值可以避免这些极端情况,并且仍然可以为每种分析能力生成有意义的数据。但是,对于卷和总存储使用情况,存储使用量不能超过可用容量,即使是暂时的,因此每日最大使用量也会用于这些功能。

2018-08-30_163309.png

刚安装好系统见解,默认情况下每种负载都是每天凌晨三点时进行检索数据,管理员也可以根据实际需求修改收集计划,点击预测资源功能名称 - 设置


2018-08-30_104243.png

根据需求修改后,保存即可

2018-08-30_104426.png


Powershell操作

Set-InsightsCapabilitySchedule -Name "CPU capacity forecasting" -Daily -DaysInterval 2 -At 4:00PM

Set-InsightsCapabilitySchedule -Name "Networking capacity forecasting" -Daily -DaysOfWeek Saturday, Sunday -At 2:30AM

Set-InsightsCapabilitySchedule -Name "Total storage consumption forecasting" -Hourly -HoursInterval 2 -DaysOfWeek Friday

Set-InsightsCapabilitySchedule -Name "Volume consumption forecasting" -Minute -MinutesInterval 30 


除了计划收集,我们也可以立即触发检索数据功能,在系统见解界面点击选中预测资源功能名称栏,点击调用即可

2018-08-30_104737.png

Powershell操作 

Invoke-InsightsCapability -Name "CPU capacity forecasting"


系统见解要做的工作有三块

1.按照计划规则检索数据 

2.预测分析资源负载 

3.根据资源临界点执行补救措施


当我们通过手动调用开始检索数据,或等待计划时间到达后,预测结果并不会立刻出来,最少要把服务器上摆上六天,系统见解才能预测出数据,数据越长,能够分析预测的长度也就越长,建议最好三周以上。

2018-08-30_164554.png

预测功能需要使用预测模型来预测未来的使用情况,对于每个预测,模型将在本地根据您的机器数据进行培训。此模型旨在帮助检测长期趋势,并对每个Windows Server实例进行重新培训,使其能够适应每台计算机使用的特定行为和细微差别。


确定要使用的模型类型需要使用包含数万台机器的数据集来测试许多模型。在分析和调整这些模型后,微软决定使用自回归预测模型,因为它可以产生高度准确和直观的直观预测,同时不需要太多时间进行训练。但是,该模型需要三周的训练数据,因此每种能力都使用基本的线性趋势,直到有三周的数据可用。


通过观察老王认为此项预测分析功能,并非单纯本地就可以完成,因为安装过程并未生成数据库,也并没有安装分析工具,仍然还是一个40多兆的安装包,因此老王推测如果要实现这样的预测分析效果,还是需要将WAC服务器联网,需要借助于Azure机器学习功能才能完成预测模型的培训呈现。


当服务器上摆上一段时间,能够提供给预测模型完成分析时,点击某个资源功能名称,就能够看到系统提供的分析数据,在预测视图中左侧为资源每天使用的数据,曲线图右侧灰色区域为系统见解功能,根据资源分析数据的输入日期,预测出来的未来一段时间资源的使用情况,管理员可以参考预测结果进行容量规划

系统见解支持通过Powershell直接获取数据收集的历史记录,并且输出成JSON格式,WAC也是通过扩展程序将JSON文件自动展示出来


# Specify the History parameter to see the last 30 prediction results.

Get-InsightsCapabilityResult -Name "CPU capacity forecasting" -History


# Use the Output field to locate and then show the results of "CPU capacity forecasting."

# Specify the encoding as UTF8, so that Get-Content correctly parses non-English characters.

$Output = Get-Content (Get-InsightsCapabilityResult -Name "CPU capacity forecasting").Output -Encoding UTF8 | ConvertFrom-Json

$Output.ForecastingResults


OK,数据怎么收集的了,预测分析什么意思知道了,最后一项补救措施,挺有野心的一项功能,那么,什么时候会补救呢


预测分析功能定期会在预测视图下面为我们显示当前资源的预测状态,状态分为以下五种

2018-08-30_171119.png

正常:预测不会超过可用容量。

警告:预测超过了未来30天的可用容量。

严重:预测超过了未来7天的可用容量。

错误:该功能遇到意外错误。

无:没有足够的数据来进行预测。这可能是由于缺乏数据或最近没有报告数据。


通过WAC我们可以设置,当某个资源的预测状态达到正常,警告,严重,错误,无的时候,分别要执行什么操作,目前仅支持Powershell脚本补救,点击预测资源功能名称 - 设置 - Actions,可以为每个状态输入一段脚本,当预测资源达到该状态时自动执行,也可以规划为不同状态设置不同级别的补救脚本,例如预测到磁盘容量可能不足,警告级别执行磁盘清理,严重级别执行存储迁移。

2018-08-30_171428.png


Powershell直接管理


$Cred = Get-Credential

Set-InsightsCapabilityAction -Name "CPU capacity forecasting" -Type Warning -Action "C:\Users\Public\WarningScript.ps1" -ActionCredential $Cred

Set-InsightsCapabilityAction -Name "CPU capacity forecasting" -Type Critical -Action "C:\Users\Public\CriticalScript.ps1" -ActionCredential $Cred


Remove-InsightsCapabilityAction -Name "CPU capacity forecasting" -Type Warning

Get-InsightsCapability | Get-InsightsCapabilityAction

补救措施脚本参考


本文老王使用的Server版本为2019 17733 WAC版本为1804,如果大家需要资源可以和老王索要,可以看到,微软2019里面新推出的系统见解功能还是有一定的适用场景的,原来这种预测分析是要SCOM+SCVMM集成,或是SCOM+Veeam,才能看出预测分析的效果,现在不需要购买System Center产品,只需要有Windows Server 2019的授权就可以完成,帮助IT基础架构管理更上一个层次,通过智能分析为IT自动提供提示,自动执行部分运维,也是未来IT运维发展的趋势,很高兴看到微软推出这项功能


对于系统见解老王的建议,目前能够分析预测的类型还是太少,如果能够分析网站前端的负载,或某个服务的状态,自动进行补救,效果将会更好。补救方式目前还是受限,如果能够支持更多补救方式将更好,例如支持和SCO,SMA对接,当预测达到一定状态自动触发一个runbook执行,目前老王看到预测分析还是只能在单机服务器上面有效果,如果未来能够设计成针对于整个群集,或一个资源池进行分析将更好。目前主要还是以预测分析资源使用率为主,如果能够加上配合BPA对服务器上面的配置提出建议将更好。