在此之前呢,需要先连接下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 = 'somebody@example.com' 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 = 'uri@domain.com') 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 = 'user@domain' or FromUri = 'user@domain') 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展现
原文地址:http://blog.51cto.com/rdsrv/2119148