通过python实现Microsoft Teams性能持续监控

通过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性能持续监控记录,并通过邮件定时发送,邮件模板如下:

 

具体实现方法如下:

  1. 通过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

 

  1. 将获取的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()

  1. 报表功能。
    1. 设计html邮件模板。
    2. 从sqlite中获取所需要的数据,调用matplotlit生成折线图,并保存在对应的路径中。
    3. 替换邮件模板中的需要替换的部分,形成需要发送的邮件并发送。
    4. 通过windows计划任务,可以设置每天一次。

 

 

以上是通过Python实现的持续Teams性能监控,希望可以给需要的同行提供一些方法参考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值