首页 > 其他分享 >使用Grafana监控Lync/Skype服务器(二)

使用Grafana监控Lync/Skype服务器(二)

时间:2023-03-23 22:34:15浏览次数:42  
标签:Name int ActivityLevel Skype Lync Grafana SQL Server

在上一篇文章中,我们使用Grafana从SQL Server的表中取数,然后通过Dashboard实现了对Lync/Skype服务器的实时用户/设备连接数的监控。那么在本篇文章中,我们将继续使用Grafana来实现对Lync/Skype服务器的实时会议数据的监控。

如何使用Grafana监控Lync/Skype服务器的实时会议数

Skype服务器的实时会议数来源

Skype服务器的实时会议数主要来源于Skype服务器自带的Powershell命令,我们可以通过以下Powershell命令获取:

  • RTCAVMCU 代表当前正在进行的A/V会议
  • RTCIMMCU 代表当前正在进行的IM会议
  • RTCASMCU 代表当前正在进行的共享会议
Get-CsWindowsService -ComputerName FrontEndServer -Name RTCAVMCU | select Name,ActivityLevel
Get-CsWindowsService -ComputerName FrontEndServer -Name RTCIMMCU | select Name,ActivityLevel
Get-CsWindowsService -ComputerName FrontEndServer -Name RTCASMCU | select Name,ActivityLevel

使用Grafana监控Lync/Skype服务器(二)_Skype

多台Skype前端服务器的数据获取

当我们有多台Skype前端服务器时,我们可以对上一步骤中的命令进行扩展,生成一个脚本来遍历这些前端服务器,之后将数据存储在array中,代码如下:

$array = @()
foreach($FrontEndServer in (Get-CsPool -Identity FrontEndPoolFQDN).Computers){    

    $RTCAVUCU = Get-CsWindowsService -ComputerName $FrontEndServer -Name RTCAVMCU | select Name,ActivityLevel
    $RTCIMMCU = Get-CsWindowsService -ComputerName $FrontEndServer -Name RTCIMMCU | select Name,ActivityLevel
    $RTCASMCU = Get-CsWindowsService -ComputerName $FrontEndServer -Name RTCASMCU | select Name,ActivityLevel

    $RTCAVUCUConfCount = $RTCAVUCU.ActivityLevel.Split(',')[0].split('=')[1]
    $RTCAVUCUUserCount = $RTCAVUCU.ActivityLevel.Split(',')[1].split('=')[1]

    $RTCIMMCUConfCount = $RTCIMMCU.ActivityLevel.Split(',')[0].split('=')[1]
    $RTCIMMCUUserCount = $RTCIMMCU.ActivityLevel.Split(',')[1].split('=')[1]

    $RTCASMCUConfCount = $RTCASMCU.ActivityLevel.Split(',')[0].split('=')[1]
    $RTCASMCUUserCount = $RTCASMCU.ActivityLevel.Split(',')[1].split('=')[1]

    $obj = New-Object PSObject
    $obj | Add-Member -MemberType NoteProperty -Name ServerName -Value $FrontEndServer
    $obj | Add-Member -MemberType NoteProperty -Name RTCAVUCUConfCount -Value $RTCAVUCUConfCount
    $obj | Add-Member -MemberType NoteProperty -Name RTCAVUCUUserCount -Value $RTCAVUCUUserCount
    $obj | Add-Member -MemberType NoteProperty -Name RTCIMMCUConfCount -Value $RTCIMMCUConfCount
    $obj | Add-Member -MemberType NoteProperty -Name RTCIMMCUUserCount -Value $RTCIMMCUUserCount 
    $obj | Add-Member -MemberType NoteProperty -Name RTCASMCUConfCount -Value $RTCASMCUConfCount
    $obj | Add-Member -MemberType NoteProperty -Name RTCASMCUUserCount -Value $RTCASMCUUserCount    
    
    $array += $obj

}

执行这段代码之后,我们就能得到前端池上的所有实时会议以及用户数,并存储在$array变量中,如下为结果示例:

使用Grafana监控Lync/Skype服务器(二)_Grafana_02

在SQL Server中为数据存储创建表格

我们获取到上面步骤的数据之后,接下来我们就要到SQL Server中创建一个表格,用于将这些数据导入进去,并为之后Grafana取数来使用,创建表格SQL语句如下:

Create Table Skype_GrafanaDS_ConfCountAndUserCount
(
	Date datetime,
	Server nvarchar(450),
	RTCAVUCUConfCount int,
  RTCAVUCUUserCount int,
  RTCIMMCUConfCount int,
  RTCIMMCUUserCount int,
  RTCASMCUConfCount int,
  RTCASMCUUserCount int
)

将数据导入至SQL Server表中

SQL表创建完成后,我们可以使用如下Powershell脚本,来将导出的数据导入进去,脚本如下:

#Connect to SQL database
Function SQLConnectionSQL
{
    param
    (
        [string]$server,
        [string]$database,
        [string]$uid,
        [string]$pwd
 
    )
    $SQLCon = New-Object System.Data.SqlClient.SqlConnection
    $SQLCon.ConnectionString = "Data Source=$server;Initial Catalog=$database;User ID=$uid;pwd=$pwd;"
 
    try
    {
        $SQLCon.Open()
        return $SQLCon
    }
 
catch [exception]
    {
        Write-Warning ('Connect to database failed with error message:{0}' -f ,$_)
        $SQLCon.Dispose()
        return $null
    }
}

$converttime = (get-date).AddHours(-8) | Get-Date -format "yyyy-MM-dd HH:mm:ss"

$Server = 'SQLServerName'
$DBName = 'DBName'
$userName = "UserName"
$Cred = "Password"

$conn = SQLConnectionSQL -server $Server -database $DBName -uid $userName -pwd $Cred

foreach($i in $array){ 
    
    $ServerName = $i.ServerName
    [int]$RTCAVUCUConfCount = $i.RTCAVUCUConfCount
    [int]$RTCAVUCUUserCount = $i.RTCAVUCUUserCount
    [int]$RTCIMMCUConfCount = $i.RTCIMMCUConfCount
    [int]$RTCIMMCUUserCount = $i.RTCIMMCUUserCount
    [int]$RTCASMCUConfCount = $i.RTCASMCUConfCount
    [int]$RTCASMCUUserCount = $i.RTCASMCUUserCount

    $cmd = "INSERT INTO Skype_GrafanaDS_ConfCountAndUserCount VALUES ('$converttime','$ServerName','$RTCAVUCUConfCount','$RTCAVUCUUserCount','$RTCIMMCUConfCount','$RTCIMMCUUserCount','$RTCASMCUConfCount','$RTCASMCUUserCount')"
    SQLCommand -SQLConnection $conn -command $cmd
}

导入完成后,我们看到的示例数据如下,其中包括了每台前端服务器的实时会议和用户数:

使用Grafana监控Lync/Skype服务器(二)_SQL_03

创建一个自动化任务计划(Task Schedule)

当我们将以上脚本各个部分整合之后,会形成一个完整的脚本,实现从数据采集到导入数据至SQL Server表中。那么为了实时获取到这些数据,我们需要创建一个任务计划,来设置为每15分钟采集一次数据。

任务计划的主要配置如下:

使用Grafana监控Lync/Skype服务器(二)_自动化_04

使用Grafana监控Lync/Skype服务器(二)_Skype_05

使用Grafana监控Lync/Skype服务器(二)_Grafana_06

字段信息示例如下:

  • Porgram/script : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
  • Add Arguments(optional):-File D:\scrpit\GetSkypeConfCount.ps1

在Grafana中添加数据源

当我们做完以上所有工作后,我们实现了:

从Skype前端服务器获取数据->将数据每间隔15分钟,导入至SQL Server表中。那么接下来,我们需要在Grafana中添加数据源。这一部分和之前文章描述一样,不在此赘述。此文假定您已经将SQL Server数据源加入到了Grafana中。

为Grafana配置变量

由于我们之前已经在该系列文章中的第一篇配置了变量,故不在此赘述。

在Grafana中创建Dashboard

变量创建完成后,我们即可到Dashboard界面创建我们的第一个Dashboard。

点击左侧的➕:

使用Grafana监控Lync/Skype服务器(二)_自动化_07

在弹出的New Panel界面,选择Add Query:

使用Grafana监控Lync/Skype服务器(二)_Skype_08

我们在Query的配置界面,选择之前添加的对应的SQL数据源,之后输入以下SQL查询语句,并选择时序(Time series)格式:

select  $__timeEpoch(Date),
        RTCAVUCUConfCount,
        RTCAVUCUUserCount,
        RTCIMMCUConfCount,
        RTCIMMCUUserCount,
        RTCASMCUConfCount,
        RTCASMCUUserCount
from [DB].[dbo].[TableName]
Where Server = '$FrontEndServers'
order by Date ASC

使用Grafana监控Lync/Skype服务器(二)_自动化_09

在Visualization界面,我们选择Bar Gauge,并进行如下配置:

使用Grafana监控Lync/Skype服务器(二)_Lync_10

在General界面,为Dashboard起一个Title,之后保存:

使用Grafana监控Lync/Skype服务器(二)_自动化_11

Dashboard效果展示

最终我们将得到下面的一个Dashboard。同时由于我们设置了变量,可以点击箭头的位置来进行服务器切换以查看不同服务器的实时会议以及用户数:

使用Grafana监控Lync/Skype服务器(二)_Grafana_12

本章总结

在此篇文章中,我们了解了:

  • 如何获取Skype服务器实时会议和用户数
  • 如何将数据导入SQL Server表
  • 如何通过Grafana展示数据

在此系列文章的下一部分,我们将更加深入的使用Grafana来展示Skype点对点(Peer-to-Peer)的通话质量数据。

标签:Name,int,ActivityLevel,Skype,Lync,Grafana,SQL,Server
From: https://blog.51cto.com/fantacyzmr/6145997

相关文章

  • Linux-监控三剑客之Grafana
    Grafana一、环境准备环境zabbix-serverzabbix服务端10.0.0.62grafana-servergrafana服务端10.0.0.63二、使用流程1.部署grafana9.3.6[root@graf......
  • 应用监控可视化工具Grafana&Kibana对比
    在智能化无法做到闭环的全自动风险管理前提下,应用运维系统采集的数据、智能算法分析出的信息需要高效传输到人脑才能发挥价值。高效的人机交互界面可以让机器智能与人脑更紧......
  • Windows-exporter(node-exporter)+ Prometheus + Grafana资源监控搭建
    在性能测试过程中,资源监控可以时刻掌握被测软件运行环境的各类数据,从而更加直观地反馈测试过程中潜在的问题,下面是基于Windows-exporter(node-exporter)+Prometheus+Grafa......
  • 如何续订Lync WAC服务器证书
    WAC服务器简介为Lync/Skype使用OfficeWebApps服务器(WAC服务器),用户可以呈现丰富的Powerpoint演示文稿,包括基于缩略图的幻灯片导航、视频和音频多媒体播放,支持高达20MB的H......
  • 如何将Lync/Skype服务器KHI数据导入到SQL Server数据库
    介绍关键运行状况指标KHI(KeyHealthIndicators)是具有阈值的性能计数器,旨在揭示用户体验问题。通常,当我们看到Lync语音质量问题或性能问题(速度慢/掉线等)时,我们会查看性能......
  • 关于Lync/Skype客户端无法获取Outlook忙闲信息的问题
    故障描述OutlookCalendar上有会议,即使Lync/Skype的客户端上EWS和MAPI状态均OK,但是Lync/Skype客户端状态不显示为Inameeting。​故障分析Lync/Skype在从OutlookCalendar......
  • mac下安装grafana
    安装稳定版:brewinstalgrafana  ,brewinstall安装时可能会报错  报错解决方案:依次执行以下命令即可  然后重新brewinstallgrafana安装即可,也可安装不......
  • grafana二进制部署
    创建grafana用户#groupadd-g1025-o-rgrafana#useradd-M-N-ggrafana-o-r-d/data/apps/grafana-s/bin/false-c"grafanaServer"-u1025grafana下载......
  • 使用docker安装prometeus和grafana
    1.拉取镜像dockerpullprom/prometheusdockerpullprom/pushgatewaydockerpullgrafana/grafana2.部署prometheus2.1创建prometheus.yamlglobal:scrape_inte......
  • 06centos7部署安装prometheus+exproter+grafana
    一.prometheus二进制编译安装1.关闭防火墙(或放通具体应用端口)systemctlstopfirewalld2.下载prometheus安装包官网:https://github.com/prometheus/prometheu......