通过python实现Teams性能持续监控
这个方法也许微软可以推荐给客户。
背景:
前段时间国内受到了疫情的影响,很多用户都会在家办公,对于使用O365的用户,就出现了一个问题,同时在线人数的激增导致Teams性能受到极大的影响,笔者公司也遇到了同样的问题。微软客服工程师提供了一些工具,用来测试Teams的当前性能,从而来进行问题排查。工具主要有两个MicrosoftSkypeForBusinessNetworkAssessmentTool.exe和Microsoft Network Monitor.exe
评判Teams性能一般有以下几点标准:
在排错过程中,主要是安装了MicrosoftSkypeForBusinessNetworkAssessmentTool这个工具来进行测试,安装完成后,启动cmd, 切换到C:\Program Files (x86)\Microsoft Skype for Business Network Assessment Tool\目录下面,运行:NetworkAssessmentTool.exe,获得如下数据:
对比微软提供的Teams性能标准,可以判断是什么问题导致性能下降的。
但是,问题来了,性能监控是一个持续性动作,如果单单的靠一次运行这个exe,然后直接判断下结论,有失公允。这就好比说你登录服务器,看到当前CPU使用率是40%,然后就记录cpu使用率是40%?
当然,从DEVOPS的角度出发,是可以解决这个问题的。笔记设计了Teams性能持续监控记录,并通过邮件定时发送,邮件模板如下:
具体实现方法如下:
- 通过Python调用ps1文件,执行NetworkAssessmentTool,并将结果保存在txt中
if(Test-Path $env:userprofile\documents\result.txt){Clear-Content $env:userprofile\documents\result.txt}
cd 'C:\Program Files (x86)\Microsoft Skype for Business Network Assessment Tool\'
$a=.\NetworkAssessmentTool.exe
#echo $a > $env:userprofile\documents\result.txt
#$b=get-content $env:userprofile\documents\result2.txt
$b=$a
$loss=$b[13] -split ":"
$loss[1].trim()
$latency=$b[14] -split ":"
($latency[1].trim() -split " ")[0]
$sent=$b[15] -split ":"
$sent[1].trim()
$received=$b[16] -split ":"
$received[1].trim()
$jitter=$b[17] -split ":"
($jitter[1].trim() -split " ")[0]
$ratio=$b[18] -split ":"
$ratio[1].trim()
$now=get-date
$current=$now.ToString("yyyy-MM-dd HH:mm:ss")
$current
$export=$current+"|"+$loss[1].trim()+"|"+($latency[1].trim() -split " ")[0]+"|"+$sent[1].trim()+"|"+$received[1].trim()+"|"+($jitter[1].trim() -split " ")[0]+"|"+$ratio[1].trim()
$export > $env:userprofile\documents\result.txt
- 将获取的txt内容上传到sqlite数据库,数据采集部分完成,设置windows计划任务,可以设置10分钟一次,这样可以获得长期自动监控。
def update_table_teams(updateinfo):
q=''
update=updateinfo.split('|')
conn=sqlite3.connect('teams.db')
c=conn.cursor()
for p in range(0,len(update)):
q+='\''+update[p]+'\','
insert_info='insert into teamstest values(null,'+q[0:len(q)-1]+')'
c.execute(insert_info)
conn.commit()
conn.close()
- 报表功能。
- 设计html邮件模板。
- 从sqlite中获取所需要的数据,调用matplotlit生成折线图,并保存在对应的路径中。
- 替换邮件模板中的需要替换的部分,形成需要发送的邮件并发送。
- 通过windows计划任务,可以设置每天一次。
以上是通过Python实现的持续Teams性能监控,希望可以给需要的同行提供一些方法参考。