HyperV réplication
De BlaxWiki
Révision datée du 7 février 2021 à 17:15 par Admin (discussion | contributions) (Page créée avec « <pre> <# .SYNOPSIS Script de monitoring de la réplication Hyper-V d'Agarik vers le client Eco-mobilier La réplication a lieu toute les nuits, elle est en suspend la jour... »)
<#
.SYNOPSIS
Script de monitoring de la réplication Hyper-V d'Agarik vers le client Eco-mobilier
La réplication a lieu toute les nuits, elle est en suspend la journée
#>
# Listes des HVs :
$hypervs = @( "hyperv01", "hyperv02")
# Liste des VMs repliquées :
$replicatedVMS = @( "simm-sql1.ecomobilier.fr",
"simm-www1.ecomobilier.fr",
"voyager01.ecomobilier.fr",
"sicol-sql1.ecomobilier.fr",
"sicol-www1.ecomobilier.fr" )
# Heure de début et fin de plage de maintenance
$replStartTime = 21
$replStopTime = 07 #Doit toujours etre le jour d'apres que le script fonctionne
$ErrorActionPreference = "Stop"
Import-Module "$PSScriptRoot\agarik.psm1" -DisableNameChecking
if (((get-date).Hour -ge $replStartTime) -or ((get-date).Hour -lt $replStopTime)) {
$canReplicate = $true
}
else {
$canReplicate = $false
}
# Guess servername by parsing options of the VisionClient Service
try {
$visionService=(gwmi win32_service|?{$_.name -eq "VisionClient"}).pathname
$name=[regex]::match($visionService,'-H ([^\s]+)').Groups[1].Value
}
catch {
throw("Could not guess serverName from Vision Service")
}
if ([string]::IsNullOrEmpty($name)) {
throw("Could not guess serverName from Vision Service")
}
$global:server=$name
$global:service="appli"
Append-Supervision("Status de la réplication : ")
if ($canReplicate) {
Append-Supervision(" &green Active")
}
else {
Append-Supervision(" &clear Suspendue")
}
Append-Supervision(" Plage de réplication : {0}h - {1}h" -f $replStartTime,$replStopTime)
Append-Supervision("`n")
Append-Supervision("Etat de la réplication des VMs :")
Foreach ($vm in $replicatedVMS) {
$rep = Get-VM -ComputerName $hypervs -VMName $vm -ErrorAction SilentlyContinue| Get-VMReplication -ErrorAction Continue
if (!$rep) {
Append-Supervision(" - &red {0,-30} - Pas de configuration de replication" -f $vm)
Raise-Error
}
elseif (($rep.State -eq "Suspended")) {
if (!$canReplicate) {
Append-Supervision(" - &clear {0,-30} - Replication en suspend." -f $vm)
}
else {
Append-Supervision(" - &red {0,-30} - Replication suspendue pendant une periode de replication." -f $vm)
Raise-Error
}
}
elseif (($rep.State -eq "Replicating")) {
if (!$canReplicate) {
Append-Supervision(" - &red {0,-30} - Replication en cours pendant la journee." -f $vm)
Raise-Error
}
else {
Append-Supervision(" - &green {0,-30} - Replication activée." -f $vm)
}
}
else {
Append-Supervision(" - &red {0,-30} - Erreur de replication" -f $vm)
Append-Supervision(" Status : {0} Health : {1} " -f $rep.State,$rep.Health)
Raise-Error
}
# Verification derniere replication
if ($rep) {
if ((New-TimeSpan ($rep.LastReplicationTime) (Get-Date)).Hours -gt 24) {
Append-Supervision(" &red Dernière réplication : {0} " -f $rep.LastReplicationTime)
Raise-Error
}
else {
Append-Supervision(" &green Dernière réplication : {0} " -f $rep.LastReplicationTime)
}
}
Append-Supervision("")
}
Send-Supervision
$global:outputMon=""