Fala galera, Feliz 2022 a todos! Desejo a vocês um excelente ano!
Estou iniciando uma serie de posts sobre uma funcionalidade nova (e espetacular) do azure chamada SQL Insights que realiza o monitoramento de ambientes de banco de dados SQL Server, seja ele no próprio azure ou até mesmo em ambiente On premise.
Antes de continuar gostaria de agradecer ao Andre Rodrigues e ao Roberto Cavalcanti que fizeram uma palestra sobre o tema no MVPConf de 2021. Assistindo a palestra deles vi uma grande possibilidade com a funcionalidade e passei a estudar sobre ela e aplicar no meu dia a dia a sua utilização.
Nesse primeiro post da serie eu quero abordar alguns pontos importantes sobre o que de fato é um monitoramento de um ambiente SQL Server e porque o monitoramento é importante. Vale destacar que o acompanhamento de métricas e alertas esta muito relacionado com o dia a dia de quem começa na área como um DBA SQL Server Jr, portanto, esse é um tema importante para você que esta começando na área.
O monitoramento nada mais é que acompanhar alguns indicadores tanto do SQL Server quanto do sistema operacional e ele é parte importante quando você começa a administrar um determinado ambiente de um novo cliente.
Quando você inicia a administração de um ambiente de SQL Server novo precisamos criar um Base Line, que é identificar um comportamento padrão do ambiente. Veja o exemplo, você começa a acompanhar o servidor e vê que ele fica sempre com consumo total entre 70 e 80% de memória e o SQL Server consome sempre entre 65 e 70% da memória. Quando através do acompanhamento constante dessa métrica você detectar que o consumo de memória do servidor esta atingindo 90% você consegue saber que tem algo diferente acontecendo ali, pois "saiu do padrão", comparando com o seu base line inicial.
Para o base line não existe uma regra mas é um bom começo monitorar por uma semana as métricas que você ou sua equipe entendem como necessárias. Esse tempo é suficiente para pegar o valor dos indicadores em vários momentos diferentes e ser algo mais próximo da realidade do cliente, em alguns cenários pode fazer sentido acompanhar até por 1 mês quando se tem rotinas que só rodam em um determinado dia do mês (como um fechamento contábil, por exemplo).
Alguns indicadores que na minha visão não podem faltar em um base line:
- Consumo médio de CPU (geral da máquina)
- Consumo médio de CPU (somente do SQL Server)
- Consumo médio de memória (geral da máquina)
- Consumo médio de memória (somente do SQL Server)
- Disco: Media leitura/s
- Disco: Media escrita/s
- Page life expectancy (quanto tempo uma pagina de dados dura na memória)
- Batch Requests/sec (quantos comandos estão sendo executados por segundo)
- Page Splits/sec (esforço de leitura de dados que estão "quebrados" em mais de uma pagina de armazenamento)
- SQLServer Databases - Transactions/sec
- Espaço em disco onde esta o banco de dados
- Espaço em disco onde esta o backup
Como DBA você pode acrescentar mais indicadores (quantos quiser, existem centenas), mas essa lista acima é o mínimo.
Uma vez que você já tem esse padrão do ambiente, basta continuar monitorando os mesmos para detectar desvios que justifiquem um problema ou muitas vezes até pegar um problema logo no início e já tomar uma ação rápida para ajustes e no final o cliente nem percebe que havia algo começando ali por trás.
Ao longo do tempo os DBAs usaram diversas formas para ter essas informações e criar os seus monitoramentos ativos nos clientes, ferramentas como Performance monitor no windows, CDC no SQL Server, e o mais comum são os scripts, comum um DBA desenvolver scripts ou aproveitar o que existe na comunidade para criar jobs que executam periodicamente no ambiente e fazem a coleta das informações e guardam em uma tabela, por exemplo, para leitura posterior(Imagine que você tem 80 clientes, terá que acessar um por um configurando todos os jobs, alertas e databasemail, um trabalhão, e se precisar alterar um job? tem que acessar todos novamente). Uma outra alternativa sempre foi a utilização de ferramentas de terceiros como da Red Gate e Solaris, porém são opções bem caras.
Um outro fator importantíssimo para acrescentar nesse processo são os alertas. Você não vai ficar o dia todo conferindo essas coletas de métricas de todos os seus clientes procurando algo fora do comum, o DBA automatiza esse processo com alertas baseado em uma condição, por exemplo, você deseja receber um alerta por e-mail quando o servidor de SQL Server de um cliente atingir mais de 90% de consumo de memória.
Dessa forma, o DBA tem um monitoramento ativo de todos os ambientes. Dentro do SQL Server existe o databasemail que é uma funcionalidade para disparos de e-mail que pode facilitar a configuração e automatização dos alertas.
A grande questão em todo esse processo é a frequência de coleta, o quanto cada um dos processos pesa no ambiente, todo o trabalho de entregar a informação final a tempo de uma tomada de ação que faça sentido.
É ai onde eu vejo o grande salto que nós DBAs SQL Server podemos ter usando o SQL Insights! Essa funcionalidade que ainda esta como "Preview", é capaz de reunir em um único local o monitoramento de diversos ambientes, você pode escolher quais métricas(praticamente todas as informações que se pode obter com as dmvs do SQL Server além de indicadores personalizados) , você pode acompanhar com gráficos, intervalo de tempo e o principal, criar alertas de forma centralizada, que podem ser aplicados em todos os ambiente que você esta monitorando, esses alertas podem ser disparados por e-mail (pelo próprio portal do azure) ou até mesmo por SMS, incrível não é?
A configuração é tranquila e fácil de escalar. Claro que existe custo, mas nessa série de posts sobre o SQL Insights eu vou te ensinar o passo a passo de como criar uma solução completa e dar algumas dicas de segurança bem como reduzir o custo de implantação.
No próximo post vou dar mais detalhes sobre como funciona o SQL Insights, quais os requisitos para implantar e iremos criar os recursos necessários no portal do Azure.
Eu espero você!
Gostou do post? Compartilha com seus colegas que querem ser um DBA SQL Server!
Nos acompanhe em nossas redes sociais!
Grupo VIP Telegram: DBA On boarding
Youtube(conteúdo diário): DBA On boarding
Face & Instagram(conteúdo diário): DBA On boarding
Até a próxima, tchau!
留言