Пример использования 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 возможны только с письменного разрешения компании "СофтПоинт". Это правило действует для всех без исключения случаев, кроме тех, когда в материале прямо указано разрешение на копирование (основание: Закон Российской Федерации "Об авторском праве и смежных правах").