Посібник користувача 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 з правами та привілеями адміністратора. Монітор буде встановлено як службу з автоматичним запуском під обліковим записом Localsystem.
Оскільки Монітор лише періодично підключається до бази даних і записує зібрану інформацію у звичайний текстовий файл журналу, немає потреби застосовувати додаткові правила. Однак, якщо ви хочете захистити конфігурацію Монітора та дані для входу в базу даних, ви повинні змінити параметри служби Монітора та доступ до його каталогу (і журналу) за потреби через Панель керування службами Windows.
Параметри конфігурації Монітора будуть розглянуті в Майстрі налаштування.
Монітор періодично перевіряє сторінку заголовка бази даних, а потім зберігає інформацію про транзакції бази даних у журнал, наступним чином:
- Час запису
- Номер найстарішої транзакції
- Номер найстарішої транзакції знімка
- Номер найстарішої активної транзакції
- Номер наступної транзакції
- Кількість активних транзакцій (залежить від версії сервера)
Ця інформація зберігається у файлі журналу, і її можна переглядати та аналізувати за допомогою Візуалізатора. Використовуючи візуальну інформацію про стан транзакцій, ви можете зрозуміти, як довго ваші застосунки тримають транзакції відкритими, скільки одночасних транзакцій виконується, як довго виконуються транзакції знімка, коли є найінтенсивніший час запуску транзакцій застосунками тощо.
Примітка: Монітор записує інформацію про стан транзакцій у локальний файл журналу. Він не надсилає цю чи будь-яку іншу інформацію через мережу.
Майстер налаштування (ibtmconfig.exe) використовується для встановлення параметрів конфігурації Монітора та Візуалізатора. Він зберігає параметри конфігурації у файлі ibtm.ini.
! У Windows Vista або Windows 7 потрібно запускати Майстер налаштування з правами адміністратора (правий клік миші), інакше він не зможе керувати службою IBTM (Помилка 5, доступ заборонено).
Порада! IBTM не використовує реєстр для зберігання параметрів конфігурації, тому ви можете підготувати конфігурацію на одному комп’ютері, а потім перенести ibtm.ini на інший комп’ютер, де встановлено Монітор (службу Монітора потрібно перезапустити, щоб вона прочитала нову конфігурацію).
Монітор і Майстер налаштування розміщуються інсталятором IBTM в одному каталозі, тому Монітор і Майстер налаштування використовують спільний файл конфігурації (ibtm.ini).

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

Коли Майстер налаштування запускається, він визначає стан служби Монітора в системі.
Встановлення Монітора - якщо службу Монітора не встановлено, ви побачите повідомлення “не встановлено” у полі стану IBTM у лівому верхньому куті. Щоб встановити Монітор, натисніть кнопку Install (Встановити) у правій частині вікна. Зверніть увагу, що служба Монітора використовуватиме значення прапорця типу запуску (автоматичний або ручний). Якщо встановлення служби Монітора пройшло успішно, ви побачите, що стан IBTM зміниться на “зупинено”, і кнопка “Запустити службу” стане активною.
Вам потрібно перезапускати службу Монітора щоразу, коли ви змінюєте будь-які параметри конфігурації бази даних.
IBTM використовує протокол підключення TCP/IP для доступу до баз даних з метою моніторингу. Отже, якщо ви встановили Монітор на тому ж комп’ютері, де знаходиться сервер, вам потрібно додати сервер як localhost або ім’я хоста сервера. Після цього ви зможете додавати бази даних, які будуть моніторитися на цьому сервері.
У цій версії IBTM ви можете моніторити лише одну базу даних одночасно. Для моніторингу однієї або кількох баз даних одночасно потрібні додаткові ліцензії. Будь ласка, зв’яжіться з нами для отримання деталей (www.ibphoenix.com).
Однак ви можете налаштувати кілька серверів і баз даних і перемикатися між ними, щоб вибрати базу даних для моніторингу (активна база даних буде виділена жирним шрифтом). З додатковими ліцензіями ви зможете моніторити кілька баз даних одночасно.
Використовуйте кнопки Add Server (Додати сервер) і Add Database (Додати базу даних) у лівій частині списку баз даних.
Кожен запис бази даних можна налаштувати з такими параметрами:
Метод отримання статистики. Це залежить від версії сервера та підтримує різні можливості. Кожен метод описується з його перевагами та недоліками:
| Services API | Firebird API | TMP$ tables | |
| 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$ tables:
| Метод | Переваги | Недоліки |
| Services API Публічний API, представлений в InterBase 6.0 SuperServer |
- Універсальний метод, працює з усіма версіями InterBase і Firebird - Не впливає на Next transaction |
- Не має можливості визначити реальну кількість активних транзакцій - Може показувати застарілу інформацію, якщо сервер рідко зберігає сторінку заголовка бази даних на диск (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$ tables
Були введені в 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 and End Time. Якщо це не встановлено, Монітор збиратиме статистику з вказаної бази даних весь час своєї роботи. Якщо встановлено обмеження часу, Монітор працюватиме лише протягом вказаного періоду.
User name and 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].