mirror of
https://github.com/centreon/centreon-plugins.git
synced 2025-09-25 10:48:40 +02:00
enh(apps::backup::veeam::local::jobstatus): Add Veeam Agent compatibility for jobs monitoring (#5730)
Refs:CTOR-1801
This commit is contained in:
parent
d4b7084fac
commit
ddbf4b6bb5
@ -42,59 +42,120 @@ $culture = new-object "System.Globalization.CultureInfo" "en-us"
|
|||||||
|
|
||||||
$ps .= '
|
$ps .= '
|
||||||
|
|
||||||
Try {
|
Try {
|
||||||
$ErrorActionPreference = "Stop"
|
$ErrorActionPreference = "Stop"
|
||||||
|
|
||||||
$items = New-Object System.Collections.Generic.List[Hashtable];
|
$items = New-Object System.Collections.Generic.List[Hashtable];
|
||||||
|
|
||||||
$sessions = @{}
|
$isVeeamAgent=$false
|
||||||
Get-VBRBackupSession | Sort CreationTimeUTC -Descending | ForEach-Object {
|
$vbrjob=Get-VBRJob
|
||||||
$jobId = $_.jobId.toString()
|
|
||||||
if (-not $sessions.ContainsKey($jobId)) {
|
|
||||||
$sessions[$jobId] = New-Object System.Collections.Generic.List[Hashtable];
|
|
||||||
$session = @{}
|
|
||||||
$session.result = $_.Result.value__
|
|
||||||
$session.creationTimeUTC = (get-date -date $_.CreationTimeUTC.ToUniversalTime() -Uformat ' . "'%s'" . ')
|
|
||||||
$session.endTimeUTC = (get-date -date $_.EndTimeUTC.ToUniversalTime() -Uformat ' . "'%s'" . ')
|
|
||||||
$sessions[$jobId].Add($session)
|
|
||||||
} elseif ($sessions[$jobId].Length -lt 2) {
|
|
||||||
$session = @{}
|
|
||||||
$session.result = $_.Result.value__
|
|
||||||
$session.creationTimeUTC = (get-date -date $_.CreationTimeUTC.ToUniversalTime() -Uformat ' . "'%s'" . ')
|
|
||||||
$session.endTimeUTC = (get-date -date $_.EndTimeUTC.ToUniversalTime() -Uformat ' . "'%s'" . ')
|
|
||||||
$sessions[$jobId].Add($session)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Get-VBRJob | ForEach-Object {
|
if (($vbrjob | Select-Object -first 1).JobType -like "*Agent*") {
|
||||||
$item = @{}
|
$isVeeamAgent=$true
|
||||||
$item.name = $_.Name
|
} else {
|
||||||
$item.type = $_.JobType.value__
|
$isVeeamAgent=$false
|
||||||
$item.isRunning = $_.isRunning
|
}
|
||||||
$item.scheduled = $_.IsScheduleEnabled
|
|
||||||
$item.isContinuous = 0
|
|
||||||
|
|
||||||
if ($_.isContinuous -eq $true) {
|
|
||||||
$item.isContinuous = 1
|
|
||||||
}
|
|
||||||
|
|
||||||
$guid = $_.Id.Guid.toString()
|
$sessions = @{}
|
||||||
if ($sessions.ContainsKey($guid)) {
|
|
||||||
$item.sessions = $sessions[$guid]
|
|
||||||
} else {
|
|
||||||
$item.sessions = New-Object System.Collections.Generic.List[Hashtable];
|
|
||||||
$session = @{}
|
|
||||||
$session.result = -10
|
|
||||||
$session.creationTimeUTC = ""
|
|
||||||
$session.endTimeUTC = ""
|
|
||||||
$item.sessions.Add($session)
|
|
||||||
}
|
|
||||||
|
|
||||||
$items.Add($item)
|
if ($isVeeamAgent) {
|
||||||
}
|
Get-VBRComputerBackupJobSession | Sort-Object CreationTime -Descending | ForEach-Object {
|
||||||
|
$jobId = $_.JobId.toString()
|
||||||
|
if (-not $sessions.ContainsKey($jobId)) {
|
||||||
|
$sessions[$jobId] = New-Object System.Collections.Generic.List[Hashtable];
|
||||||
|
$session = @{}
|
||||||
|
$session.result = $_.Result.value__
|
||||||
|
$session.creationTimeUTC = (get-date -date $_.CreationTime.ToUniversalTime() -Uformat ' . "'%s'" . ')
|
||||||
|
$session.endTimeUTC = (get-date -date $_.EndTime.ToUniversalTime() -Uformat ' . "'%s'" . ')
|
||||||
|
$sessions[$jobId].Add($session)
|
||||||
|
} elseif ($sessions[$jobId].Length -lt 2) {
|
||||||
|
$session = @{}
|
||||||
|
$session.result = $_.Result.value__
|
||||||
|
$session.creationTimeUTC = (get-date -date $_.CreationTime.ToUniversalTime() -Uformat ' . "'%s'" . ')
|
||||||
|
$session.endTimeUTC = (get-date -date $_.EndTime.ToUniversalTime() -Uformat ' . "'%s'" . ')
|
||||||
|
$sessions[$jobId].Add($session)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$jsonString = $items | ConvertTo-JSON-20 -forceArray $true
|
Get-VBRComputerBackupJob | ForEach-Object {
|
||||||
Write-Host $jsonString
|
$item = @{}
|
||||||
|
$item.name = $_.Name
|
||||||
|
$item.type = $_.Type.value__
|
||||||
|
$item.isRunning = $false
|
||||||
|
$item.scheduled = $_.ScheduleEnabled
|
||||||
|
$item.isContinuous = 0
|
||||||
|
|
||||||
|
if ($_.isContinuous -eq $true) {
|
||||||
|
$item.isContinuous = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
$Id = $_.Id.toString()
|
||||||
|
if ($sessions.ContainsKey($Id)) {
|
||||||
|
$item.sessions = $sessions[$Id]
|
||||||
|
if ($sessions[$_.Id].State -eq "Running") {
|
||||||
|
$item.isRunning = $true
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$item.sessions = New-Object System.Collections.Generic.List[Hashtable];
|
||||||
|
$session = @{}
|
||||||
|
$session.result = -10
|
||||||
|
$session.creationTimeUTC = ""
|
||||||
|
$session.endTimeUTC = ""
|
||||||
|
$item.sessions.Add($session)
|
||||||
|
}
|
||||||
|
|
||||||
|
$items.Add($item)
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
Get-VBRBackupSession | Sort-Object CreationTimeUTC -Descending | ForEach-Object {
|
||||||
|
$jobId = $_.jobId.toString()
|
||||||
|
if (-not $sessions.ContainsKey($jobId)) {
|
||||||
|
$sessions[$jobId] = New-Object System.Collections.Generic.List[Hashtable];
|
||||||
|
$session = @{}
|
||||||
|
$session.result = $_.Result.value__
|
||||||
|
$session.creationTimeUTC = (get-date -date $_.CreationTimeUTC.ToUniversalTime() -Uformat ' . "'%s'" . ')
|
||||||
|
$session.endTimeUTC = (get-date -date $_.EndTimeUTC.ToUniversalTime() -Uformat ' . "'%s'" . ')
|
||||||
|
$sessions[$jobId].Add($session)
|
||||||
|
} elseif ($sessions[$jobId].Length -lt 2) {
|
||||||
|
$session = @{}
|
||||||
|
$session.result = $_.Result.value__
|
||||||
|
$session.creationTimeUTC = (get-date -date $_.CreationTimeUTC.ToUniversalTime() -Uformat ' . "'%s'" . ')
|
||||||
|
$session.endTimeUTC = (get-date -date $_.EndTimeUTC.ToUniversalTime() -Uformat ' . "'%s'" . ')
|
||||||
|
$sessions[$jobId].Add($session)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$vbrjob | ForEach-Object {
|
||||||
|
$item = @{}
|
||||||
|
$item.name = $_.Name
|
||||||
|
$item.type = $_.JobType.value__
|
||||||
|
$item.isRunning = $_.isRunning
|
||||||
|
$item.scheduled = $_.IsScheduleEnabled
|
||||||
|
$item.isContinuous = 0
|
||||||
|
|
||||||
|
if ($_.isContinuous -eq $true) {
|
||||||
|
$item.isContinuous = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
$guid = $_.Id.Guid.toString()
|
||||||
|
if ($sessions.ContainsKey($guid)) {
|
||||||
|
$item.sessions = $sessions[$guid]
|
||||||
|
} else {
|
||||||
|
$item.sessions = New-Object System.Collections.Generic.List[Hashtable];
|
||||||
|
$session = @{}
|
||||||
|
$session.result = -10
|
||||||
|
$session.creationTimeUTC = ""
|
||||||
|
$session.endTimeUTC = ""
|
||||||
|
$item.sessions.Add($session)
|
||||||
|
}
|
||||||
|
|
||||||
|
$items.Add($item)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$jsonString = $items | ConvertTo-JSON-20 -forceArray $true
|
||||||
|
Write-Host $jsonString
|
||||||
} Catch {
|
} Catch {
|
||||||
Write-Host $Error[0].Exception
|
Write-Host $Error[0].Exception
|
||||||
exit 1
|
exit 1
|
||||||
@ -112,6 +173,6 @@ __END__
|
|||||||
|
|
||||||
=head1 DESCRIPTION
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
Method to get veeam job status informations.
|
Method to get Veeam job status information.
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
Loading…
x
Reference in New Issue
Block a user