Veeam Backup MP Rule - SureBackup Job Session Finished

Veeam.Backup.SureBackupJob.DatasetWriterRule.JobFinished (Rule)

Knowledge Base article:

Summary

Veeam Backup MP Dataset writer rules are responsible for collecting raw Veeam Backup & Replication data into Ops Mgr Data Warehouse.

Information is being collected into a special Veeam Backup Dataset in the Data Warehouse database.

Element properties:

TargetVeeam.Backup.BackupServer
CategoryEventCollection
EnabledTrue
Alert GenerateFalse
RemotableTrue

Member Modules:

ID Module Type TypeId RunAs 
DS DataSource Veeam.Backup.EventScriptDatasource Default
BulkWA1 WriteAction Veeam.Backup.DW.WA.XmlBulkInsertModule Default

Source Code:

<Rule ID="Veeam.Backup.SureBackupJob.DatasetWriterRule.JobFinished" Target="VBBD!Veeam.Backup.BackupServer" Enabled="true" ConfirmDelivery="false" Remotable="true" Priority="Normal" DiscardLevel="100">
<Category>EventCollection</Category>
<DataSources>
<DataSource ID="DS" TypeID="Veeam.Backup.EventScriptDatasource">
<ComputerName>.</ComputerName>
<LogName>Veeam Backup</LogName>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">EventNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">390</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<ScriptName>BackupJobFinished.js</ScriptName>
<Arguments>"$Data/Params/Param[1]$" "$Data/Params/Param[2]$" "$Data/Params/Param[3]$" $Data/EventNumber$</Arguments>
<ScriptBody><Script>
var _argumentsCount = 4;
var _uid = null;

var _eventId = 3102;
var _momApi = new ActiveXObject("MOM.ScriptAPI");

var _jobSessionId = null;
var _jobId = null;
var _jobResult = null;
var _eventId = null;
var _toGb = 1073741824;

Main();

function Main()
{
try
{
SetGlobalVarsFromArguments();

var pBag = _momApi.CreatePropertyBag();

var sessionQuery = "SELECT * FROM JobSession where InstanceUid=\"" + _jobSessionId + "\"";
var sessionResult = GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\VeeamBS").ExecQuery(sessionQuery);

var backupSize = 0;
var failureMessage = 0;

for (var Repository = new Enumerator(sessionResult); !Repository.atEnd(); Repository.moveNext())
{
backupSize = GetCollectrionItem(Repository, "BackedUpSize") / _toGb;
failureMessage = GetCollectrionItem(Repository, "FailureMessage");
}

SetpBagValue("JobSessionId", _jobSessionId, pBag); //1
SetpBagValue("JobId", _jobId, pBag); //2
SetpBagValue("JobResult", _jobResult, pBag); //3
SetpBagValue("BackupSize", backupSize, pBag); //4
SetpBagValue("EventId", _eventId, pBag); //5
SetpBagValue("FailureMessage", failureMessage, pBag); //6
_momApi.AddItem(pBag);
_momApi.ReturnItems();

} catch (e)
{
_momApi.LogScriptEvent("BackupJobFinished.Main", _eventId, 2, e.message);
}
}

function Sleep(ms)
{
ms += new Date().getTime();
while (new Date() &lt; ms) { }
}

function GetCollectrionItem(collection_in, plropery_in)
{
var vpower = collection_in.item();
var vPowerProps = new Enumerator(vpower.Properties_);
for (; !vPowerProps.atEnd(); vPowerProps.moveNext())
{
var p = vPowerProps.item();
if (p.Name == plropery_in)
{
return p.Value;
}
}
return null;
}

function SetpBagValue(propertyName_in, propertyValue_in, pBag)
{
pBag.AddValue(propertyName_in, (propertyValue_in == null ? "" : propertyValue_in));
}

function SetGlobalVarsFromArguments()
{
if (WScript.Arguments.length != _argumentsCount)
{
_momApi.LogScriptEvent("BackupJobFinished", _eventId, 2, 'BackupCopyJobFinished.SetGlobalVarsFromArguments error');
}
_jobSessionId = WScript.Arguments(0);
_jobId = WScript.Arguments(1);
_jobResult = WScript.Arguments(2);
_eventId = WScript.Arguments(3);
}</Script></ScriptBody>
<TimeoutSeconds>300</TimeoutSeconds>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="BulkWA1" Target="MSDL!Microsoft.SystemCenter.DataWarehouseConnectorServer" TypeID="Veeam.Backup.DW.WA.XmlBulkInsertModule">
<spname>VeeamBackupMP.BackupJobFinishInsert</spname>
</WriteAction>
</WriteActions>
</Rule>