пятница, 2 октября 2009 г.

Настройка времени хранения данных в System Center Operations Manager 2007

В процессе работы System Center Operation Manager собирается масса различной информации от объектов мониторинга. Это могут быть данные полученные от счетчиков производительности, системные события, история изменения состояний и многое другое. Бесконтрольный рост объема информации, хранимой в базах данных (OperationsManager и OperationsManagerDW), может вызвать потери в производительности и увеличение времени резервного копирования. В связи с этим, важно определить необходимое время хранения информации от различных типов источников и настроить автоматическое удаление устаревших данных. В статье приведено описание процесса настройки, механизмов контроля и алгоритма очистки БД для System Center Operation Manager 2007 R2.
За хранение данных, полученных в результате мониторинга, отвечают две базы данных OperationsManager и OperationsManagerDW. В последней хранятся долгосрочные данные необходимые для отчетов.
Для OperationsManager всё относительно просто. В консоли управления (Administration -> Settings -> General -> Database Grooming) есть раздел в котором можно задать сроки хранения информации из различных источников (рис. 1).

Рис. 1. Окно настройки сроков хранения данных

Удаление устаревшей информации происходит автоматически каждую полночь. Для ручного выполнения очистки базы данных необходимо самостоятельно выполнить процедуру p_partitioningandgrooming.
Через командную оболочку Operations Manager посмотреть насколько точно соблюдаются сроки хранения данных:
$Threshold = (Get-Date).ToUniversalTime().AddDays(-(get-defaultsetting)[42].Value).Date;Get-Alert Where {$_.TimeResolved -and $_.TimeResolved.Date -lt $Threshold} Measure-Object

Если результат отличен от нуля, то это свидетельствует о том, что сроки не соблюдаются (Рис. 2).

Рис. 2. Результаты проверки автоматического удаления

В моем случае это оказались алерты, которые хранились 8 дней вместо 7. Вероятнее всего, что они удалились бы при следующем автоматическом запуске процедуры очистки. Чтобы проверить это, сократил срок хранения алертов на один день и запустил процедуру вручную и получил желаемый ноль в числе объектов.
С OperationsManagerDW все гораздо интереснее. Для неё нет графического интерфейса по настройке через консоль управления. Просмотр сроков хранения возможен через SQL-запрос:

use OperationsManagerDW;
SELECT AggregationIntervalDurationMinutes, BuildAggregationStoredProcedureName,
GroomStoredProcedureName, MaxDataAgeDays, GroomingIntervalMinutes, MaxRowsToGroom
FROM StandardDatasetAggregation

Результат выполнения запроса представлен на рис.3.

Рис. 3. Таблица сроков хранения различных наборов данных в OperationsManagerDW

AggregationIntervalDurationMinutes - интервал в течении которого собираются данные, MaxDataAgeDays - сколько дней хранится информация, GroomingInterval Minutes - интервал между запусками процедуры удаления.
Скрипт для изменения сроков хранения:

USE OperationsManagerDW
UPDATE StandardDatasetAggregation
SET MaxDataAgeDays =
WHERE GroomStoredProcedureName = '' AND
AggregationIntervalDurationMinutes = ''
Go

Кроме того, существует утилита dwdatarp.exe. Описание её работы и файл программы можно найти здесь:
http://blogs.technet.com/momteam/archive/2008/05/14/data-warehouse-data-retention-policy-dwdatarp-exe.aspx
С помощью данной утилиты можно просмотреть и изменить сроки хранения данных в OperationsManagerDW.
Например, вывод текущей конфигурации осуществляется командой:

dwdatarp.exe –s “dw servername” –d “dw databasename”

У меня получились результаты представленные на рис. 4.

Рис. 4. Просмотр информации с помощью утилиты dwdatarp.exe

В отличие от предыдущего метода, здесь показан объем хранимых данных и их процентное соотношение.
Проверить историю выполнения процедуры очистки можно с помощью запроса:

use operationsmanager;
SELECT * FROM InternalJobHistory Order By InternalJobHistoryId DESC

С помощью запроса можно вручную запустить процедуру удаления из OperationsManagerDW:

USE OperationsManagerDW
Exec standarddatasetgroom

Процедура запускается отдельно для каждого набора данных (необходимо указать id). Узнать id можно из таблицы, содержащей информацию о dataset. Например, в моем случае это будет выглядеть так:

USE OperationsManagerDW
SELECT [BaseManagedEntityId] ,[DisplayName_55270A70_AC47_C853_C617_236B0CFF9B4C]
FROM [OperationsManager].[dbo].[MTV_DataSet]


Соответственно скрипт для запуска процедуры по всем наборам данных:

USE OperationsManagerDW
Exec standarddatasetgroom '160230E3-E315-9350-4108-392A28F60AF5'
Exec standarddatasetgroom '216D2ABC-6FF9-1CCA-47EC-47A87703DFF0'
Exec standarddatasetgroom '53593936-DE62-E265-3764-5F78AF06DE69'
Exec standarddatasetgroom '57FEFB45-A835-4787-6092-D43BA2471EF8'
Exec standarddatasetgroom '0619FC49-ADAF-F064-554E-E99B4817682A'

В заключении приведу обзор ресурсов в интернете, которые использовались при написании этой статьи.
Настройка сроков хранения информации:
http://ops-mgr.spaces.live.com/Blog/cns!3D3B8489FCAA9B51!176.entry

Комментариев нет:

Отправить комментарий