Как повысить читабельность отчётов Symantec Backup Exec for Windows Server (BEWS)
Все настройки применялись на версии Symantec BEWS 2010 Version 13.0 Rev. 2896 (32-bit).
Чтобы повысить информативность и читабельность отчётов, предоставляемых встроенными средствами Symantec BEWS мы сделали следующие изменения:
- Отчёт, отправляемый по электронной почте, размещается в теле письма.
Поэтому, чтобы его прочесть – достаточно открыть письмо. - Поле статуса задания (Status) мы выделили цветом.
Теперь достаточно быстро посмотреть на отчёт, чтобы найти сбойные задания, не вчитываясь в поле описания статуса. - Преобразовать скорость выполнения работы из MB/Minute в MB/Sec.
Чтобы каждый раз не делать эту операцию в уме
Чтобы увидеть разницу сравните отчёт оригинальный и доработанный отчёты.
Как разместить отчёт в теле письма электронной почты описано в этой статье: "Как настроить отправку отчётов Symantec Backup Exec for Windows Server (BEWS) в теле письма HTML.doc"
Теперь расскажем, как сделать оставшиеся изменения.
Мы используем стандартный ежедневный отчёт Jobs Summary. Его можно найти BEWS в Reports -> Standard Reports -> Jobs -> Job Summary.
Поэтому для нашего задания Symantec использует следующие файлы и процедуру SQL:
1. "C:\Program Files\Symantec\Backup Exec\Reports\dailyjobs_en.rdl"
2. "C:\Program Files\Symantec\Backup Exec\Reports\dailyjobs_ru.rdl"
3. процедура формирования ежедневного отчёта [ReportDailyJobs] в базе SQL [BEDB]
Изменять будем оба файла, чтобы мы получили одинаковый отчёт, независимо от языковой настройки операционной системы. Изменения во втором файле проводятся аналогично, с поправкой на русский язык. Я покажу изменения лишь для первого файла.
Делаем резервную копию файла dailyjobs_en.rdl. Редактируем его следующим образом:
- Ищем значение “MB/Minute” и заменяем его на “MB/Sec”.
Строку
<Value rd:LocID="0">MB/Minute</Value>
меняем на
<Value rd:LocID="0">MB/Sec</Value>
- Ищем значение “TotalRateMBMin.Value” и заменяем его на “TotalRateMBSec.Value”.
Строка
<Value>=Iif(Fields!TotalRateMBMin.Value < 0, 0, Fields!TotalRateMBMin.Value)</Value>
измениться на
<Value>=Iif(Fields!TotalRateMBSec.Value < 0, 0, Fields!TotalRateMBSec.Value)</Value>
- Ищем значение “TotalRateMBMin” и меняем его на “TotalRateMBSec”.
Строки
<Field Name="TotalRateMBMin">
<DataField>TotalRateMBMin</DataField>
изменятся на
<Field Name="TotalRateMBSec">
<DataField>TotalRateMBSec</DataField>
- Ищем строку “<Textbox Name="textbox23">”. Это элемент отчёта столбца Status. Чтобы его раскрасить нам нужно скопировать оператор switch для значения и определить цвет фона и шрифта для каждой работы (элемент для шрифта нужно будет добавить). Мы сделали так:
Строки
<Textbox Name="textbox23">
<ZIndex>1</ZIndex>
<Style>
<TextAlign>Center</TextAlign>
<PaddingLeft>2pt</PaddingLeft>
<PaddingBottom>2pt</PaddingBottom>
<FontFamily>Times New Roman</FontFamily>
<BackgroundColor>White</BackgroundColor>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
</Style>
<CanGrow>true</CanGrow>
<Value rd:LocID="-1">=Switch(Fields!FinalJobStatus.Value = 18, "Scheduled",
Fields!FinalJobStatus.Value = 11, "Scheduled (On hold)",
Fields!FinalJobStatus.Value = 4, "Start queued",
Fields!FinalJobStatus.Value = 16, "Running",
Fields!FinalJobStatus.Value = 19, "Completed (Success)",
Fields!FinalJobStatus.Value = 3, "Completed (Exceptions)",
Fields!FinalJobStatus.Value = 9, "Missed Job",
Fields!FinalJobStatus.Value = 12, "Queued",
Fields!FinalJobStatus.Value = 17, "Ready",
Fields!FinalJobStatus.Value = 2, "Completed (Success)",
Fields!FinalJobStatus.Value = 6, "Failed",
Fields!FinalJobStatus.Value = 1, "Cancelled",
Fields!FinalJobStatus.Value = 5, "Hold",
Fields!FinalJobStatus.Value = 10, "Not in availability window",
Fields!FinalJobStatus.Value = 14, "Resource disabled",
Fields!FinalJobStatus.Value = 20, "Superseded",
Fields!FinalJobStatus.Value = 22, "To be scheduled",
Fields!FinalJobStatus.Value = 13, "Recovered",
Fields!FinalJobStatus.Value = 7, "Invalid time window"
)</Value>
</Textbox>
меняются на
<Textbox Name="textbox23">
<ZIndexe>1e</ZIndex>
<Style>
<TextAligne>Centere</TextAlign>
<PaddingLefte>2pte</PaddingLeft>
<PaddingBottome>2pte</PaddingBottom>
<FontFamily>Times New Roman</FontFamily>
<BackgroundColor>=Switch(Fields!FinalJobStatus.Value = 18, "White",
Fields!FinalJobStatus.Value = 11, "White",
Fields!FinalJobStatus.Value = 4, "White",
Fields!FinalJobStatus.Value = 16, "Lime",
Fields!FinalJobStatus.Value = 19, "Green",
Fields!FinalJobStatus.Value = 3, "Yellow",
Fields!FinalJobStatus.Value = 9, "Red",
Fields!FinalJobStatus.Value = 12, "Yellow",
Fields!FinalJobStatus.Value = 17, "Lime",
Fields!FinalJobStatus.Value = 2, "Green",
Fields!FinalJobStatus.Value = 6, "Red",
Fields!FinalJobStatus.Value = 1, "Red",
Fields!FinalJobStatus.Value = 5, "White",
Fields!FinalJobStatus.Value = 10, "Yellow",
Fields!FinalJobStatus.Value = 14, "Yellow",
Fields!FinalJobStatus.Value = 20, "Yellow",
Fields!FinalJobStatus.Value = 22, "Yellow",
Fields!FinalJobStatus.Value = 13, "Blue",
Fields!FinalJobStatus.Value = 7, "Yellow"
)</BackgroundColor>
<Color>=Switch(Fields!FinalJobStatus.Value = 18, "Black",
Fields!FinalJobStatus.Value = 11, "Black",
Fields!FinalJobStatus.Value = 4, "Black",
Fields!FinalJobStatus.Value = 16, "Black",
Fields!FinalJobStatus.Value = 19, "White",
Fields!FinalJobStatus.Value = 3, "Black",
Fields!FinalJobStatus.Value = 9, "White",
Fields!FinalJobStatus.Value = 12, "Black",
Fields!FinalJobStatus.Value = 17, "Black",
Fields!FinalJobStatus.Value = 2, "White",
Fields!FinalJobStatus.Value = 6, "White",
Fields!FinalJobStatus.Value = 1, "White",
Fields!FinalJobStatus.Value = 5, "Black",
Fields!FinalJobStatus.Value = 10, "Black",
Fields!FinalJobStatus.Value = 14, "Black",
Fields!FinalJobStatus.Value = 20, "Black",
Fields!FinalJobStatus.Value = 22, "Black",
Fields!FinalJobStatus.Value = 13, "White",
Fields!FinalJobStatus.Value = 7, "Black" )
</Color>
<PaddingRight>2pte</PaddingRight>
<PaddingTop>2pte</PaddingTop>
</Style>
<CanGrow>truee</CanGrow>
<Value rd:LocID="-1">=Switch(Fields!FinalJobStatus.Value = 18, "Scheduled",
Fields!FinalJobStatus.Value = 11, "Scheduled (On hold)",
Fields!FinalJobStatus.Value = 4, "Start queued",
Fields!FinalJobStatus.Value = 16, "Running",
Fields!FinalJobStatus.Value = 19, "Completed (Success)",
Fields!FinalJobStatus.Value = 3, "Completed (Exceptions)",
Fields!FinalJobStatus.Value = 9, "Missed Job",
Fields!FinalJobStatus.Value = 12, "Queued",
Fields!FinalJobStatus.Value = 17, "Ready",
Fields!FinalJobStatus.Value = 2, "Completed (Success)",
Fields!FinalJobStatus.Value = 6, "Failed",
Fields!FinalJobStatus.Value = 1, "Cancelled",
Fields!FinalJobStatus.Value = 5, "Hold",
Fields!FinalJobStatus.Value = 10, "Not in availability window",
Fields!FinalJobStatus.Value = 14, "Resource disabled",
Fields!FinalJobStatus.Value = 20, "Superseded",
Fields!FinalJobStatus.Value = 22, "To be scheduled",
Fields!FinalJobStatus.Value = 13, "Recovered",
Fields!FinalJobStatus.Value = 7, "Invalid time window"
)</Value>
</Textbox>
Теперь исправим в процедуре формирования ежедневного отчёта [ReportDailyJobs] в базе SQL [BEDB] поле TotalRateMBMin на новое поле TotalRateMBSec. Для этого выполняем следующие действия:
- Подключаемся к экземпляру базы данных SERVER\BKUPEXEC c помощью Microsoft SQL Server Management Studio;
- Находим процедуру [ReportDailyJobs] по пути: BEDB -> Programmability -> Stored Procedures -> dbo.ReportDailyJobs.
- Экспортируем её в новое окно редактора через Script Stored Procedures as -> CREATE To -> New Query Editor Windows;
- Строку
JobHistory.TotalRateMBMin,
на
(JobHistory.TotalRateMBMin/60 as real) AS TotalRateMBSec,
- Удаляем старую процедуру [ReportDailyJobs] из базы данных;
- Создаём процедуру [ReportDailyJobs], выполнив её из только что созданного окна.
На этом все изменения закончены. Теперь для проверки можно выполнить вручную создание нового отчёта из консоли управления Symantec BEWS и убедится в отсутствии ошибок. Если же Вы получили сообщение об ошибке, то её нужно искать в только что сделанных изменениях.
Вы можете воспользоваться нашими модернизированными файлами:




