博客

自动监测框架中生产能力利用率

大卫·霍瓦斯(David Horvath)

| 最小

“ NutanixFrame®桌面AS-A-Service(DAAS)提供了详细的调度功能,以确保框架帐户能够交付恰当的时间生产能力同时最大程度地减少了具有空闲云容量的额外成本。但是,框架当前没有内置功能来提醒管理员,当现有生产池用尽了配置的容量。这可能会导致用户无法连接到会话,因为生产池中的所有VM都在时间使用。该博客将演示如何使用帧管理API监视并发会话的实际数量,并在活动会话数量达到框架生产池的配置能力的一定百分比时,将消息发送到Slack®频道。

解决方案体系结构

对于此解决方案,我选择使用Windows®PowerShell®脚本在Frame Utility Server上运行。由于我已经开发了弹性管理解决方案这是在框架实用程序服务器上作为计划任务运行的。与该脚本一样,我们需要收集一些值才能成功运行该帐户上的帧管理API。

$ clnt_id =“

$ clnt_secret =“

$ acct_id =“

当超过阈值时,我们还需要一种方式来发送通知。对于此博客,我选择使用Slack Webhook。Slack Webhook允许您“发布”数据,然后将其显示为Slack频道中的消息。这个松弛文章说明如何设置Slack Webhook。

我开发的脚本将在24小时内定期进行轮询,如果与框架帐户相关的任何生产池中的活动池中的活动数量大于固定百分比,则将警报发送给Slack。完整脚本可以下载这里但是我将分解以下各个部分(请注意,以下片段不能独立运行,而是出于说明性的目的。

剧本

该脚本具有两个环境变量定义。

$ session_threshold = 50

$ poll_interval = 15

这些变量表明,该脚本将每15分钟检查一次以50%容量的活动会话,并提醒是否找到任何活动。

对于这两个参数,脚本要做的第一件事是获取框架帐户的名称,并向Slack发送一条消息以确认其正在监视帧帐户。

$ req_string =“ https://api.console.nutanix.com/v1/accounts/” + $ acct_id

$ res = get -frameapicall -client_id $ clnt_id -client_secret $ clnt_secret -api $ req_string

$ acct_name = $ res.name

$ the_text =“启动“ + $ acct_name +”的监视,其门槛为“ + $ session_threshold +”已发布容量的百分比。

$ body_text = @{

文字= $ the_text

} |convert依

Invoke -restmethod -uri $ slack_webhook -method post -body $ body_text

我们使用框架管理API调用来获取帐户的“通用名称”以提高可读性,并且由于Slack希望该帖子的正文成为JSON对象正确。

真的

脚本开始消息在Slack中。

接下来,我们开始一个24小时的循环,并获取框架帐户的生产池列表。

(($ poll = 0),($ poll -lt [int]((60*24)/$ plol_interval)),$ poll ++)

{

美元

$ res = get -frameapicall -client_id $ clnt_id -client_secret $ clnt_secret -api $ req_string

如果使用不同的实例类型,并且每个池都有自己的最大容量,则框架帐户可以具有多个生产池。

foreach($ in $ res)

{

如果($ i.id -ne $ null)

{

美元

$ result1 = get -frameapicall -client_id $ clnt_id -client_secret $ clnt_secret -api $ req_string

$ sessions = count -activePoolSessions -client_id $ clnt_id -client_secret $ clnt_secret -acct_id $ acct_id -ext_pool_id $ i.external_id

现在,如果达到阈值,我们可以检查百分比并将消息发送给Slack。

if([int]($ sessions*100/$ result1.max_servers)-gt $ session_threshold)

{

$ the_text = $ acct_name +“'s” + $ i.name +“ pool at o n at`` + [int]($ sessions*100/$ result1.max_servers) +“`````````

$ body_text = @{

文字= $ the_text

} |convert依

Invoke -restmethod -uri $ slack_webhook -method post -body $ body_text

}

该消息显示如下所示。

真的

松弛警报消息

一旦检查了所有池,脚本就会在投票间隔内入睡。

start -seep -seconds($ poll_interval*60)

循环完成后,我们将闭合消息发送给Slack,如下所示。

$ the_text =“完成监视” +$ acct_name

$ body_text = @{

文字= $ the_text

} |convert依

Invoke -restmethod -uri $ slack_webhook -method post -body $ body_text

真的

关闭松弛消息

结论

脚本确实是为了进行调试目的而将输出写入外壳的,但如果将这些消息作为计划任务运行,这将不太有用,因为这些消息不会显示。通过修改发送的文本字符串,可以轻松实现消息自定义为Slack,并且可以通过搜索Slack的文档来完成更复杂的格式。此外,只要通过PowerShell Works触发它们,就可以使用其他非偏斜通知方法。仅运行24小时的脚本的想法可以定制监视期以满足企业的需求。例如,也许周一至周五的时间表是合适的,并且在周末的监视较少。在弹性博客(上面链接)中,我演示了如何创建可以通过内置Windows任务调度程序计划的.cmd文件。

David Horvath是Nutanix框架的高级解决方案建筑师。他已经成为框架团队的一员已有近5年的历史,在此之前,他花了20年的时间与美国情报界的各种信息技术项目进行咨询。

©2021 Nutanix,Inc。保留所有权利。Nutanix,Nutanix徽标和所有Nutanix产品,此处提到的功能名称是美国和其他国家的Nutanix,Inc。的注册商标或商标。本文提到的所有其他品牌名称仅用于识别目的,可能是其各自持有人的商标。这篇文章可能包含指向不属于Nutanix.com一部分的外部网站的链接。Nutanix不控制这些站点,并对任何外部站点的内容或准确性不承担所有责任。我们决定链接到外部站点的决定不应被视为对该站点上任何内容的认可。本文中包含的某些信息可能与从第三方来源以及我们自己的内部估计和研究获得的研究,出版物,调查和其他数据有关。尽管我们认为这些第三方研究,出版物,调查和其他数据是在本文之日起可靠的,但它们尚未独立验证,我们对任何信息的充分性,公平性,准确性或完整性都没有任何代表性从第三方来源获得。

这篇文章可能包含明确和暗示的前瞻性陈述,这些陈述不是历史事实,而是基于我们当前的期望,估计和信念。此类陈述的准确性涉及风险和不确定性,并取决于未来的事件,包括可能无法控制的事件,实际结果可能与此类陈述所预期或暗示的事件差异。本文所包含的任何前瞻性陈述仅在本文之日起说,除非法律要求,否则我们没有义务更新或以其他方式修改任何此类前瞻性陈述,以反映后续事件或情况。

Baidu