Мониторинг производительности с Enterprise Workload Manager

Чеким Чуор, тестировщик систем, IBM

Сбор подробной статистики транзакций в вашей рабочей среде может быть критически важным для соответствия требованиям современного бизнеса. Узнайте, как можно установить сквозной мониторинг производительности в функциональном домене IBM Enterprise Workload Manager (EWLM), а также как включить инструментарий Application Response Measurement (ARM) для IBM HTTP Server, WebSphere Application Server (Application Server) и DB2 UDB на AIX и Linux, который позволит вам собирать детальную статистику. В статье также демонстрируется, как устранить неисправности этой реализации.

В настоящее время многоуровневые Web-приложения и кластеры очень распространены в IT-области. Системные администраторы должны знать, как выполняются их Web-приложения, чтобы соответствовать поставленным бизнес-целям или соглашению об уровне сервиса (service level agreements - SLA). Существует несколько инструментальных средств, позволяющих вам производить мониторинг систем и возможностей сети; фактически, большинство программ промежуточного уровня имеют некоторые средства предоставления внутренней статистики. Другие средства и провайдеры служб могут рассказать вам о том, как выполняются ваши приложения с различных точек зрения.

Но очень немногие из них могут предоставить сквозной просмотр каждой транзакции, проходящей через вашу программу промежуточного уровня, от момента активизации запроса Web-сервером по всему пути к базе данных, через многочисленные узлы и различные платформы. Этой уникальной способностью обладает Enterprise Workload Manager for Multiplatforms (EWLM), компонент IBM Virtualization Engine Server Suite. В документации по IBM Virtualization Engine более детально рассматривается эта комплексная платформа, помогающая виртуализировать вашу инфраструктуру.

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

Естественно, промежуточное программное обеспечение может означать различные вещи в различных контекстах. Из Wikipedia: "Промежуточное программное обеспечение (middleware) в настоящее время используется для описания систем управления базами данных, Web-серверов, серверов приложений, систем управления содержимым и аналогичных инструментальных средств, поддерживающих разработку приложений и процесс передачи". В этой статье промежуточным программным обеспечением называется комплект IBM HTTP Server, Application Server и DB2 UDB.

Большая часть промежуточного программного обеспечения IBM за последние несколько лет была расширена на использование открытого стандарта Application Response Measurement (ARM) как способа предоставления статистики внутренних транзакций для любого внешнего инструментального средства, поддерживающего этот стандарт. Application Server (Express, Base, ND, XD) и DB2 UDB стали использовать ARM, также как и подключаемый модуль WebSphere для IBM HTTP Server (IHS) и Microsoft™ Internet Information Server (IIS). Теперь, используя это промежуточное программное обеспечение, вы можете выполнять сквозной мониторинг производительности вашего Web-приложения. Однако инструментарий ARM по умолчанию запрещен. Я объясню, как вы можете разрешить инструментарий ARM.

Вам понадобится EWLM Managed Server (MS) - агент, который работает внутри каждого сервера, собирая ARM-статистику и передавая ее в EWLM Domain Manager (DM). DM собирает вместе все данные и предоставляет их через EWLM Control Center, к которому вы можете обратиться из любого Web-браузера. На рисунке 1 изображена высокоуровневая архитектура.

Рисунок 1. Высокоуровневая архитектура EWLM и поддержка промежуточного программного обеспечения
Рисунок 1. Высокоуровневая архитектура EWLM и поддержка промежуточного программного обеспечения

Общий процесс:

  1. Установить EWLM DM на управляющем сервере.
  2. Установить EWLM MS на каждой машине, выполняющей промежуточное программное обеспечение.
  3. Разрешить поддержку ARM в операционной системе каждой машины.
  4. Создать ID конфигурации EWLM DM.
  5. Создать ID конфигурации EWLM MS.
  6. Создать политику EWLM-домена.
  7. Разрешить инструментарий ARM в DB2 UDB.
  8. Разрешить инструментарий ARM в Application Server.
  9. Разрешить инструментарий ARM в IHS.
  10. Использовать EWLM Control Center для просмотра статистики транзакций.

Предварительные условия

EWLM поддерживает IHS, Application Server и DB2 на множестве платформ; последняя информация приведена в EWLM Information Center. Инструментарий ARM промежуточного программного обеспечения идентичен для большинства платформ (за исключением i5/OS и z/OS), но уровень поддержки ARM-платформы и связанные с ней процедуры безопасности специфичны для каждой операционной системы. Для удобства в этой статье я главным образом буду обсуждать AIX, при необходимости упоминая специфические положения для Linux.

Программное обеспечение, рассматриваемое в данной статье:

  • AIX 5.3 ML1
  • SLES 9.0 SP3
  • IBM Enterprise Workload Manager V2R1
  • IBM HTTP Server 6.0.2
  • WebSphere Application Server 6.0.2, Network Deployment
  • DB2 UDB 8.2 Enterprise Edition

Вы должны иметь практические знания промежуточного программного обеспечения и операционных систем. У вас уже должен быть установлен EWLM DM на управляющем сервере и EWLM MS на каждом узле, на котором выполняется промежуточное программное обеспечение. Оба могут работать на одной и той же системе, если имеется достаточный объем оперативной памяти и хватает мощности процессора.

Тестовая среда состоит из четырех логических разделов на pSeries 570. Каждый раздел сконфигурирован на использование одного процессора (с разрешенным POWER5™ Micro-Partitioning) и 2GB памяти. Вы можете выполнить это упражнение на любой автономной системе pSeries или в разделе iSeries, если можете запустить на них AIX 5.3. У меня есть AIX и Linux, работающие в 64-битном режиме; это же касается и DB2 UDB. EWLM установлен как часть стека IBM Virtualization Engine CD, который я не буду рассматривать в этой статье.

Разрешение поддержки ARM на платформе

Прежде всего, я объясню, как разрешить поддержку ARM для AIX и Linux.

Для AIX

Как показано на рисунке 1, ни промежуточное программное обеспечение, ни любое приложение с поддержкой ARM на самом деле не взаимодействует с EWLM MS напрямую. Они передают данные в средства поддержки ARM платформы, а MS, в свою очередь, извлекает данные из средств поддержки ARM и передает их в DM. Поэтому вы должны начать с разрешения поддержки ARM в AIX.

Удостоверьтесь, что пакет поддержки ARM под названием bos.net.ewlm.rte установлен. Используйте команду

# lslpp -l bos.net.ewlm.rte

для проверки того, установлен он или нет. Если поддержка ARM еще не установлена, вы должны скопировать пакет установки с инсталляционного CD AIX. Для установки пакета вы можете использовать SMIT.

После установки пакета вы можете разрешить поддержку ARM следующим образом:

  • Выполнить команду smitty ewlm.
  • Изменить/показать состояние служб EWLM.
  • Разрешить EWLM-службы.
  • При запросе разрешения служб EWLM в данное время, при следующей загрузке или в обеих ситуациях выберите последний вариант (F4), а затем нажмите Enter для подтверждения.

Выполните команду ewlmcfg -q для подтверждения разрешения поддержки EWLM. Вы должны получить следующее сообщение:

EWLM is enabled.
No process is using the EWLM services.

Теперь поддержка ARM в AIX должна быть разрешена. При запуске EWLM MS, если появится сообщение о том, что поддержка не разрешена, выполните опять команду ewlmcfg -q для проверки. Найдите следующую строку в /etc/inittab:

rcnetwlm:23456789:wait:/etc/rc.netwlm start> /dev/console 2>&1 # Start netwlm

Убедитесь в том, что эта строка не закомментирована и что она вызывается правильно. Я сталкивался с проблемами, когда AIX инициализировал другую службу перед ней, а эта служба никогда не заканчивалась, поэтому AIX не доходил до точки запуска данной службы. В случае каких-либо сомнений вы можете попытаться инициализировать ее вручную, что не причинит никакого вреда, если служба уже была инициализирована. Выполните команду /etc/rc.netwlm start, которая может выдать сообщение:

/usr/lib/drivers/netwlm already loaded
Error loading kernel extension: cfgnetwlm failed

Для Linux

Перед запуском EWLM MS на Linux проверьте "Необходимые критические обновления для IBM Virtualization Engine version 2.1" на наличие дополнительных "заплаток" для операционной системы. Если вы компилируете ядро самостоятельно, не запрещайте в ядре функцию Class-Based Kernel Resource Management (CKRM). Поддержка платформы ARM основывается на CKRM для получения статистики от операционной системы. Необходимо также установить fixpack 020 поверх Linux MS. Linux MS был деактивирован в GA-версии.

Поддержка платформы ARM в Linux поставляется в пакете EWLM MS и устанавливается как часть MS-установки. Обычно вы не должны специально делать что-либо для этого. Демон ARM должен быть запущен при старте системы. Вы можете проверить его запуск при помощи команды ps aux / grep ewlmarmd. Если он не работает, проверьте наличие файла /etc/init.d/ewlm и убедитесь в том, что демон не запрещается во время процесса загрузки. Используйте вашу любимую программу для проверки, например YaST2 или chkconfig.

На платформе Linux EWLM MS использует файловую систему, смонтированную в /mnt/relayfs, поэтому будьте внимательны и не монтируйте что-либо к /mnt; вместо этого создайте подкаталог в /mnt и используйте его.

Еще одним важным каталогом, который вы не должны удалять, является /tmp/ewlmarmd. Каждый раз, когда существует приложение, выполняющее ARM-регистрацию, в нем создаются некоторые нужные файлы. Если он удален случайно, вы можете просто перезапустить демон ARM, который создаст его заново, но затем, вы должны перезапустить также все ARM-приложения, поскольку все регистрации были утрачены. Используйте для перезапуска команду /etc/init.d/ewlm restart.

Создание ID конфигурации EWLM DM

Перед тем, как вы сможете использовать EWLM DM, вы должны создать ID конфигурации аналогично профилю Application Server или экземпляру DB2. Вы можете использовать командную строку или GUI-мастер для этого. При создании ID конфигурации создается рабочий каталог для него, назначается несколько TCP/IP портов для DM и создается профиль Application Server для запуска приложения Control Center.

Использование мастера конфигурации

Убедитесь в том, что у вас есть рабочая среда X window. Это можно выполнить под пользователем root, используя команду

# /opt/IBM/VE2/EWLM/bin/configWizardDM.sh

После открытия панели выберите Create domain manager and Control Center и нажмите Next.

На шаге 1 (из 8-ми), мастер запрашивает имя ID конфигурации; не используйте какие-либо специальные символы; я буду использовать chekimDM. Мастер создает каталог /opt/IBM/VE2/EWLM/ewlmdm_instances/servers/chekimDM.

На следующем шаге имя домена предназначено только для целей отображения. Вы можете использовать длинные слова и пробелы. IP-адрес мог бы быть вашим реальным адресом (я устанавливаю 0.0.0.0, указывая DM прослушивать все IP-адреса в системе). Вы можете оставить значение порта по умолчанию, либо установить свое собственное, как показано на рисунке 2.

Рисунок 2. Мастер конфигурации DM, IP-адрес и порты для прослушивания
Рисунок 2. Мастер конфигурации DM, IP-адрес и порты для прослушивания

На шаге 3 нет необходимости разрешать SSL-шифрование между DM и MS в среде интранет.

На шаге 4 мастер спросит вас о желании заменить SSL-сертификат по умолчанию, предоставленный сервером WebSphere, который выполняет приложение Control Center с разрешенной Global Security. Опять же, в контролируемой среде в этом нет необходимости. Оставьте вариант по умолчанию и нажмите Next.

На шаге 5 не разрешайте посредник-брандмауэр, пока не будете знать, что делаете.

На шаге 6 указывается ID пользователя, который будет использоваться для остановки и управления WebSphere для Control Center. Он должен быть установлен в root, потому что Global Security использует локальную аутентификацию.

Для шага 7 вы можете назначить пользователей или группы операционной системы на различные роли для операций Control Center, как показано на рисунке 3. Вы должны назначить, по крайней мере, одного пользователя или группу на роль Administrator для использования EWLM; однако, вы можете добавить или удалить любые назначения позже, если пожелаете.

Рисунок 3. Мастер конфигурации DM, добавление роли для Control Center
Рисунок 3. Мастер конфигурации DM, добавление роли для Control Center

На шаге 8 оставьте флажок не отмеченным. Создание ID конфигурации DM - это длительный процесс, поэтому я предпочитаю сделать все правильно, а потом запустить DM вручную.

По прошествии примерно 10 минут процесс завершится (рисунок 4). Обратите внимание на Control Center URL внизу окна. Вы должны подставить ваш реальный IP-адрес или имя хоста в URL.

Рисунок 4. Мастер конфигурации DM, процесс создания завершен
Рисунок 4. Мастер конфигурации DM, процесс создания завершен

Использование командной строки

Вы можете выполнить эту задачу также при помощи командной строки. Это особенно полезно, если вы не root и должны предоставить команду для выполнения под другим пользователем, имеющим полномочия root. Следующие команды делают в точности то же, что и мастер конфигурации:

Листинг 1. Версия командной строки задач мастера конфигурации

        
# cd /opt/IBM/VE2/EWLM/bin
# ./createMS.sh chekimDM -ma 0.0.0.0 -mp 5775 -wasPorts 5775 -jp 5800 -dn chekimDomain
-auth None -adminUser root -adminPW password
					
# ./changeCC.sh -addUser chekimDM -adminUser root -adminPW password -roleUser root
-role Administrator

Для запуска DM и Control Center используйте:

Листинг 2. Версия командной строки для запуска DM и Control Center

        
# cd /opt/IBM/VE2/EWLM/bin
# ./startDM.sh chekimDM
# ./startWAS.sh chekimDM

Теперь, зарегистрируйтесь в Control Center, для того чтобы увидеть, что все работает правильно. Откройте Internet Explorer по адресу https://dm_hostname:5777/webui и зарегистрируйтесь с ID пользователя и паролем, которые вы указываете для роли Administrator. После успешной регистрации вы должны увидеть панель, показанную на рисунке 5. Проверьте, что у вас разрешены всплывающие окна для этого URL.

Рисунок 5. Главная страница Control Center
Рисунок 5. Главная страница Control Center

Устранение неисправностей

А что если есть ошибки, и мастер не завершается? Вы должны знать, где и почему произошла ошибка, и можете найти эту информацию в рабочих log-файлах. Имеются три log-файла, созданные во время процесса в двух каталогах:

  • /var/adm/ewlm/ewlmdm/Diagnostics/createDM_timestamp.log
  • /var/adm/ewlm/ewlmdm/Diagnostics/wizardDM_timestamp.log
  • /var/adm/ewlm/ewlmdm/ConfigWizardDiagnostics/ConfigurationWizard.log

Если возникают ошибки при создании профиля WebSphere, вы должны уметь определять проблему из log-файла createDM. Если есть проблемы конфликта портов, попробуйте остановить все работающие экземпляры Application Server и проверьте, что порты доступны для использования.

Если авария возникает после выполнения процесса на 90%, более всего вероятно наличие проблем с LDAP-сервером. По умолчанию после создания профиля WebSphere и развертывания приложения Control Center производится попытка зарегистрировать ваш новый созданный ID конфигурации DM в LDAP-сервере, указанном при установке Virtualization Engine (VE). Если во время этого процесса возникает проблема, ваш созданный DM удаляется, так что вы можете создать его заново. Сохраняются только log-файлы, чтобы проинформировать вас о том, что пошло не так.

LDAP-регистрация используется только в VE Console. Если вы в вашей среде не пользуетесь VE Console и думаете, что LDAP больше не нужен - это не так. LDAP-сервер все равно нужен для создания и удаления DM. Если по некоторым причинам вы не можете больше получить ваш LDAP-сервер опять, есть искусственный путь обойти LDAP-регистрацию во время создания и удаления DM. Измените файл /opt/IBM/VE2/EWLM/bin/ewlmdm_environment.sh и снимите комментарии в следующих двух строках:

# VE_BASE=/opt/IBM/VE2
# VE_LIB=/opt/IBM/VE2/lib

Вернитесь в мастер или командную строку. Попыток LDAP-регистрации не будет. Не делайте это, если планируете использовать в будущем VE Console, иначе вы не сможете подключиться к этой DM из VE Console bridge.

Если вы хотите удалить ID конфигурации DM, то должны использовать команду deleteDM.sh или мастер. Простого удаления рабочего каталога недостаточно; необходимо выполнить много работы по очистке.

Создание ID конфигурации EWLM MS

Вы должны создать ID конфигурации на каждом узле EWLM MS, используя либо мастер, либо командную строку. Этот процесс намного короче, чем создание ID конфигурации DM.

Я выполняю процесс MS как пользователь root. Вы могли бы запустить MS под другим пользователем. Как и прежде, я рассмотрю использование мастера конфигурации, командную строку и устранение неполадок.

Использование мастера конфигурации

Запустите мастер конфигурации под пользователем root, используя команду

# /opt/IBM/VE2/EWLMMS/bin/configWizardMS.sh

На первой панели выберите Create managed server и нажмите Next.

На шаге 1 ID конфигурации не должен содержать специальных символов. Рабочий каталог создается в /ewlmData/ewlmms/servers/chekimMS.

На шаге 2 вы можете предоставить имя хоста DM или IP-адрес. Не забудьте изменить порт, если назначили другой номер ранее при создании DM.

Шаг 3 предназначен для настройки SSL и должен соответствовать установкам в DM. Выберите None и нажмите Next.

На шаге 4, если вы не имеете прямого соединения между DM и MS, можете использовать стандартный HTTP-прокси для их соединения, разрешив метод CONNECT. В противном случае просто нажмите Next для начала создания MS.

Вот и все. Дождитесь отображения сообщения PROCESSING COMPLETE.

Использование командной строки

Для выполнения всех шагов мастера одной командой, выполните следующую команду на всех MS-узлах:

# /opt/IBM/VE2/EWLMMS/bin/createMS.sh chekimMS -ma hci246 -mp 5773 -auth None

Для запуска MS введите:

# /opt/IBM/VE2/EWLMMS/bin/startMS.sh chekimMS

Если вы перейдете в Manage > Managed servers, то должны увидеть, что к домену добавился новый MS. Если его нет, нажмите несколько раз пиктограмму обновления в правом верхнем углу окна.

Устранение неисправностей

Процесс создания MS довольно прост, но проблемы могут возникнуть при запуске MS. Запуск MS может закончиться неудачно, если поддержка платформы выполнена неправильно; в этом случае вы должны вернуться к разделу "Разрешение поддержки ARM на платформе".

Еще одна потенциальная проблема, с которой вы можете столкнуться - свободное место в файловой системе. По умолчанию ID конфигурации MS создается в файловой системе root в каталоге /ewlmData. AIX распределяет по умолчанию слишком мало места для этой файловой системы. Если ваш MS генерирует исключительную ситуацию и начинает выводить диагностические XML-файлы, файловая система root может быстро переполниться. Как средство защиты от этого вы можете увеличить размер файловой системы root или переместить содержимое /ewlmData в более объемную файловую систему и создать символическую ссылку /ewlmData, указывающую на новое месторасположение.

Создание политики EWLM-домена

EWLM поставляется с примером политик, для того чтобы вы смогли начать работу, но я в этом разделе создам новую. Вы укажете в политике, как классифицировать входящие запросы в классы транзакции, которые являются подмножеством класса службы, а также укажете требуемые рабочие характеристики для класса службы. Я собираюсь использовать базовое Web-приложение с названием Trade, эмулирующее простое Web-приложение для ведения коммерции, в котором пользователи могут покупать или продавать товары и запрашивать свой портфель покупок. Те, кто не имеет доступа к этому приложению, могут использовать любой другой пример Web-приложения для данного упражнения или просто прочитать материал.

Для начала создания политики домена зарегистрируйтесь повторно в Control Center, выберите Domain policies и нажмите New....

Появится мастер политики домена. Дайте политике имя и краткое описание.

На следующем шаге вы можете оставить рабочую нагрузку EWLM по умолчанию и нажать Next.

На шаге Service classes создайте новый класс службы, нажав New....

Вы должны увидеть детали требуемых рабочих характеристик класса службы; все поля говорят сами за себя (рисунок 6). После ввода всех значений нажмите OK и Next.

Рисунок 6. Мастер Domain policy, создание класса службы
Рисунок 6. Мастер Domain policy, создание класса службы

Теперь вы добавите приложение к политике для классификации запросов, приходящих в это приложение, выбрав Add... на шаге Applications. Помните о том, что значение имеет только входное приложение; именно в нем каждый входящий запрос классифицируется, и эта классификация передается по всем последовательным узлам промежуточного программного обеспечения. Каждое приложение имеет определенное количество предопределенных фильтров, имеющих к нему отношение.

Для приложения Trade, которое я использую, все входящие запросы поступают сначала в IHS, поэтому в политику я добавляю приложение IBM Webserving Plugin.

Для создания класса транзакции убедитесь в том, что в ниспадающем списке выбран элемент IBM Webserving Plugin, и нажмите New.... Дайте имя классу и назначьте его позиции 1 класса службы Trade, как показано на рисунке 7. Помните о том, что в правилах классификации очень важен порядок. Всегда нужно ставить наиболее специфические правила первыми, а за ними указывать более общие.

Рисунок 7. Мастер политики домена, создание класса транзакции
Рисунок 7. Мастер политики домена, создание класса транзакции

Вы должны добавить правило для этого класса транзакции - нажмите кнопку New.... Мое правило классификации основано на фильтре EWLM:URI, а его значением является /trade(\*) без кавычек, как показано на рисунке 8. Любой входящий запрос, начинающийся с /trade, классифицируется в этот класс транзакции. Вы можете создать очень сложные правила, группируя несколько отдельных правил с использованием логических операторов, но для данного упражнения оставим их простыми.

Рисунок 8. Мастер Domain policy, создание правила
Рисунок 8. Мастер Domain policy, создание правила

После завершения процедуры добавления правила проверьте, что новый класс транзакции расположен перед правилом по умолчанию, которое будет перехватывать все, что входит в приложение. Нажмите кнопку Finish для сохранения политики.

После сохранения политики вы должны развернуть ее для вступления новой политики в силу. Выберите только что созданную политику и выберите Deploy... в ниспадающем списке; нажмите Go.

Затем появится запрос о политике службы, которую нужно активизировать. Поскольку вы не создавали каких-либо новых политик служб, можете выбрать для активизации только одну. Выберите ее и нажмите Deploy. На самом деле вы можете развернуть политику домена без активизации какой-либо политики службы, но я не вижу смысла это делать.

Убедитесь в том, что политика службы была успешно активизирована на всех управляемых серверах, как показано на рисунке 9.

Рисунок 9. Состояние активизации политики службы
Рисунок 9. Состояние активизации политики службы

В любое время вы можете сказать, какая политика активна, посмотрев на верхнюю часть панели. Также вы можете увидеть активную политику службы на любом управляемом сервере. Обычно все управляемые серверы должны иметь одинаковую политику службы, но иногда сервер может быть отключен или отсоединен во время развертывания политики домена, и, таким образом, может иметь место несоответствие. Как только сервер опять подключится к менеджеру домена, он попытается активизировать текущую политику.

Теперь вы готовы получить статистику транзакций от промежуточного программного обеспечения. Но сначала вам необходимо разрешить инструментарий ARM в вашем промежуточном программном обеспечении.

Разрешение инструментария ARM в DB2 UDB

Начиная с версии 8.2 DB2 UDB, инструментарий ARM уже включен по умолчанию, но вы должны указать ему, где искать ARM-библиотеку libarm4.a (или libarm4.so для Linux). Для экземпляра db2inst1 используйте:

# su - db2inst1
$ db2set DB2LIBPATH=/usr/lib

Перед тем, как вы сможете запустить DB2, вы должны дать пользователю db2inst1 некоторые специальные привилегии в AIX, чтобы он зарегистрировался для поддержки ARM платформы. Для этого нужно использовать root:

# chuser "capabilities=CAP_ARM_APPLICATION,CAP_PROPAGATE" db2inst1

В Linux вы просто должны добавить пользователя db2inst1 в группу ewlm_armusers (созданную во время MS-инсталляции). В обоих случаях вы должны выйти из системы и снова зарегистрироваться в ней для того, чтобы изменения вступили в силу. Затем вы можете запустить экземпляр DB2.

Для операционной системы Linux поддержку инструментария ARM имеет только DB2 for Linux на платформах Intel x86. Linux на всех других аппаратных платформах пока не поддерживает ARM, поэтому делать это бесполезно. Будущие версии DB2 UDB будут иметь поддержку ARM для всех аппаратных платформ Linux.

Вы можете теперь запустить экземпляр DB2; в листинге 3 приведен пример успешной регистрации экземпляра DB2 в ARM.

Листинг 3. Запуск экземпляра DB2

        
# lsarm -a
APPL: IBM DB2 Universal Database

На Linux эта программа расположена в /opt/IBM/VE2/EWLMMS/usr/bin/lsarm.

Устранение неисправностей

Наиболее общая проблема инструментария ARM DB2 вызвана неавторизованной регистрацией либо из-за отсутствия необходимых привилегий, либо из-за того, что привилегии еще не вступили в силу. Для двойной проверки этого на AIX выполните:

Листинг 4. Проверка регистрации инструментария ARM DB2

        
# lsuser db2inst1
db2inst1 id=108 pgrp=db2grp1 groups=db2grp1,staff,dasadm1 home=/home/db2inst1
shell=/usr/bin/ksh login=true su=true rlogin=true daemon=true admin=false sugroups=ALL
admgroups= tpath=nosak ttys=ALL expires=0 auth1=SYSTEM auth2=NONE umask=22
registry=files SYSTEM=compat logintimes= loginretries=0 pwdwarntime=0 account_locked=
false minage=0 maxage=0 maxexpired=-1 minalpha=0 minother=0 mindiff=0 maxrepeats=8
minlen=0 histexpire=0 histsize=0 pwdchecks= dictionlist= capabilities=
CAP_ARM_APPLICATION,CAP_PROPAGATE fsize=-1 cpu=-1 data=491519 stack=32767
core=-1 rss=-1 nofiles=2000 time_last_login=1139331346 tty_last_login= host_last_login=
hci246 unsuccessful_login_count=0 roles=

В Linux выполните команду id db2inst1 и проверьте принадлежность правильной группе. Другой проблемой в Linux является то, что если по какой-либо причине каталог /tmp/ewlmarm4 не доступен для db2inst1 из-за неверных прав на каталог или из-за случайного его удаления, lsarm не покажет никакого приложения.

Более серьезной проблемой может быть то, что иногда DB2 не может найти или загрузить ARM-библиотеку. В этом случае вы должны были бы использовать программу db2trc для трассировки. Если вы не знакомы с этой программой, обратитесь к документации по командам DB2. В листинге 5 приведен короткий прием, показывающий, как далеко доходит DB2 при загрузке ARM-библиотеки.

Листинг 5. Определение того, как далеко доходит DB2 при загрузке ARM-библиотеки

        
# su - db2inst1
$ db2trc on -f 1.trc                     (turn on tracing)
$ db2start                               (start DB2)
$ db2trc off                             (turn off tracing)
$ db2trc format 1.trc 1.txt              (format binary trace file to text)

$ cd sqllib/db2dump
$ grep -i arm 1.txt

        rc = 0x800F00FC = -2146500356 = SQLO_INV_PARM
2948    entry DB2 UDB base sys utilities sqleLoadArmFunctions fnc (1.3.5.1132.0)
2949    data DB2 UDB base sys utilities sqleLoadArmFunctions fnc (3.3.5.1132.0.1)
        libarm4.a
        6C69 6261 726D 342E 61                     libarm4.a
        6172 6D5F 7265 6769 7374 6572 5F61 7070    arm_register_app
        6172 6D5F 7374 6172 745F 6170 706C 6963    arm_start_applic
        6172 6D5F 7265 6769 7374 6572 5F74 7261    arm_register_tra
        6172 6D5F 7374 6172 745F 7472 616E 7361    arm_start_transa
        6172 6D5F 6269 6E64 5F74 6872 6561 64      arm_bind_thread
        6172 6D5F 626C 6F63 6B5F 7472 616E 7361    arm_block_transa
        6172 6D5F 756E 626C 6F63 6B5F 7472 616E    arm_unblock_tran
        6172 6D5F 756E 6269 6E64 5F74 6872 6561    arm_unbind_threa
        6172 6D5F 7374 6F70 5F74 7261 6E73 6163    arm_stop_transac
        6172 6D5F 6465 7374 726F 795F 6170 706C    arm_destroy_appl
        6172 6D5F 6765 745F 6572 726F 725F 6D65    arm_get_error_me
        6172 6D5F 7374 6F70 5F61 7070 6C69 6361    arm_stop_applica
        6172 6D5F 6765 745F 636F 7272 656C 6174    arm_get_correlat
2999    data DB2 UDB base sys utilities sqleLoadArmFunctions fnc (3.3.5.1132.0.10)
3000    exit DB2 UDB base sys utilities sqleLoadArmFunctions fnc (2.3.5.1132.0)
11569   entry DB2 UDB base sys utilities sqleArmRegisterAgent fnc (1.3.5.1135.0)
11578   data DB2 UDB base sys utilities sqleArmRegisterAgent fnc (3.3.5.1135.0.10)
11579   data DB2 UDB base sys utilities sqleArmRegisterAgent fnc (3.3.5.1135.0.20)
11580   data DB2 UDB base sys utilities sqleArmRegisterAgent fnc (3.3.5.1135.0.30)
11581   exit DB2 UDB base sys utilities sqleArmRegisterAgent fnc (2.3.5.1135.0)
11880   entry DB2 UDB base sys utilities sqleArmRegisterAgent fnc (1.3.5.1135.0)
11883   data DB2 UDB base sys utilities sqleArmRegisterAgent fnc (3.3.5.1135.0.10)
11884   data DB2 UDB base sys utilities sqleArmRegisterAgent fnc (3.3.5.1135.0.20)
11885   data DB2 UDB base sys utilities sqleArmRegisterAgent fnc (3.3.5.1135.0.30)
11886   exit DB2 UDB base sys utilities sqleArmRegisterAgent fnc (2.3.5.1135.0)

Программа grep выдает приведенный в листинге 5 результат тогда, когда DB2 успешно загрузила все ARM-функции из libarm4.a. Если вы видите это в вашем файле трассировки, но экземпляр DB2 все еще не показывается в lsarm, значит вы теперь знаете, что это не связано с загрузкой ARM-библиотеки. Наиболее вероятно, что это проблема пользовательских привилегий или поддержки ARM платформы.

Если DB2 не может найти libarm4.a, вы увидели бы только первые пять строк из листинга 5 и не видели бы остальные ARM-функции в файле трассировки. Если вам необходимо обратиться в службу технической поддержки, очень полезным будет предоставление службе этого файла трассировки.

Разрешение инструментария ARM в Application Server

Разрешение ARM в Application Server состоит из двух шагов. Первый - разрешить глобально Request Metrics (метрики запросов). Затем в настройках каждого AppServer вы должны указать, где искать класс инструментария ARM и JNI-библиотеку. Вы можете, таким образом, избирательно разрешать инструментарий ARM на каждом AppServer вашей сети WebSphere. В WebSphere Application Server редакций Express, Base и Network Deployment инструментарий ARM применим только для AppServers. В WebSphere Application Server редакции XD вы можете применить его для Proxy Servers а также для On Demand Routers.

Чтобы разрешить Request Metrics на уровне всей сети, войдите в WebSphere Administrative Console, перейдите в панель Request Metrics и используйте следующие настройки (показаны на рисунке 10).

  • Отмечен флажок Enable Request metrics
  • Components to be instrumented = ALL
  • Trace level = Hops
  • Отмечен флажок Application Response Measurement(ARM) agent
  • Agent Type = ARM4
  • ARM transaction factory implementation class name = com.ibm.wlm.arm40SDK.transaction.Arm40TransactionFactory

Рисунок 10. Разрешение Request Metrics в WebSphere AdminConsole
Рисунок 10. Разрешение Request Metrics в WebSphere AdminConsole

Теперь вы должны перейти в каждый AppServer (или другие типы сервера в случае WebSphere Application Server XD) для добавления пользовательских свойств в Java Virtual Machine (JVM). Как показано на рисунке 11, из Application servers > yourAppServer > Process Definition > Java Virtual Machine > Custom Properties создайте следующие свойства:

  • ws.ext.dirs = /opt/IBM/VE2/EWLMMS/classes/ARM
  • com.ibm.websphere.pmi.reqmetrics.PassCorrelatorToDB = true

Свойство PassCorrelatorToDB должно быть установлено в true только в том случае, если на следующем узле имеется экземпляр DB2 с разрешенным инструментарием ARM; в противном случае желательно установить его в false, либо не устанавливать его вовсе для уменьшения издержек. Если WebSphere-приложение соединено с другими типами серверов базы данных, или вы используете экземпляр DB2 старых версий, можете пропустить это свойство. Обратите внимание на то, что только новый DB2 Universal JDBC Driver (db2jcc) поддерживает протекание ARM-коррелятора в нисходящий узел . Если вы используете другой JDBC-провайдер, ARM-коррелятор не будет достигать следующего узела независимо от сервера базы данных.

  • java.library.path = /usr/lpp/ewlm/java/lib_64.

Вы всего лишь должны установить свойство java.library.path, если ваш Application Server имеет 64-битную редакцию; в противном случае Application Server способен найти EWLM JNI-библиотеку в /usr/lib самостоятельно. В Linux 64-битная JNI-библиотека находится в каталоге /usr/lib64.

Рисунок 11. Пользовательские свойства JVM для инструментария ARM
Рисунок 11. Пользовательские свойства JVM для инструментария ARM

Сохраните изменения и перезапустите AppServers, для того чтобы инструментарий ARM начал действовать. Проверьте успешность регистрации ARM при помощи команды:

# lsarm -a
APPL: WebSphere:APPLICATION_SERVER

Хотя эта процедура не слишком сложна для небольшого количества AppServers, она может стать трудоемкой, если их имеется несколько дюжин на различных платформах, поскольку каждая платформа может использовать различные пути каталогов. Для этих целей я написал wsadmin-сценарий автоматизации процесса с названием was_arm.jacl, доступный для загрузки. Сценарий будет выполнять интерактивный цикл по списку серверов (AppServer, ODR и т.д.) в сети WebSphere ND или XD, добавляя пользовательские свойства JVM для разрешения инструментария ARM. В нем есть пути каталогов по умолчанию для всех поддерживаемых EWLM платформ, за исключением i5/OS и z/OS. Вы можете свободно использовать или изменять этот сценарий для соответствия вашей среде. Я настоятельно советую вам познакомиться с этой процедурой перед использованием сценария; в противном случае вы можете не знать точно, что было сделано в вашей среде WebSphere.

Если вы запускаете Application Server не как пользователь root, то применяется такое же правило безопасности, которое имеет DB2. В AIX вы должны добавить некоторые привилегии для пользователя:

# chuser "capabilities=CAP_ARM_APPLICATION,CAP_PROPAGATE"  userID 

В Linux вы должны добавить этого пользователя в группу ewlm_armusers и повторно войти в систему.

Если по какой-либо причине вы должны временно запретить инструментарий ARM во всей сети WebSphere, можете просто снять отметку с флажка Enable Request metrics на панели Request Metrics и оставить пользовательские свойства JVM. Если вы хотите запретить ARM навсегда, лучше удалить эти свойства.

Устранение неисправностей

Допустим, вы выполнили все шаги и не видите WebSphere в lsarm. Что делать? Во-первых, проверьте, что привилегии пользователя, выполняющего WebSphere, позволяют зарегистрироваться в ARM. Во-вторых, посмотрите, может ли WebSphere загрузить класс реализации ARM, предоставленный EWLM в файле arm4.jar. Вы можете определить это по файлу SystemOut.log во время процедуры запуска Application Server. Если ошибок нет, класс реализации ARM был найден и загружен. Если есть какие-либо ошибки, вы должны дважды проверить пользовательское свойство JVM ws.ext.dirs.

Если все хорошо, вы должны увидеть следующую информацию в SystemOut.log:

Листинг 6. Результаты в SystemOut.log при нахождении класса реализации ARM

        
0000000a PmiRmArmWrapp I   PMRM0001I: ARM implementation is:
com.ibm.ws.pmi.reqmetrics.PmiRmArmXfcArm4Impl
0000000a PmiRmArmWrapp I   PMRM0004I: PmiRmInit
servername=6.0.0.0/hcp121Cell01/hcp121Node02/TradeServer1/APPLICATION_SERVER

Если arm4.jar не найден, в SystemOut.log вы увидите следующую информацию:

Листинг 7. Результаты в SystemOut.log при не найденном классе реализации ARM

        
0000000a PmiRmArmWrapp I   PMRM0001I: ARM implementation is:
com.ibm.ws.pmi.reqmetrics.PmiRmArmXfcArm4Impl
0000000a PmiRmArmWrapp W   PMRM0002E: Failed to instantiate:
com.ibm.ws.pmi.reqmetrics.PmiRmArmXfcArm4Impl

Также вы увидите исключительную ситуацию java.lang.NoClassDefFoundError в файле SystemErr.log.

Иногда проблема менее очевидна. Например, если JNI-библиотека libewljarm4.a не найдена, вы можете не увидеть в log-файлах каких-либо сообщений об ошибках, либо можете увидеть исключительную ситуацию java.lang.UnsatisfiedLinkError в SystemErr.log в зависимости от обстоятельств. В тех ситуациях, когда нет видимых ошибок, вы должны включить PMI-трассировку, указав pmi.rm=all, как показано на рисунке 12.

Рисунок 12. Использование pmi.rm=all для трассировки разрешения ARM
Рисунок 12. Использование pmi.rm=all для трассировки разрешения ARM

Если WebSphere не может найти или загрузить JNI-библиотеку, вы должны увидеть следующую информацию в файле trace.log:

Листинг 8. WebSphere не может найти или загрузить JNI-библиотеку

        
0000000a PmiRmArmXfcAr 3   init: creating newArmApplication object with parms:
WebSphere:APPLICATION_SERVER, cell=hcp121Cell01, node=hcp121Node02.TradeServer1,
server=TradeServer1
0000000a PmiRmArmXfcAr 3   init: newArmApplicationDefinition error_code=-15001,
error_msg=-15001
0000000a PmiRmArmXfcAr 3   init: newArmApplication error_code=-15001, error_msg=-15001

При любых проблемах загрузки или вызова JNI-библиотеки возвращается код ошибки -15001. Вы должны увидеть этот код ошибки, если JNI-библиотека не найдена, или если регистрация в ARM прошла неудачно. В этом случае вы должны дважды проверить свойство java.library.path.

Разрешение инструментария ARM в IHS

С технической точки зрения вы собираетесь разрешить ARM в подключаемом модуле Application Server, работающем в IHS, а не в самом IHS. После того, как вы разрешили метрики запросов в WebSphere, вы просто должны повторно сгенерировать конфигурационный файл подключаемого модуля для разрешения инструментария ARM в подключаемом модуле. Найдите следующие строки в вашем новом файле plugin-cfg.xml:

<RequestMetrics armEnabled="true" loggingEnabled="false" rmEnabled="true" 
traceLevel="HOPS">

По умолчанию IHS выполняется как пользователь nobody. Но в этот раз в AIX вы не должны давать пользователю nobody каких-либо дополнительных привилегий. Они наследуются при запуске IHS от пользователя root, что обычно требуется для IHS, для того чтобы он слушал порты 80 и 443. Если ваша среда имеет другие настройки, вы должны добавить эти привилегии как обычно. В Linux вы всегда должны добавлять пользователя nobody в группу ewlm_armusers.

После перезапуска IHS с новым plugin-cfg.xml вы должны увидеть, что он зарегистрировался в ARM, выполнив следующую команду:

# lsarm -a
APPL: IBM Webserving Plugin

Устранение неисправностей

Если при попытках инициализации ARM подключаемым модулем Application Server или выполнении ARM-регистрации возникает ошибка, вы увидите это в log-файле подключаемого модуля, обычно в /opt/IBM/WebSphere/Plugins/logs/http_plugin.log.

Помните о главном различии между IHS и предшествующим промежуточным программным обеспечением:

  • В DB2 и Application Server, если поддержка ARM не инициализируется успешно, все равно все полностью функционирует, но ARM-данные не передаются.
  • В подключаемом модуле Application Server, если поддержка ARM не инициализируется успешно, подключаемый модуль полностью зависает. IHS будет все-таки обслуживать статическое содержимое, но не сможет перенаправить ни один запрос в WebSphere.

Если вы отлаживаете странный случай отказа подключаемого модуля Application Server, помните о том, что поддержка ARM может иногда вызвать его зависание. Если сомневаетесь, укажите armEnabled=false в конфигурационном файле подключаемого модуля и попробуйте снова.

Просмотр статистики транзакций с использованием Control Center

Теперь, поскольку вы включили инструментарий везде, давайте выполним какую-либо транзакцию и посмотрим, какую статистику мы можем получить из EWLM. Для этого упражнения я настроил кластер из трех узлов Application Server, находящихся за HIS-узлом, и сервер базы данных DB2. Один из моих серверов работает как Application Server и как IHS одновременно.

После нескольких вызовов приложения Trade из моего браузера Control Center показывает, как работает кластер в соответствии с требуемыми рабочими характеристиками, установленными предварительно в политике домена. Как показано на рисунке 13, моей целью было получить 95 процентов транзакций, принадлежащих ответу класса службы Trade длительностью менее полсекунды (500 мс). На самом деле я получил 99 процентов в этом интервале времени. EWLM выдал мне индекс производительности 0.5 для транзакций, произошедших за этот интервал времени. Индекс производительности менее 1.0 означает, что я превысил требуемую рабочую характеристику. Если бы целью было SLA для этого приложения, я бы знал, что превышаю SLA, и мои пользователи должны были быть счастливы!

Рисунок 13. EWLM Control Center, окно Service classes
Рисунок 13. EWLM Control Center, окно Service classes

Выберите Trade service class, затем Server topology в ниспадающем списке Action, а затем выберите Go. Появляется всплывающее окно, показывающее топологию системы, которую обнаружил EWLM во время прохождения транзакций. Как показано на рисунке 14, 75 запросов было передано в узел hci245 Application Server, а 28 и 29 запросов были переданы в два других узла. Здесь EWLM только собирает статистику об этих транзакциях; он абсолютно не оказывает никакого влияния на результаты работы.

Рисунок 14. EWLM Control Center, топология сервера
Рисунок 14. EWLM Control Center, топология сервера

Теперь давайте опять выберем Trade service class, выбрав Application topology, а затем нажав Go. Всплывающее окно показывает ту же самую топологию, но с точки зрения приложения (рисунок 15).

Рисунок 15. EWLM Control Center, топология приложения
Рисунок 15. EWLM Control Center, топология приложения

В обеих схемах топологии вы можете щелкнуть по каждому прямоугольнику для развертывания более подробной информации и спуститься к конкретному процессу с его статистикой. Вы можете поместить курсор мыши над желаемым прямоугольником; отобразится таблица статистики.

В заключение

Я только поверхностно описал, что такое EWLM Control Center и типы статистики, которые он может вам представить. В этой статье я показал вам, как разрешить инструментарий ARM в различном программном обеспечении промежуточного уровня. Вы посмотрели на обобщенную и индивидуальную статистику, которую можно получить из EWLM Control Center, а также схемы топологии, показывающие пути транзакций. Я продемонстрировал, как можно получить эту статистику без изменения кода приложения, используя готовое программное обеспечение IBM промежуточного уровня.

Поскольку IBM продолжает внедрять инструментарий ARM во все более широкий диапазон программного обеспечения промежуточного уровня, вы увидите увеличение выгоды от вашего инвестирования в EWLM. Это только вопрос времени, когда вы сможете получить возможность сквозного просмотра Web-транзакций на всем пути к ядру традиционных приложений, работающих на мэйнфреймах или вашей корпоративной ERP. Между тем, если вы желаете получить некоторые выгоды от ваших самодельных приложений, то можете внедрить в них инструментарий ARM самостоятельно! Просто найдите "EWLM APIs" в Information Center или посетите The Open Group.

Эти уроки могут быть также использованы для среды WebSphere Portal Server или WebSphere Commerce Server, если они работают на Application Server версии 6.0 или выше.


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=3452