XEVENTS SYSTEM HEALTH

Olá pessoal tudo certo? No assunto de hoje vou continuar a falar sobre os xevents, desta vez sobre a system_health, já ouviram falar sobre?

Com a chegada dos extended events, no SQL Server 2008, foi introduzida uma sessão default de extend events chamada de system_health que se inicia automaticamente junto com o serviço do SQL Server. O seu objetivo é dar base para o troubleshooting, mas com um foco de suporte, identificando problemas críticos que podem afetar adversamente a carga de trabalho.

Para uma visão melhor de como ela pode ser útil em um troubleshotting, abaixo está a listagem oficial dos eventos que ela pode coletar:

-The sql_text and session_id for any sessions that encounter an error that has a severity >=20.
-The sql_text and session_id for any sessions that encounter a memory-related error. The errors include 17803, 701, 802, 8645, 8651, 8657 and 8902.
-A record of any non-yielding scheduler problems. (These appear in the SQL Server error log as error 17883.)
-Any deadlocks that are detected.
-The callstack, sql_text, and session_id for any sessions that have waited on latches (or other interesting resources) for > 15 seconds.
-The callstack, sql_text, and session_id for any sessions that have waited on locks for > 30 seconds.
-The callstack, sql_text, and session_id for any sessions that have waited for a long time for preemptive waits. The duration varies by wait type. A preemptive wait is where SQL Server is waiting for external API calls.
-The callstack and session_id for CLR allocation and virtual allocation failures.
-The ring_buffer events for the memory broker, scheduler monitor, memory node OOM, security, and connectivity.
-System component results from sp_server_diagnostics.
-Instance health collected by scheduler_monitor_system_health_ring_buffer_recorded.
-CLR Allocation failures.
-Connectivity errors using connectivity_ring_buffer_recorded. 
-Security errors using security_error_ring_buffer_recorded.


Pela interface do SQL Server Management Studio podemos chegar na system_health indo em “Management > Extended Events > Sessions” conforme imagem abaixo:


Os arquivos XEL gerados pela sessão system_health ficam armazenados no mesmo diretório do ERRORLOG:

 

Clicando duas vezes em cada um deles você verá as informações no Management Studio:


Um outra forma de verificar o que foi coletado pelos arquivos XEL é através da utilização de queries utilizando a function sys.fn_xe_file_target_read_file, alguns exemplos podem ser encontrados no site abaixo: 


A Microsoft recomenda que a system_health não seja apagada, porém caso ocorra, é possível restaurar a mesma através do script u_tables.sql, localizado no diretório de instalação do seu SQL Server: 

C:\Program Files\Microsoft SQL Server\MSSQL11.<instanceid>\MSSQL\Install 

Outros links utilizados para escrita deste post:  


Espero que tenham gostado pessoal e até a próxima!

Nenhum comentário:

Postar um comentário