Мониторинг скриптов Python и R с использованием расширенных событий в службах машинного обучения SQL Server

Применимо к: SQL Server 2016 (13.x) и более поздних Управляемый экземпляр SQL Azure

Сведения о том, как использовать расширенные события для мониторинга операций, относящихся к службам машинного обучения SQL Server, панели запуска SQL Server и внешним скриптам заданий Python или R, а также устранять связанные с такими операциями неполадки.

Расширенные события для служб машинного обучения SQL Server

Чтобы просмотреть список событий, связанных со службами машинного обучения SQL Server, выполните следующий запрос из Azure Data Studio или SQL Server Management Studio.

SELECT o.name AS event_name, o.description
FROM sys.dm_xe_objects o
JOIN sys.dm_xe_packages p
ON o.package_guid = p.guid
WHERE o.object_type = 'event'
AND p.name = 'SQLSatellite';

Дополнительные сведения об использовании расширенных событий см. в статье Средства расширенных событий.

Дополнительные события, относящиеся к службам машинного обучения

Дополнительные расширенные события доступны для компонентов, которые связаны со службами машинного обучения SQL Server и используются ими, таких как Панель запуска SQL Server, BXLServer или вспомогательный процесс, запускающий среду выполнения Python или R. Такие дополнительные расширенные события вызываются из внешних процессов и, соответственно, должны записываться внешней служебной программой.

Дополнительные сведения см. в разделе Сбор событий из внешних процессов.

Таблица расширенных событий

Событие Описание Примечания
connection_accept Происходит при принятии нового подключения. Это событие регистрирует все попытки подключения.
failed_launching Сбой при запуске. Указывает на ошибку.
satellite_abort_connection Прерывание записи подключения.
satellite_abort_received Возникает при получении сообщения о прерывании по вспомогательному соединению.
satellite_abort_sent Возникает при отправке сообщения о прерывании по вспомогательному соединению.
satellite_authentication_completion Возникает при завершении проверки подлинности для подключения по протоколу TCP или с помощью канала Namedpipe.
satellite_authorization_completion Возникает при завершении авторизации для подключения по протоколу TCP или с помощью канала Namedpipe.
satellite_cleanup Возникает, если вспомогательное подключение вызывает очистку. Активируется только внешним процессом. См. инструкции по сбору событий из внешних процессов.
satellite_data_chunk_sent Возникает при завершении отправки одного блока данных по вспомогательному соединению. При отправке фрагмента данных событие сообщает число строк, столбцов, использованных пакетов SNI и затраченное время в миллисекундах. Эти сведения помогут вам понять, сколько времени потрачено при передаче различных типов данных и сколько пакетов использовано.
satellite_data_receive_completion Возникает при получении необходимых данных по запросу через вспомогательное соединение. Активируется только внешним процессом. См. инструкции по сбору событий из внешних процессов.
satellite_data_send_completion Возникает при отправке необходимых данных для сеанса через вспомогательное соединение.
satellite_data_send_start Вызывается при запуске передачи данных (непосредственно перед отправкой первого блока данных).
satellite_error Используется для трассировки ошибок вспомогательного соединения SQL.
satellite_invalid_sized_message Недопустимый размер сообщения.
satellite_message_coalesced Используется для трассировки сообщений, объединяющихся на сетевом уровне.
satellite_message_ring_buffer_record Запись в кольцевом буфере сообщений.
satellite_message_summary Сводные сведения об обмене сообщениями.
satellite_message_version_mismatch Поля версии сообщения не совпадают.
satellite_messaging Используется для трассировки событий при обмене сообщениями (привязка, отмена привязки и т. д.).
satellite_partial_message Используется для трассировки неполных сообщений на сетевом уровне.
satellite_schema_received Возникает, если SQL получает сообщение схемы и выполняет его чтение.
satellite_schema_sent Возникает при отправке сообщения схемы через вспомогательное соединение. Активируется только внешним процессом. См. инструкции по сбору событий из внешних процессов.
satellite_service_start_posted Возникает при публикации сообщения о запуске службы на панели запуска. Это событие содержит идентификатор для нового сеанса и указывает панели запуска на запуск внешнего процесса.
satellite_unexpected_message_received Возникает при получении непредвиденного сообщения. Указывает на ошибку.
stack_trace Возникает при запросе дампа памяти процесса. Указывает на ошибку.
trace_event Используется для отслеживания. Эти события могут содержать сообщения о трассировке SQL Server, панели запуска и внешних процессов. К ним относится вывод в stdout и stderr из кода R.
launchpad_launch_start Возникает при запуске вспомогательного соединения на панели запуска. Активируется только на панели запуска. См. инструкции по сбору событий из launchpad.exe.
launchpad_resume_sent Возникает при запуске вспомогательного соединения и отправке сообщения о возобновлении на SQL Server с панели запуска. Активируется только на панели запуска. См. инструкции по сбору событий из launchpad.exe.
satellite_data_chunk_sent Возникает при завершении отправки одного блока данных по вспомогательному соединению. Содержит сведения о количестве столбцов, строк, пакетов и продолжительности отправки блока данных.
satellite_sessionId_mismatch Непредвиденный идентификатор сеанса сообщения.

Сбор событий из внешних процессов

Службы машинного обучения SQL Server запускают некоторые службы, которые выполняются вне процесса SQL Server. Чтобы записывать события, связанные с этими внешними процессами, необходимо создать файл конфигурации трассировки событий и поместить его в тот же каталог, в котором находится исполняемый файл для процесса.

Важно!

Начиная с версии SQL Server 2019 механизм изоляции изменился. Поэтому необходимо предоставить соответствующие разрешения для каталога, в котором хранится файл конфигурации трассировки событий. Дополнительные сведения о настройке этих разрешений см. в разделе Разрешения для файлов программы | SQL Server 2019 в Windows: изменения в изоляции в Службах машинного обучения.

  • Панель запуска SQL Server

    Чтобы фиксировать события, связанные с панелью запуска, поместите файл конфигурации (XML-файл) в каталог Binn экземпляра SQL Server. При установке по умолчанию это следующий каталог:

    C:\Program Files\Microsoft SQL Server\MSSQL_version_number.MSSQLSERVER\MSSQL\Binn.

  • BXLServer — это вспомогательный процесс, который поддерживает возможность расширения SQL с помощью внешних языков скриптов, таких как R и Python. Для каждого экземпляра внешнего языка запускается отдельный экземпляр BxlServer.

    Чтобы записывать события, связанные с BXLServer, поместите файл конфигурации (XML-файл) в установочный каталог R или Python. При установке по умолчанию это следующий каталог:

    R:C:\Program Files\Microsoft SQL Server\MSSQL_version_number.MSSQLSERVER\R_SERVICES\library\RevoScaleR\rxLibs\x64.

    Python:C:\Program Files\Microsoft SQL Server\MSSQL_version_number.MSSQLSERVER\PYTHON_SERVICES\Lib\site-packages\revoscalepy\rxLibs.

Имена файла конфигурации и исполняемого файла должны совпадать и записываться в формате [имя].xevents.xml. Другими словами, имя файла должно выглядеть следующим образом:

  • Launchpad.xevents.xml
  • bxlserver.xevents.xml

Файл конфигурации имеет следующий формат:

<?xml version="1.0" encoding="utf-8"?>  
<event_sessions>  
<event_session name="[session name]" maxMemory="1" dispatchLatency="1" MaxDispatchLatency="2 SECONDS">  
    <description owner="you">Xevent for launchpad or bxl server.</description>  
    <event package="SQLSatellite" name="[XEvent Name 1]" />  
    <event package="SQLSatellite" name="[XEvent Name 2]" />  
    <target package="package0" name="event_file">  
      <parameter name="filename" value="[SessionName].xel" />  
      <parameter name="max_file_size" value="10" />  
      <parameter name="max_rollover_files" value="10" />  
    </target>  
  </event_session>  
</event_sessions>  
  • Чтобы настроить трассировку, измените заполнитель session name, заполнитель для имени файла ([SessionName].xel) и имена событий, которые требуется записывать (например, [XEvent Name 1], [XEvent Name 1]).
  • Может появиться любое количество тегов пакетов событий. Все они будут собираться при условии, что атрибут имени правильный.

Пример Запись событий панели запуска

В следующем примере представлено определение трассировки событий для службы панели запуска:

<?xml version="1.0" encoding="utf-8"?>  
<event_sessions>  
<event_session name="sqlsatelliteut" maxMemory="1" dispatchLatency="1" MaxDispatchLatency="2 SECONDS">  
    <description owner="hay">Xevent for sql tdd runner.</description>  
    <event package="SQLSatellite" name="launchpad_launch_start" />  
    <event package="SQLSatellite" name="launchpad_resume_sent" />  
    <target package="package0" name="event_file">  
      <parameter name="filename" value="launchpad_session.xel" />  
      <parameter name="max_file_size" value="10" />  
      <parameter name="max_rollover_files" value="10" />  
    </target>  
  </event_session>  
</event_sessions>  
  • Поместите XML-файл в каталог Binn экземпляра SQL Server.
  • Этот файл должен иметь имя Launchpad.xevents.xml.

Пример Запись событий BXLServer

В следующем примере представлено определение трассировки событий для исполняемого файла BXLServer.

<?xml version="1.0" encoding="utf-8"?>  
<event_sessions>  
 <event_session name="sqlsatelliteut" maxMemory="1" dispatchLatency="1" MaxDispatchLatency="2 SECONDS">  
    <description owner="hay">Xevent for sql tdd runner.</description>  
    <event package="SQLSatellite" name="satellite_abort_received" />  
    <event package="SQLSatellite" name="satellite_authentication_completion" />  
    <event package="SQLSatellite" name="satellite_cleanup" />  
    <event package="SQLSatellite" name="satellite_data_receive_completion" />  
    <event package="SQLSatellite" name="satellite_data_send_completion" />  
    <event package="SQLSatellite" name="satellite_data_send_start" />  
    <event package="SQLSatellite" name="satellite_schema_sent" />   
    <event package="SQLSatellite" name="satellite_unexpected_message_received" />    
    <event package="SQLSatellite" name="satellite_data_chunk_sent" />   
    <target package="package0" name="event_file">  
      <parameter name="filename" value="satellite_session.xel" />  
      <parameter name="max_file_size" value="10" />  
      <parameter name="max_rollover_files" value="10" />  
    </target>  
  </event_session>  
</event_sessions>  
  • Поместите XML-файл в тот же каталог, в котором находится исполняемый файл BXLServer.
  • Этот файл должен иметь имя bxlserver.xevents.xml.

Дальнейшие действия