Что такое сессия Extended Events по-умолчанию (system_health)

Что такое сессия Extended Events по-умолчанию (system_health)

Перевод и дополнение: What is the system_health extended events session?

Подобно трассе по-умолчанию (defaul trace), system health — это сессия Extended Events, которая автоматически запускается, когда экземпляр SQL Server стартует и собирает информацию о происходящем на сервере.

ИЗ BOL можно узнать, что она собирает:

  • Ошибки со срочностью >= 20
  • Ошибки, относящиеся к памяти (17803, 701, 802, 8645, 8651, 8657 и 8902)
  • Дедлоки
  • Сессии, которые ожидали блокировки более 30 секунд
  • Ошибки CLR allocation & virtual allocation
  • и тд.

Наиболее полезные события, это ошибки, дедлоки и ожидания блокировок. Обратите внимание, что system_health возвращает иную информацию, нежели трасса по-умолчанию.

Хорошо, мы собираем данные, но где они хранятся? Если вы посмотрите в SSMS, вы увидите 2 места хранения:



Первое место хранения находится на файловой системе и файлы имеют названия типа system_heals*.xel, обратите внимание, что подобных файлов обычно несколько, за исключением моментов, когда SQL Server был совсем недавно установлен, хранятся они примерно по следующему пути C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Log. Второе место хранения находится ориентировочно по пути Program Files\Microsoft SQL Server\130\Setup Bootstrap\Log\, здесь файлы так же имеют название типа system_health*.xel, но длина названия значительно больше.

Теперь мы знает что такое system_health сессия и где она хранится, но как же нам посмотреть что она собирает?

Исчерпывающую информацию вы можете найти здесь. Рассмторим основные возможности:

Вы можете открыть 1 или более файлов *.xel через SSMS

Посмотреть текущую сессию через «View target data»

Когда вы открываете второе место хранения (ring_buffer), то вы получите информацию в виде XML, которую не так просто понять.

Наблюдать только новые события с момент открытия окна «Watch Live Data»

С помощью табличной функции в запросе

SELECT * FROM sys.fn_xe_file_target_read_file ('system_health*.xel',null,null,null)

Информация возвращается в виде XML. Вы можете воспользоваться XQuery для работы с ней. Это очень удобно, так как позволяет работать с информацией очень гибко.

Заключение

Сессия Extended Events по-умолчанию (system_health) собирает очень полезные события о работе вашего SQL Server, в моей практике она не раз помогала понять причины проблем или хотя бы направляла в нужную сторону. Самое ценное в system_health то, что она работает «из коробки» и позволит получить некоторую информацию из прошлого, даже если никакого мониторинга настроено не было.

Запись опубликована в рубрике Мониторинг с метками . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Войти с помощью: