PowerBI从Lync或Skype for Business数据库中分析数据和KPI展现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PowerBI从Lync或Skype for Business数据库中分析数据和KPI展现相关的知识,希望对你有一定的参考价值。

但企业使用Lync Server或者Skype for Business时,涉及到多种登陆客户端版本以及语音通话,用户状态等信息,这些信息如果提取出来进行分析,相信对于运维管理员来说是非常有帮助,可以快速直观了解到当前时间整个企业环境中用户使用Lync或SFB(Skype for Business)的状态,虽然Lync Server或SFB Server提供了默认的报表功能,但对于我们管理员来说更像看到定制化的数据并实时或及时展现,那么下面我就采用PowerBI为大家演示如何进行这些数据的提取以及展现

在此之前呢,需要先连接下SFB的数据库结构以及每一个数据库负责什么功能类型的数据

  • RTC实例:负责存储所有后端数据库,包括主CMS,响应组配置,位置数据等(RTC也是SFB的默认实例名称)

技术分享图片

  • rgsconfig:包含响应组的配置,如代理,工作流,队列等

技术分享图片

  • cpsdyn:包含呼叫寄存的动态信息

  • rtcshared:承载会议目录

  • rgsdyn:包含响应组使用的动态“实时”信息

  • XDS:这是SFB的中央管理存储数据库(CMS),包含Lync拓扑,配置和策略

  • RTCAB:存储SFB的地址薄信息

  • RTCXDS:存储用户数据的备份

  • LIS:存储Lync服务器的位置配置信息,如子网,端口,交换机等

技术分享图片

  • RTCLOCAL实例:负责存储主CMS数据库的本地副本

技术分享图片

  • RTC:存储用户信息,如联系人列表,预定的会议等

  • RTCDYN:存储用户的动态实时数据,如当前状态,从什么设备登陆等信息

  • LYNCLOCAL实例:

技术分享图片

  • lyss:是一个存储框架,供不同SFB存储服务使用者访问SFB的存储平台,例如与Exchange集成的存档信息

  • 归档和监控实例(MSSQLSEVER):负责存储归档信息和监控数据

技术分享图片

  • LCSlog:存储即时消息内容,P2P呼叫和会议数据信息

  • LCSCdr:存储详细的呼叫通话记录

  • QoEMetrics:存储呼叫使用体验质量的数据

了解了各个实例和数据库的存储用途就方便进行获取数据来进行分析了

我先来做一个UCMA的客户端连接统计分析,什么是UCMA呢?

UCMA是为了统一通信和协作提供了灵活的托管代码平台

首先还是先从SFB的SQL数据库中获取数据

技术分享图片

输入SFB的SQL数据库

Select top 1000 (cast (RE.ClientApp as varchar (100))) as ClientVersion, R.UserAtHost as UserName, FE.Fqdn

  From rtcdyn.dbo.RegistrarEndpoint RE

  Inner Join rtcdyn.dbo.Endpoint EP on RE.EndpointId = EP.EndpointId

  Inner Join rtc.dbo.Resource R on R.ResourceId = RE.OwnerId

  Inner Join rtcdyn.dbo.FrontEnd FE on EP.RegistrarId = FE.FrontEndId

  Order By ClientVersion, UserName

技术分享图片

输入访问凭证

技术分享图片

加载,然后选择一个饼图,把ClientVersion放入图例中,把ClientVersion放入值里并选择计数

PS:因为我这没有UCMA访问连接数据故此图标没有任何数据展示出来

技术分享图片

技术分享图片

接下来我将再添加一个图标统计一个用户拥有多种客户端登陆我们如何展现出来的方法

同样的先获取SFB的SQL数据库

技术分享图片

输入实例和数据库以及查询

SELECT rtc.dbo.Resource.UserAtHost as 'SIP Address', CAST(rtcdyn.dbo.RegistrarEndpoint.ClientApp as varchar(100)) as 'Client Version'

FROM rtcdyn.dbo.RegistrarEndpoint

INNER JOIN rtc.dbo.Resource

ON rtcdyn.dbo.RegistrarEndpoint.OwnerId = rtc.dbo.Resource.ResourceId

WHERE IsServerSource = 0

技术分享图片

可以看到预览出来的2条数据,显示的是当前正在登陆使用的用户,分别是一个用户登陆的SFB以及一个SIP话机登陆的SFB,点击加载

技术分享图片

分别添加2个切片器,分别在2个切片器选择SIP Address和Client Version查看每一个用户拥有登陆的客户端版本或者每一个客户端版本对应哪些用户在使用的分析展现

技术分享图片

再添加一个饼图查看客户端占比情况,这时如果有新的用户登陆,那么数据也是可以点击刷新获取到的

技术分享图片

接下来我想了解统计每一个用户的状态,是空闲还是忙碌还是离开等,同样先获取SFB的SQL数据库

SELECT LOWER(UserAtHost) AS UserAtHost, Status=

CASE

WHEN Availability BETWEEN 0 AND 2999 THEN Availability

WHEN Availability BETWEEN 3000 AND 4499 THEN 'Available'

WHEN Availability BETWEEN 4500 and 5999 THEN 'Available - Idle'

WHEN Availability BETWEEN 6000 and 7499 THEN 'Busy'

WHEN Availability BETWEEN 7500 and 8999 THEN 'Busy - Idle'

WHEN Availability BETWEEN 9000 and 11999 THEN 'Do not Disturb'

WHEN Availability BETWEEN 12000 and 14999 THEN 'Be right back'

WHEN Availability BETWEEN 15000 and 17999 THEN 'Away'

WHEN Availability >= 18000 THEN 'Offline'

END,

LastPubTime

FROM rtc.dbo.Resource Resource

RIGHT JOIN (

SELECT

Instance.PublisherId,

SUBSTRING(Instance.Data, CHARINDEX('<availability>', Instance.Data) + 14, CHARINDEX('</availability>', Instance.Data) - CHARINDEX('<availability>', Instance.Data) - 14) AS Availability,

Instance.LastPubTime

FROM (

SELECT PublisherId, cast(substring(Data, 0, 256) AS varchar(256)) AS Data, LastPubTime FROM rtcdyn.dbo.PublishedInstance WHERE ContainerNum = 2 AND CategoryId = 4

UNION ALL

SELECT PublisherId, cast(substring(Data, 0, 256) AS varchar(256)) AS Data, LastPubTime FROM rtc.dbo.PublishedStaticInstance WHERE ContainerNum = 2 AND CategoryId = 4

) AS Instance

WHERE

CHARINDEX('aggregateState', Data) > 0

) AS UserAndAvailability ON Resource.ResourceId = PublisherId

/*WHERE UserAtHost = '[email protected]' COLLATE SQL_Latin1_General_CP1_CI_AS*/

ORDER BY UserAtHost, LastPubTime DESC

技术分享图片

点击加载,可以预览看到用户的状态,这里大部分都是Offine

技术分享图片

创建一个环形图,并把Status状态作为图例,UserAtHost百分比作为值,这样可以统计看到不在线的占多少,在线的占多少

技术分享图片

接下来再继续看看音频呼叫的质量状况,主要想看看每天平均的丢包率以及MOS意见平均分数

首先先来看看每天的平均丢包率

同样的,先获取SFB的SQL数据

select top 10000 convert(date,SessionTime) as [Date], avg(PacketLossRate) as [Packet Loss Rate] from AudiostreamDetailView group by convert(date,SessionTime) order by convert(date,SessionTime)

技术分享图片

加载

技术分享图片

拖一个堆积面积图,Date设置轴,把Packet Loss Rate作为值,再开启数据标签即可看到走势

技术分享图片

接下来再看看MOS意见平均分数

 select top 10000 convert(date,SessionTime) as [Date], avg(OverallAvgNetworkMOS) as [Overall MOS] from AudioStreamDetailView group by convert(date,SessionTime) order by convert(date,SessionTime)

技术分享图片

加载

技术分享图片

还是选择堆积面积图,把Date设置为轴,把Overall MOS设置值并选择平均值

技术分享图片

在上面这张图做好的基础上,我再点击分区图,把该视图从堆积面积图改成分区图

技术分享图片

在分区图下可以添加走向线,进行数据预测走向

技术分享图片

可以设置走向线的参数

技术分享图片

同理我再把之前做的每日平均丢包率的堆积面积图也改成分区图并添加一个平均线

技术分享图片

接下来把每一个可视化视图都添加下标题便于识别该视图是显示的什么标题

技术分享图片

接下来再做一个分析就是我们经常会用到Lync或SFB的屏幕共享,那么我们需要监测下这个RDP的延迟,一般低于400毫秒是用户体验最好的,所以我们也可以基于400毫秒为基线来进行监测

同样先获取SFB的SQL数据

select top 10000 convert(date,StartTime) as [Date], avg (RDPTileProcessingLatencyAverage) as [Latency] from ASCallAggView group by convert(date,StartTime) order by convert(date,StartTime)

技术分享图片

拉一个分区图,把Date作为轴,Latency作为值,因为我的是测试环境没人共享,所以看不到数据,但需要添加一个恒线设置值为400,这样就看到每一个用户查看每一帧所需的时间与恒线400毫秒比对是高还是低作为用户体验是好是坏的评判依据了

技术分享图片

按照同样的方法再创建一个分区图,来测量电话会议中应用程序共享时的抖动

select top 10000 convert(date,ConferenceDateTime) as [Date], avg (JitterInterArrival) as [Jitter] from QoEReportsASCallListView group by convert(date,ConferenceDateTime) order by convert(date,ConferenceDateTime)

技术分享图片

以Date为轴,Jitter的计数或者平均值来作为值

技术分享图片

我会定义三个常量值来分别定义好,一般,差的水平,这3个水平线也用不同的颜色区分,绿色代表好,×××一般,红色差

技术分享图片

接下来再创建一个呼叫报告,按周来统计查看呼叫记录

select top 10000 DATEPART(wk,SessionIdTime) as [Week], count(*) as Calls from VoipDetailsView where year(getdate()) = year(SessionIdTime) and (ToUri = '[email protected]') group by DATEPART(wk,SessionIdTime) order by DATEPART(wk,SessionIdTime)

技术分享图片

以week为轴,Calls的计数为值,开启数据表标签和走向线

PS:测试环境没有数据,所以这里空白(好尴尬啊)

技术分享图片

如果我们要为指定的一个用户创建生成一组数据展示3个月的呼叫和分钟数,那么我们需要再添加2个可视化视图,一个视图用于数据表,一个用户电话分钟数

select top 1000 Convert(date, SessionIdTime) as [Date], SessionIdTime,ToPhone as [To Phone], FromPhone as [From Phone], ResponseTime as [Start Time], EndTime as [End Time], DATEDIFF(mi,ResponseTime, EndTime) as [Minutes] from VoipDetailsView where InviteTime > getdate()-93 and InviteTime < getdate()+1 and (ToUri = '[email protected]' or FromUri = '[email protected]') order by SessionIdTime desc

技术分享图片

拖一个表来显示这些所有的通话记录数据,当然还可以再添加一个分区图来看通话时间的分析,因为测试环境没有数据,所有我这里不再演示,基本和上面的分区图设置是差不多的

技术分享图片

接下来加入噪音监测

select top 10000 convert(date,SessionTime) as [Date], avg(CallerRxAGCNoiseLevel) as [Caller Noise], avg(CalleeRxAGCNoiseLevel) as [Callee Noise] from AudioStreamDetailView group by convert(date,SessionTime) order by convert(date,SessionTime)

技术分享图片

加载

技术分享图片

选择折线图,以日期为轴,噪音为值

技术分享图片

最后我再分析一个视频通话的发送接收丢失率和低速率百分比分析

select top 10000 convert(date,ConferenceDateTime) as [Date], avg (SendFrameRateAverage) as [Send Frame Rate], avg(RecvFrameRateAverage) as [Receive Frame Rate], avg(VideoPacketLossRate) as [Video Loss Rate], avg(LowFrameRateCallPercent) as [Low Rate Percent] from QoEReportsVideoUserAgentView group by convert(date,ConferenceDateTime) order by convert(date,ConferenceDateTime)

技术分享图片

拖一个簇状柱形图,以Date为轴,其他均为值,很可惜我这里也是没有数据,所以只能把功能介绍给大家了

技术分享图片

最后经过我的排版和美化就大功告成了

技术分享图片

以上是关于PowerBI从Lync或Skype for Business数据库中分析数据和KPI展现的主要内容,如果未能解决你的问题,请参考以下文章

Skype for Business 2016或Lync 2013安装在Windows7上闪退

是否可以为 Skype for Business(以前的 MS Lync)开发加载项?

Lync 2013打开报错Lync即将成为Skype for Business处理方法

Skype for Business Client 与 Lync Client切换

Lync 项目经验-12-为某上市企业Skype for Business购买Godday证书

配置Lync 2013/Skype for Business 2015/Skype for Business 2019联盟用户模糊搜索