0
点赞
收藏
分享

微信扫一扫

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

在上一篇文章中,我们使用Grafana从SQL Server的表中取数,然后通过Dashboard实现了对Lync/Skype服务器的会议质量的监控。那么在本篇文章中,我们将继续使用Grafana来实现对Lync/Skype的功能状态进行监控。

如何使用Grafana监控Lync/Skype服务器的功能状态

Skype服务器的功能状态数来源

Skype服务器的功能状态可以使用自带的Powershell命令来进行测试并返还,主要的功能测试命令如下:

#Presence功能#
Test-CsPresence -TargetFqdn FrontEndPoolFQDN -SubscriberSipAddress "sip:TestUser@contoso.com" -SubscriberCredential $UserCredential -PublisherSipAddress "sip:TestUser@contoso.com" -PublisherCredential $UserCredential | select -ExpandProperty Result

#AV会议功能#
Test-CsAVConference -TargetFqdn FrontEndPoolFQDN -SenderSipAddress sip:TestUser@contoso.com@bmw-brilliance.cn -ReceiverSipAddress sip:TestUser2@contoso.com | select -ExpandProperty Result

#地址簿功能#
Test-CsAddressBookService -TargetFqdn FrontEndPoolFQDN -UserSipAddress sip:TestUser@contoso.com@bmw-brilliance.cn | select -ExpandProperty Result

#A/V边缘功能#
Test-CsAVEdgeConnectivity -TargetFqdn FrontEndPoolFQDN -UserSipAddress sip:TestUser@contoso.com@bmw-brilliance.cn | select -ExpandProperty Result

#IM即时消息功能#
Test-CsIM -TargetFqdn FrontEndPoolFQDN -SenderSipAddress sip:TestUser@contoso.com@bmw-brilliance.cn -ReceiverSipAddress sip:TestUser2@contoso.com | select -ExpandProperty Result

#点对点A/V功能#
Test-CsP2PAV -TargetFqdn FrontEndPoolFQDN -SenderSipAddress sip:TestUser@contoso.com@bmw-brilliance.cn -ReceiverSipAddress sip:TestUser2@contoso.com | select -ExpandProperty Result

#点对点PSTN呼叫功能#
Test-CsPstnPeerToPeerCall -TargetFqdn FrontEndPoolFQDN -SenderSipAddress sip:TestUser@contoso.com@bmw-brilliance.cn -ReceiverSipAddress sip:TestUser2@contoso.com | select -ExpandProperty Result

#用户登陆功能#
Test-CsRegistration -TargetFqdn FrontEndPoolFQDN -UserSipAddress sip:TestUser@contoso.com@bmw-brilliance.cn | select -ExpandProperty Result

获取功能状态数据导入数据库

当我们使用这些命令之后,获取到功能状态数据,即可通过Powershell脚本导入到SQL数据库中,脚本如下:

#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
    }
}

Function SQLCommand
{
    param
    (
        [System.Data.SqlClient.SqlConnection]$SQLConnection,
        [string]$command
    )
    $dataset = New-Object System.Data.DataSet
    $dataAdapter = New-Object System.Data.SqlClient.SqlDataAdapter($command,$SQLConnection)
    $dataAdapter.Fill($dataset) | Out-Null
    return $dataset.Tables[0]
} 


#Test Presence 
$User = "domain\username"
$PWord = ConvertTo-SecureString -String "Password" -AsPlainText -Force
$UserCredential = New-Object -TypeName "System.Management.Automation.PSCredential" -ArgumentList $User,$PWord

#$TestPresence = Test-CsPresence -TargetFqdn FrontendPoolFQDN -SubscriberSipAddress "sip:user@contoso.com" -SubscriberCredential $UserCredential -PublisherSipAddress "sip:user@contoso.com" -PublisherCredential $UserCredential | select -ExpandProperty Result

#Test AV Conf
$TestAVConf = Test-CsAVConference -TargetFqdn FrontendPoolFQDN -SenderSipAddress sip:Testuse1@Contoso.com -ReceiverSipAddress sip:Testuse2@Contoso.com | select -ExpandProperty Result

#Test ABS
$TestABS = Test-CsAddressBookService -TargetFqdn FrontendPoolFQDN -UserSipAddress sip:Testuse1@Contoso.com | select -ExpandProperty Result

#Test AV Edge
$TestAVEdge = Test-CsAVEdgeConnectivity -TargetFqdn FrontendPoolFQDN -UserSipAddress sip:Testuse1@Contoso.com | select -ExpandProperty Result

#Test IM
$TestIM = Test-CsIM -TargetFqdn FrontendPoolFQDN -SenderSipAddress sip:Testuse1@Contoso.com -ReceiverSipAddress sip:Testuse2@Contoso.com | select -ExpandProperty Result

#Test p2p AV
$TestP2PAV = Test-CsP2PAV -TargetFqdn FrontendPoolFQDN -SenderSipAddress sip:Testuse1@Contoso.com -ReceiverSipAddress sip:Testuse2@Contoso.com | select -ExpandProperty Result

#Test PSTN P2P
$TestPstnP2P = Test-CsPstnPeerToPeerCall -TargetFqdn FrontendPoolFQDN -SenderSipAddress sip:Testuse1@Contoso.com -ReceiverSipAddress sip:Testuse2@Contoso.com | select -ExpandProperty Result

#Test Registration
#$TestRegistration = Test-CsRegistration -TargetFqdn FrontendPoolFQDN -UserSipAddress sip:Testuse1@Contoso.com | select -ExpandProperty Result


$array = @{
         "Presence" = "$TestPresence";
         "AVConf" = "$TestAVConf";
         "ABS" = "$TestABS";
         "AVEdge" = "$TestAVEdge";
         "IM" = "$TestIM";
         "P2PAV" = "$TestP2PAV";
         "PstnP2P" = "$TestPstnP2P";
         "Registration" = "$TestRegistration"

}

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

$Server = 'DBServer'
$DBName = 'DBName'
$userName = "Username" 
$Cred = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR((ConvertTo-SecureString $EncryptedPassword)))

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

$num = 10
foreach($i in $array.Keys){ 
    
    #$num += 1
    $FunctionName = $i
    $Result = $i+": "+ $array[$i]

    $cmd = "INSERT INTO Skype_FunctionCheck VALUES ('$converttime','$num','$Result')"
    SQLCommand -SQLConnection $conn -command $cmd

}

导入完成后,我们看到的示例数据如下,其中包括了Skype服务器的功能状态数据:

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

注:由于Grafana是时序结构的Dashboard,展示时需要时间和value对应,所以在此我们插入了Num=10,仅仅是为了方便之后调用,而并没有任何实际意义。

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

之后我们即可创建一个任务计划,以调用前文中的脚本,将数据导入到SQL表中。由于任务计划在此系列前面的文章中已经有所展示,将不在此文中赘述。

在Grafana中创建Dashboard

我们导航到Grafana Dashboard界面,之后点击左侧的➕:

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

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

使用Grafana监控Lync/Skype服务器(五)_监控_03

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

使用Grafana监控Lync/Skype服务器(五)_监控_04

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

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

在General界面,为Dashboard命名,之后保存:

使用Grafana监控Lync/Skype服务器(五)_监控_06

Dashboard最终效果展示

最终我们得到了如下展示Skype功能状态的Dashboard,效果如下:

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

本章总结

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

  • 如何获取Skype功能状态数据
  • 如何将数据导入到SQL Server表
  • 如何通过Grafana展示实时状态

此系列的下一章,也将是我们系列文章的最后一篇,我们将继续使用Grafana来展示Skype服务器端的报错TOP 10以及用户TOP的监控数据。

举报

相关推荐

0 条评论