Обновление 14.04.2024
- Добавлен импорт событий query_post_execution_showplan Extented Events для получения актуальных планов длительных событий.
- Добавлено сопоставление длительных событий технологического журнала с длительными событиями query_post_execution_showplan Extented Events.
- Для длительных событий технологического журнала добавлено отображение плана запроса в формате XML, возможность открытия плана в сторонней программе просмотра планов запросов, информации об используемой статистики и её актуальности при компиляции плана, значения параметров запроса с которыми произошла компиляция плана, с которыми запрос выполнялся.
Обновление 23.03.2024
- Добавлена возможность сбора исключений MS SQL Server по данных из технологического журнала 1С с классификацией по типу исключения.
- Добавлен импорт событий block_report Extented Events.
- Добавлен отчет "Анализ блокировок СУБД" (Сопоставляются данные из технологического журнала 1С и данные block_report Extented Events).
Состав программного комплекса
- Расширение YellowWatcher.cfe, совместимость не ниже 8.3.15, платформа не ниже 8.3.23 (регламентные задания в расширении).
- Нативная внешняя компонента yellow-watcher-addin.dll (только windows x64).
- Windows сервис yellow-watcher.exe (только windows x64).
- Шаблон настройки технологического журнала logcfg.xml.
- Скрипт YellowWatcher.sql для настройки событий block_report, query_post_execution_showplan для Extented Events.
Общее описание
Программный комплекс предназначен для мониторинга качества работы информационных баз, работающих в режиме клиент-серверной архитектуры на ОС семейства Windows и использующих СУБД MS SQL Server. Основным компонентом взаимодействия с пользователем является расширение YellowWatcher.cfe, которое является самодостаточным и может быть установлено в любую информационную базу. Исходя из опыта использования по удобству эксплуатации хорошо подходит конфигурация "Центр Контроля Качества" от фирмы 1С.
Для сбора информации об управляемых блокировках и длительных запросах к СУБД используется информация из технологического журнала, которая собирается и анализируется сервисом yellow-watcher.exe. Результат анализа, строкой в формате json, отправляется в http-сервис расширения, где конвертируется в объектные сущности информационной базы.
Для более подробного анализа нагрузки, создаваемой запросами в СУБД, необходимо использовать Query Store из состава MS SQL Server. Регламентное задание "Анализ хранилища запросов (YellowWatcher)" периодически обращается к серверу СУБД, получает необходимую информацию таблиц Query Store в виде строки формата json и конвертирует её в объектные сущности информационной базы.
Основное достоинство программного комплекса - обработка текстов запросов. Тексты запросов нормализируются (удаляются все незначащие символы, номера временных таблиц, параметры и т.п.), а затем вычисляется хеш. Данное решение позволяет просто получать контекст прикладного кода конфигурации 1С по тексту запроса, полученного из Query Store, Profiler или другим способом из СУБД напрямую.
Порядок установки
- Установить расширение YellowWatcher.cfe в информационной базе.
- Опубликовать http-сервис YellowWatcher_IntegrationService.
- Добавить пользователя в информационную базу, установить ему аутентификацию средствами 1С, назначить роль YellowWatcher_IntegrationService.
- На рабочих серверах кластера 1С настроить технологический по предложенному шаблону, секция plansql обязательна.
<?xml version="1.0"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">"
<log location="C:\LOGS_YW" history="1">
<event>
<eq property="Name" value="TTIMEOUT"/>
</event>
<event>
<eq property="Name" value="TDEADLOCK"/>
</event>
<event>
<eq property="Name" value="TLOCK"/>
<ne property="WaitConnections" value=""/>
</event>
<event>
<eq property="name" value="DBMSSQL"/>
<ge property="durationus" value="3000000"/>
</event>
<event>
<eq property="Name" value="EXCP"/>
</event>
<property name="all"/>
</log>
<plansql/>
</config>
- На рабочие сервера кластера 1С установить службу "Yellow Watcher Service". Для установки необходимо скопировать файл yellow-watcher.exe в заданный каталог и под правами администратора в консоли выполнить команду "yellow-watcher.exe -M install". Для работы службы достаточно прав "Local system".
- После установки службы в каталоге будет создан файл settings.json, необходимо его отредактировать для корректной работы службы. Где logs_path - каталог технологического журнала, service_path - адрес публикации http-service для отправки данных, user и password - параметры аутентификации для отправки данных по http, log_storage_duration_in_hours - глубина хранения логов работы сервиса, duration_long_request - длительность события DBMSSQL в ТЖ при котором запрос считается длительным. Пример настройки:
{
"logs_path": "С:\\LOGS_YW",
"service_path": "http://server-iis/qmc/hs/IntegrationService/Load",
"user": "YellowWatcher",
"password": "YellowWatcher",
"log_storage_duration_in_hours" : 24,
"duration_long_request" : 3000000
}
- После запуска службы и обработки данных в информационной базе, где установлено расширение YellowWatcher будут доступны для использования следующие отчеты: "Анализ длительных запросов" и "Статистика управляемых блокировок".
- Для получения данных из Query Store, которое должно быть включено на сбор данных на стороне СУБД, необходимо настроить параметры прямого подключения к базе данных (у пользователя должны быть права на чтение из Query Store). В справочнике "Базы данных" для выбранной базы необходимо указать драйвер ODBC = "ODBC Driver 17 for SQL Server", с помощью которого нативная компонента будет подключаться к базе. Данный драйвер должен быть установлен на сервер, на котором расположен сервер 1С:Предприятие с установленным расширением. Так же необходимо указать сервер СУБД, порт, базу данных на сервере, пользователя и пароль. Не рекомендуется создавать элементы данного справочника интерактивно, т.к. наполнение происходит при обработке событий DBMSSQL из данных технологического журнала. Пример настройки:
- Для включения экспорта данных из Query Store необходимо установить флаг "Анализ хранилища запросов" на закладке "Основное" элемента справочника "Базы данных".
- После выполнения настройки подключения к Query Store будут доступны следующие отчеты: "Анализ запросов" и "Анализ ожиданий СУБД".
- Для импорта данных block_report необходимо на сервере MS SQL настроить сбор событий Extented Events для всего сервера. А так же установить пороговое значение заблокированного процесса blocked process threshold в 10 секунд. В трассировку Extented Events будут попадать события, время ожидания которых превысит 10 секунд.
sp_configure 'blocked process threshold', 10
go
reconfigure
go
CREATE EVENT SESSION [block_report] ON SERVER
ADD EVENT sqlserver.blocked_process_report(
ACTION(sqlserver.client_app_name,sqlserver.database_id,sqlserver.database_name,sqlserver.query_hash,sqlserver.session_id,sqlserver.sql_text))
ADD TARGET package0.event_file(SET filename=N'D:\trc\block_report',max_file_size=(32),max_rollover_files=(8))
WITH (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=5 SECONDS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=NONE,TRACK_CAUSALITY=OFF,STARTUP_STATE=ON)
GO
- Для выполнения импорта данных block_report в конфигурацию YellowWatcher необходимо выполнить настройки элемента справочника "Базы данных" на странице "Заблокированные процессы (Ext. Events)".
- Для импорта данных query_post_execution_showplan настроить сбор событий Extented Events для всего сервера. Так же необходимо установить каталог файлов, маску файлов и признак выполнять анализ на странице "Длительные запросы (Ext. Events)" соответствующего элемента справочника "Базы данных".
Сервисная обработка "Монитор информационной базы"
Для работы данной сервисной обработки необходимы дополнительные компоненты системы 1С:Предприятие. Для выполнения административного подключения к кластеру 1С необходимо настроить утилиту RAS из поставки платформы 1С:Предприятие. Так же на сервере 1С в каталоге платформы должна быть установлена утилита управления автономным сервером ibcmd. Так же необходимо заполнить следующие настройки у элемента справочника "Кластеры 1С":
Сервер RAS, как пример server-1C:1545
Каталог кластера, как пример \\server-1C\1cv8\srvinfo_1540 (данный каталог должен быть доступен с сервера, на котором расположена база с расширением YellowWatcher).
Сервисная обработка "Хеш запроса"
Позволяет по тексту запроса, полученного из СУБД (Query Store, Profiler и т.п.) получить хеш запроса для сопоставления его с запросами из ТЖ, получить контексты вызовов прикладного кода, которые выполняют данные запросы. На форме присутствует страница с динамическим списком регистра сведений "Длительные запросы" с отбором по хешу запроса и за период 24 часа от текущего момента времени.