Руководство пользователя IBTransaction Monitor
Дмитрий Кузьменко, 08-июн-2008
IBSurgeon Transaction Monitor (IBTM) - это программный пакет, предназначенный для мониторинга, просмотра и анализа динамических транзакций в базах данных InterBase и Firebird.
Содержание
Руководство пользователя IBSurgeon Transaction Monitor. {C}{C}{C}{C}1{C}{C}{C}{C}{C}{C}{C}{C}{C}
Что внутри?. {C}{C}{C}{C}2{C}{C}{C}{C}{C}{C}{C}{C}{C}
Монитор{C}{C}{C}{C}2{C}{C}{C}{C}{C}{C}{C}{C}{C}
Что регистрируется в журнале?. {C}{C}{C}{C}2{C}{C}{C}{C}{C}{C}{C}{C}{C}
Мастер настройки{C}{C}{C}{C}3{C}{C}{C}{C}{C}{C}{C}{C}{C}
Использование мастера настройки{C}{C}{C}{C}4{C}{C}{C}{C}{C}{C}{C}{C}{C}
Управление службой монитора. {C}{C}{C}{C}4{C}{C}{C}{C}{C}{C}{C}{C}{C}
Настройка серверов. {C}{C}{C}{C}4{C}{C}{C}{C}{C}{C}{C}{C}{C}
Настройка баз данных. {C}{C}{C}{C}5{C}{C}{C}{C}{C}{C}{C}{C}{C}
Визуализатор{C}{C}{C}{C}8{C}{C}{C}{C}{C}{C}{C}{C}{C}
Типы графического представления. {C}{C}{C}{C}13{C}{C}{C}{C}{C}{C}{C}{C}{C}
Техническая поддержка{C}{C}{C}{C}16{C}{C}{C}{C}{C}{C}{C}{C}{C}
Пакет IBTM содержит три основных модуля:
- Монитор - небольшая программа на основе службы Win32 для мониторинга и регистрации состояний транзакций из одной или нескольких баз данных.
- Мастер настройки - для настройки параметров монитора и визуализатора.
- Визуализатор - предназначен для просмотра и анализа информации, регистрируемой монитором.
Монитор - это небольшая программа на основе службы Win32 (ibtm.exe), которая работает на Windows NT, 2000, XP и Windows Server 2003 и 2008 (как 32-, так и 64-разрядных). При запуске монитор считывает настройки (заданные мастером настройки) и отслеживает указанную базу данных. Во время мониторинга он подключается к базе данных каждую минуту (рекомендуемый интервал по умолчанию) и считывает состояние транзакций.
Если InterBase или Firebird работает на Windows, монитор можно установить на сервере, где находится база данных. Для серверов на базе Linux его можно установить на любом компьютере с Windows, имеющем сетевой доступ к серверу InterBase или Firebird. Установить монитор можно следующими способами:
- С помощью мастера настройки
- Из окна командной строки
Важно! Перед началом установки монитора необходимо убедиться, что вы вошли в Windows с правами и привилегиями администратора. Монитор будет установлен как служба с автоматическим запуском под учетной записью локальной системы.
Поскольку монитор лишь периодически подключается к базе данных и записывает собранную информацию в обычный текстовый файл журнала, нет необходимости применять какие-либо дополнительные правила. Однако, если вы хотите защитить конфигурацию монитора и данные для входа в базу данных, вы должны изменить параметры службы монитора и доступ к его каталогу (и журналу) по мере необходимости через панель управления службами Windows.
Параметры конфигурации монитора будут рассмотрены в мастере настройки.
Монитор периодически проверяет страницу заголовка базы данных, а затем сохраняет информацию о транзакциях базы данных в журнал следующим образом:
- Время регистрации
- Номер самой старой транзакции
- Номер самой старой транзакции моментального снимка
- Номер самой старой активной транзакции
- Номер следующей транзакции
- Количество активных транзакций (зависит от версии сервера)
Эта информация сохраняется в файле журнала и затем может быть просмотрена и проанализирована с помощью визуализатора. Используя визуальную информацию о состоянии транзакций, вы можете понять, как долго ваши приложения держат транзакции открытыми, сколько одновременных транзакций выполняется, как долго выполняются транзакции моментального снимка, когда наблюдается наиболее интенсивное время запуска транзакций приложениями и т. д.
Примечание: Монитор регистрирует информацию о состоянии транзакций в локальном файле журнала. Он не отправляет эту или любую другую информацию по сети.
Мастер настройки (ibtmconfig.exe) используется для установки параметров конфигурации монитора и визуализатора. Он сохраняет параметры конфигурации в файле ibtm.ini.
! В Windows Vista или Windows 7 необходимо запускать мастер настройки с правами администратора (правый щелчок мыши), иначе он не сможет управлять службой IBTM (Ошибка 5, отказано в доступе).
Совет! IBTM не использует реестр для хранения параметров конфигурации, поэтому вы можете подготовить конфигурацию на одном компьютере, а затем перенести ibtm.ini на другой компьютер, где установлен монитор (для чтения новой конфигурации необходимо перезапустить службу монитора).
Монитор и мастер настройки размещаются установщиком IBTM в одном каталоге, чтобы монитор и мастер настройки использовали один и тот же файл конфигурации (ibtm.ini).

Мастер настройки помогает вам:
- Управлять службой монитора - устанавливать, удалять, запускать, останавливать, приостанавливать и перезапускать.
- Указывать серверы InterBase или Firebird, на которых находятся базы данных, требующие мониторинга.
- Указывать базы данных и параметры мониторинга/планирования для конкретной базы данных.

При запуске мастер настройки определяет состояние службы монитора в системе.
Установка монитора - если служба монитора не установлена, вы увидите сообщение «не установлена» в метке состояния IBTM в левом верхнем углу. Чтобы установить монитор, нажмите кнопку «Установить» в правой части окна. Обратите внимание, что служба монитора будет использовать значение флажка «Тип запуска» (автоматический или ручной). Если установка службы монитора прошла успешно, вы увидите, что состояние IBTM изменится на «остановлена», и кнопка «Запустить службу» станет доступной.
Вам необходимо перезапускать службу монитора при каждом изменении параметров конфигурации базы данных.
IBTM использует протокол подключения TCP/IP для доступа к базе(ам) данных для мониторинга. Поэтому, если вы установили монитор на том же компьютере, на котором находится сервер, вам необходимо добавить сервер как localhost или имя хоста сервера. После этого вы сможете добавить базы данных, которые будут отслеживаться на этом сервере.
В этой версии IBTM вы можете отслеживать только одну базу данных за раз. Для одновременного мониторинга одной или нескольких баз данных требуются дополнительные лицензии. Пожалуйста, свяжитесь с нами для получения подробной информации (www.ibphoenix.com).
Однако вы можете настроить несколько серверов и баз данных и переключаться между ними, чтобы выбрать базу данных для мониторинга (активная база данных будет выделена жирным шрифтом). С дополнительными лицензиями вы сможете отслеживать несколько баз данных одновременно.
Используйте кнопки «Добавить сервер» и «Добавить базу данных» в левой части списка баз данных.
Каждая запись базы данных может быть настроена со следующими параметрами:
Метод получения статистики. Это зависит от версии сервера и поддерживает различные возможности. Каждый метод описан с его преимуществами и недостатками:
| Services API | Firebird API | TMP$ таблицы | |
| InterBase 4.x/5.x | Нет | Нет | Нет |
| InterBase 6.0 Classic | Нет | Нет | Нет |
| Firebird Classic - 1.0, 1.5.0, 1.5.1, 1.5.2 |
Нет | Да | Нет |
| InterBase 6.x SuperServer | Да | Нет | Нет |
| InterBase 7.x/2007 | Да | Нет | Да |
| Firebird Classic и SuperServer: 1.5.3, 1.5.4 /2.0 | Да | Да | Нет |
Различия между Services API, Firebird API и TMP$ таблицами:
| Метод | Преимущества | Недостатки |
| Services API Публичный API, представленный в InterBase 6.0 SuperServer |
- Универсальный метод, работает со всеми версиями InterBase и Firebird - Не влияет на следующую транзакцию |
- Не имеет возможности определить реальное количество активных транзакций - Может показывать устаревшую информацию, если сервер редко сохраняет страницу заголовка базы данных на диск (InterBase V7.1/V7.5) |
| Firebird API
Firebird начиная с V1.0 имеет расширенные параметры для вызова isc_database_info, которые позволяют возвращать информацию о состоянии транзакций. | Позволяет получить информацию о количестве активных транзакций (не более 4676 активных транзакций) | - Не поддерживается ни одной версией InterBase
- Внутренне увеличивает значение Next transaction. Монитор будет увеличивать Next transaction на +1 каждый раз при подключении к базе данных. Если в это время в базе данных нет активности транзакций, номера Oldest Active, Oldest Snapshot и Oldest transaction останутся неизменными.
Если в базе данных нет никакой активности, сам Монитор будет увеличивать Next transaction на +1440 за 24 часа, если он настроен на проверку базы данных каждую (1) минуту.
(Сам Firebird API не оказывает такого эффекта. Описанное поведение характерно для метода isc_database_info) |
| TMP$ таблицы
Были введены в InterBase 7.0 для мониторинга состояния сервера | - Позволяет получить фактическое состояние транзакций из InterBase V7.x/V2007, включая количество активных транзакций.
- Для получения информации о состоянии транзакций Монитор запускает транзакцию с параметрами read_only read_committed rec_version. Такая транзакция не считается активной для целей учёта транзакций и не влияет на производительность сервера или базы данных. | - Поддерживается только InterBase V7.0/V7.1/V7.5/V2007
- Как и в случае с Firebird API, увеличивает номер Next transaction, поскольку чтение данных из таблиц TMP$ должно выполняться в рамках транзакции.
- Время доступа немного больше, чем при использовании Services API (< 0,5 секунды). |
Если вы выбрали метод сбора статистики, несовместимый с вашим сервером, в журнал транзакций Монитора ничего не будет записано. Проверьте вкладку Error log в Configuration Assistant, чтобы увидеть ошибки, которые могут возникать при мониторинге базы данных.
Check Interval. Этот параметр определяет, как часто Монитор получает информацию о транзакциях из базы данных. Минимальный интервал - 1 минута. Вы можете установить интервал 1, 3, 5, 10, 20, 30 минут или даже 1 час, но наиболее информативным является интервал 1 или 3 минуты.
При использовании 1-минутного интервала Монитор будет проверять состояние транзакций базы данных 1440 раз каждые 24 часа. Размер файла журнала составит ~150 килобайт.
Start time и End Time. Если это не задано, Монитор будет собирать статистику с указанной базы данных всё время своей работы. Если задан временной предел, Монитор будет работать только в течение указанного периода времени.
User name и Password. Имя пользователя и пароль для учётной записи, которая будет использоваться для мониторинга состояния транзакций базы данных. Вы можете использовать логин SYSDBA или любой другой логин пользователя. Если используется логин, отличный от SYSDBA, для методов Services API и Firebird API не требуется предоставлять дополнительные привилегии для этой учётной записи. Вы можете создать пользователя, например ‘TM’, и Монитор будет работать успешно.
Для временных системных таблиц (IB V7.1, V7.5, V2007) логин пользователя должен иметь права на чтение таблиц TMP$TRANSACTIONS и TMP$DATABASES. Если вы используете встроенную аутентификацию пользователей (Embedded User Authentification) в вашей базе данных InterBase V7.5/V2007, вам необходимо создать логин и явно предоставить эти права доступа для этой базы данных.
Кнопка Test Server Connection.

Позволяет проверить указанный сервер на предмет наилучшего метода мониторинга транзакций. Вы также можете использовать эту кнопку, чтобы проверить, работает ли выбранный метод для указанного сервера.
Visualizer может просматривать информацию о транзакциях, собранную Монитором. Базовый каталог для файлов .tmd берётся из настроек Configuration Assistant.

В левой части вы видите список файлов статистики. По умолчанию Viewer просматривает папку Log, которая находится в базовой папке установки. Вы можете изменить эту папку с помощью Configuration Assistant или открыть нужную папку через пункт меню Viewer.
Нажмите на файл статистики - он сразу же отобразится на графике. Вы можете просматривать несколько файлов статистики одновременно, удерживая клавишу Ctrl или Shift и нажимая на файлы статистики:

В левом нижнем углу вы можете включать и выключать различные линии графика (Next, Oldest…). Например, если вы хотите просмотреть динамику транзакций, включите Next dynamic - он покажет, сколько новых транзакций было запущено между считываниями IBTM из базы данных:

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

Вы также можете увеличивать или уменьшать масштаб интервала по горизонтали, вертикали или в обоих направлениях. Чтобы вернуть график в исходное состояние, нажмите кнопку Reset Zoom (или уменьшите масштаб с помощью мыши в противоположном направлении).

Важно! Если данные статистики IBTM были собраны с использованием методов доступа Firebird или InterBase 7.x, вы можете просмотреть реальное количество активных транзакций.

Этот график показывает, что 10 ноября 2005 года было от 65 до 105 активных транзакций, открытых приложениями. Также видно, что во время обеденного перерыва (с 13:00 до 14:00) всё ещё было около 80 активных транзакций. Это означает, что:
- пользователи не закрывают приложения, когда уходят на обед
- приложения имеют открытые и активные транзакции
Используя эту информацию, вы можете сделать выводы о том, что может быть не так в работе приложений. Это будет зависеть от того, сколько транзакций напрямую управляется приложениями.
Есть три кнопки, которые изменяют вид графика:
Relative (oldest). Вычисляется путём вычитания номера Oldest transaction или Oldest snapshot (в зависимости от того, что меньше) из номеров Next и Oldest Active transaction. Позволяет увидеть разрыв полуактивных транзакций, глядя на легенду в левой части графика. Вот пример предыдущего графика с включённой кнопкой Relative:

AutoMin. По умолчанию при открытии любого файла статистики IBTM наименьший номер транзакции автоматически принимается за “0”. Обычно это Oldest (интересующая) транзакция или Oldest Snapshot.

Abs. Позволяет увидеть поток номеров транзакций и разницу для больших номеров транзакций. На предыдущих изображениях наименьший номер транзакции составлял около 7 миллионов, что затрудняло понимание разницы, например, между Oldest и Next транзакциями. Здесь мы видим, что для этой статистики разница данных составляла не более 18000 транзакций.

Если вы хотите получить профессиональное объяснение поведения транзакций для вашей базы данных, вы, вероятно, захотите заказать нашу техническую поддержку. Подробнее о наших услугах здесь.
Также, пожалуйста, не стесняйтесь обращаться к нам с любыми вопросами по электронной почте [email protected].