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 .= '
|
||||
|
||||
Try {
|
||||
$ErrorActionPreference = "Stop"
|
||||
Try {
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
$items = New-Object System.Collections.Generic.List[Hashtable];
|
||||
$items = New-Object System.Collections.Generic.List[Hashtable];
|
||||
|
||||
$sessions = @{}
|
||||
Get-VBRBackupSession | Sort 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)
|
||||
}
|
||||
}
|
||||
$isVeeamAgent=$false
|
||||
$vbrjob=Get-VBRJob
|
||||
|
||||
Get-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
|
||||
}
|
||||
if (($vbrjob | Select-Object -first 1).JobType -like "*Agent*") {
|
||||
$isVeeamAgent=$true
|
||||
} else {
|
||||
$isVeeamAgent=$false
|
||||
}
|
||||
|
||||
$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)
|
||||
}
|
||||
$sessions = @{}
|
||||
|
||||
$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
|
||||
Write-Host $jsonString
|
||||
Get-VBRComputerBackupJob | ForEach-Object {
|
||||
$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 {
|
||||
Write-Host $Error[0].Exception
|
||||
exit 1
|
||||
@ -112,6 +173,6 @@ __END__
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
Method to get veeam job status informations.
|
||||
Method to get Veeam job status information.
|
||||
|
||||
=cut
|
||||
|
Loading…
x
Reference in New Issue
Block a user