Пример использования IBM Rational Robot для оперативного оповещения о неработоспособности или потери части функционала ИТ системой |
В крупных ИТ системах, проблема остановки или потери части функционала хотя бы на 10-15 минут является критичной. Насколько оперативно возможно получить информацию о подобных ситуациях? Сколько потом необходимо времени, что бы эту проблему исправить? Рассмотрим пример использования IBM Rational Robot (далее RR) для получения максимально оперативной информации о проблемах в ИТ системе на базе 1С 7.7. Описание ошибок: Мы рассмотрим следующие распространенные проблемы в ИТ системе на базе 1С 7.7., данные проблемы могут привести к остановке или потери части функционала ИТ системы: 1) Ошибка блокировки файлов при начальном входе в систему. При входе в систему система 1С блокирует определенные байты в специальных файлах (например, 1CV7.LCK). Если в момент входа произошла, например, сетевая ошибка то эти байты останутся заблокированными до тех пор, пока пользователь не нажмет кнопку подтверждения на модальном окне ошибки. До этого момента никто из пользователей не сможет войти в систему 1С, потому что при обнаружении блокировки на спец. байты файла будет появляться специфическая ошибка о блокировке данных. ![]() 2) Ошибка обнаружения ключа защиты при входе в систему. За проверку ключа лицензий в системе 1С 7.7. отвечает специальная служба HASP loader. Если происходит большой поток обращений к службе, например, все пользователи одновременно пытаются зайти в систему, она может перестать успевать их обрабатывать. Это не очень критично, т.к. можно подождать некоторое время, очередь обращений уменьшится, и проблема отпадет сама собой. Но бывают случаи, когда служба просто «повисает» и перестает отвечать на запросы. В этом случае помогает ее остановка и старт. Хорошо когда есть на рабочем месте администратор системы, в противном случае все пользователи будут ждать. ![]() 3) Ошибка ожидания блокировки транзакции (проверка общей функциональности). Блокировки в 1С являются узким местом системы (см. статью). Даже одна повисшая не закрытая транзакция в системе не позволит всем остальным пользователям создавать новые и изменять старые документы. Это приведет к потере большей части функционала системы. Как правило, для того чтобы разрешить эту проблему администратору достаточно оперативно отреагировать и снять «повисшую» сессию (например Kill spid). ![]() Реализация системы оперативного оповещения с использованием Rational Robot 1) Ошибка блокировки файлов при начальном входе в систему. Краткое описание алгоритма. Система IBM Rational Robot(в дальнейшем RR) пытается запустить 1С с интервалом раз в минуту. Если в случае попытки возникло характерное сообщение об ошибке, то попытка запуска 1С осуществляется еще три раза подряд. Если все три раза возникает ошибка, то на имя администратора ИТ системы пишется электронное письмо. В случае если ошибка повторяется через 5-ть минут, отправляется sms сообщение. Если ошибка повторяется и далее, то через каждые 2-а часа отправляются sms сообщения. Замечание. При необходимости можно научить снимать RR ненужные блокировки автоматически посредством стандартного набора администратора. Пример скрипта на RR: Sub Main Dim Result As Integer Dim Result1 as Integer Dim Result2 as Integer Dim Count as Integer 'Initially Recorded: 25.11.2005 13:14:54 'Script Name: BlockDataBase count = 0 i: StartApplication "BIN1cv7s.exe" Result1 = WindowVP (Exists, "Caption=Запуск 1С:Предприятие", "VP=WindowsStart;Wait=2,10") if Result1 = 1 then Window SetContext, "Caption=Запуск 1С:Предприятие", "Activate=0" ListBox Click, "Label=Информационные базы:", "Text=ДемоБаза;Coords=48,110" PushButton Click, "Text=OK" Result2 = WindowVP (Exists, "Caption=Авторизация доступа", "VP=WindowAuto;Wait=2,10") if Result2 = 1 then Window SetContext, "Caption=Авторизация доступа", "Activate=0" EditBox Click, "ObjectIndex=1", "Coords=30,4" InputKeys "111111{Enter}" Window SetTestContext, "Caption=1С:Предприятие", "Activate=0" Result = LabelVP (CompareProperties, "Text=Ошибка блокировки данных. Возможно данные используются другой задачей", "VP=LabelBlock;Wait=2,4") Window ResetTestContext, "", "" if Result = 1 then Count = Count+1 if Count<>3 then Window SetContext, "Caption=1С:Предприятие", "Activate=0" InputKeys "{ENTER}" GoTo i else Window SetContext, "Caption=1С:Предприятие", "Activate=0" InputKeys "{Enter}" dim comm as Object set comm = CreateObject("ADODB.Command") comm.CommandText = "INSERT INTO ErrorTable (name,code,tm) Values ('"+"Ошибка блокировки данных"+"',1,'"+str(now)+"'" comm.ActiveConnection = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=false;Initial Catalog=IMPORT_FROM_EXCEL;Data Source=test" comm.execute end if else Window SetContext, "Caption={1С:Предприятие - *}", "Activate=0" Window CloseWin, "", "" end if else Window SetContext, "", "Activate=0" InputKeys "{Enter}" end if else Window SetContext, "", "Activate=0" InputKeys "{Enter}" end if End Sub 2) Ошибка обнаружения ключа защиты при входе в систему. Краткое описание алгоритма. Алгоритм реализации почти такой же как и в предыдущем случае, с тем отличием что интервал повтора установлен на больший период (может быть большая очередь обращений). Также в данном случае автоматически перезагружается служба ключа защиты. Пример скрипта на RR: Sub Main Dim Result As Integer Dim Result1 as Integer DIM Count as integer Dim comm as Object Dim str1 as String dim flag as integer flag = 0 Count = 0 'Initially Recorded: 24.11.2005 15:44:49 'Script Name: ScriptUnableKey i: StartApplication "BIN1cv7s.exe" Window SetTestContext, "Caption=1C:Предприятие", "Activate=0" Result1 = LabelVP (CompareProperties, "Text=Не обнаружен ключ защиты программы!!!", "VP=Label;Wait=2,4") Window ResetTestContext, "", "" if Result1 then 'Window SetContext, "Caption=1С:Предприятие", "" Count = Count+1 if count<>3 then Window SetContext, "", "" InputKeys "{ENTER}" GoTo i end if if flag = 0 then flag = 1 count = 0 Window SetContext, "", "" InputKeys "{ENTER}" StartApplication "cmd /C net stop HASP" 'Остановка службы StartApplication "cmd /C net start HASP" 'Запуск службы GoTo i end if Window SetContext, "", "Activate=0" InputKeys "{ENTER}" set comm = CreateObject("ADODB.Command") comm.CommandText = "INSERT INTO ErrorTable (name,code,tm) Values ('"+"Не обнаружен ключ защиты программы"+"',1,'"+str(now)+"'" comm.ActiveConnection = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=false;Initial Catalog=IMPORT_FROM_EXCEL;Data Source=test" comm.execute else Window SetContext, "Caption=Запуск 1С:Предприятие", "Activate=0" Window CloseWin, "", "" end if end sub 3) Ошибка ожидания блокировки транзакции (проверка общей функциональности). Краткое описание алгоритма. Каждые 2-е минуты запускается процесс 1С. После запуска происходит выбор по номеру и виду предопределенного документа, для которого известно допустимое время проведения. Этот частично меняется и перепроводится. Если время проведения затянулось на слишком длительный период (больше MAXTime) или появилась несколько раз подряд специфическое сообщение 1С об ожидании разблокировки транзакции – отправляется письмо администратору. В письме администратору отправляется информация о всех блокирующих процессах (ид процесса, имя пользователя, имя машины, последняя выполняемая операция и т.п.). Эта информация предварительно получается специальным скриптом на TSQL. Пример скрипта на RR: Sub Main Dim Result As Integer Dim Result1 as Integer Dim TimeSecond as double TimeSecond = 0 'Initially Recorded: 24.11.2005 14:59:10 'Script Name: ПроводкаДокумента StartApplication "BIN1cv7s.exe" Result = WindowVP (Exists, "Caption=Запуск 1С:Предприятия", "VP=WindowStart;Wait=5,10") if Result = 1 then Window SetContext, "Caption=Запуск 1С:Предприятия", "" ListBox Click, "Label=Информационные базы:", "Text=ДемоБаза;Coords=34,81" PushButton Click, "Text=OK" Window SetContext, "Caption=Авторизация доступа", "" InputKeys "11111{ENTER}" Result1 = WindowVP (Exists, "Caption={1С:Предприятие - *}", "VP=WindowMain;Wait=5,10") if Result1 = 1 then Window SetContext, "Caption={1С:Предприятие - *}", "" MenuSelect "Menu=Журналы->pos(1)" Window SetContext, "Caption={*Журнал (общий)*};ChildWindow", "" GenericObject Click, "Class=Afx:;ClassIndex=2", "Coords=177,12" Window SetContext, "Caption=Поиск документа по номеру", "" InputKeys "14" PushButton Click, "Text=Найти" Window SetContext, "Caption=Поиск документа по номеру", "" ListBox Click, "Label=Найденные документы:", "Text=Реализация №;Coords=155,61" PushButton Click, "Text=Выбрать" Window SetContext, "Caption={1С:Предприятие - *}", "" MenuSelect "Menu=Действия->pos(11)" Window SetContext, "Caption=1С:Предприятие", "" PushButton Click, "Text=Да" Window SetContext, "Caption={1С:Предприятие - :*}", "" MenuSelect "Menu=Действия->pos(2)" Window SetContext, "", "" PushButton Click, "Text=Провести" Window SetContext, "Caption=1С:Предприятие", "" PushButton Click, "Text=Да" 'Window SetContext, "Caption=1С:Предприятие", "" TimeSecond = Timer/1000 'PushButton Click, "Text=Iao" TimeSecond = Timer/1000 - TimeSecond if TimeSecond>60 then dim comm as Object set comm = CreateObject("ADODB.Command") comm.CommandText = "INSERT INTO ErrorTable (name,code,tm) Values ('"+"Проведение документа превысило допустимый интервал"+"',1,'"+str(now)+"'" comm.ActiveConnection = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=false;Initial Catalog=IMPORT_FROM_EXCEL;Data Source=test" comm.execute end if Window SetContext, "Caption={1С:Предприятие - *}", "" Window CloseWin, "", "" else Window SetContext, "","" InputKeys "{ENTER}" end if else Window SetContext, "","" InputKeys "{ENTER}" end if End Sub Проверка функциональности может выполняться по всем направлениям ИТ системы. Проводя подобный мониторинг системы можно более точно собрать статистику о простоях системы или о потерях части функционала. Это может быть и проверка отчетов, и проверка ввода первичных документов, и проверка проводок или движений документов. Разумеется, подобные тесты должны запускаться с каким то определенным интервалом времени, что бы не нагружать дополнительно ИТ систему. В результате у ИТ директора или у руководителя компании будет полная достоверная информации об надежности системы. У компании "СофтПоинт", которая является бизнес партнером компании IBM, имеются решения для подобного мониторинга и оперативного оповещения администраторов о проблемах в системе, как на базе программных продуктов IBM Rational Robot, так и на базе программного комплекса собственной разработки "Мониторинг производительности MS SQL систем". Также компания "СофтПоинт" может предложить услуги по разработке и настройке системы автоматического тестирования на базе продуктов IBM Rational, которые включают в себя обязательное обучение администраторов ИТ системы.
Перепечатка, воспроизведение в любой форме, распространение, в том числе в переводе, любых материалов с сайта www.softpoint.ru возможны только с письменного разрешения компании "СофтПоинт". Это правило действует для всех без исключения случаев, кроме тех, когда в материале прямо указано разрешение на копирование (основание: Закон Российской Федерации "Об авторском праве и смежных правах").
|