sexta-feira, 13 de junho de 2014

Monitorando servidores Microsoft SQL Server - It`s free! - Parte 04 - Season Finale

Olá pessoal!

Não deixem de conferir as partes anteriores (parte 01parte 02 e parte 03).

Neste post vamos utilizar, na minha opinião, a forma mais interessante de monitoramento com o Zabbix, o monitoramento via agente. Todo profissional que lida com a plataforma Microsoft em algum momento teve de utilizar o famoso "perfmon" para criar um "Data Collector" ou visualizar em tempo real algum indicador do Windows. 


Quando tratamos do Microsoft SQL Server também temos este recurso como um enorme aliado tanto para monitorar, quanto para dimensionar nosso servidor. Porém, muitas vezes tanto a visualização em tempo real quanto a criação de "Data Collector's" não é o suficiente para que tenhamos total consciência da capacidade e performance do mesmo.

Este é o ponto aonde o Zabbix entra como aliado, pois podemos criar nele contadores baseados em itens do "perfmon" e utilizar sua estrutura para armazenar histórico e monitorar o servidor em tempo real. Como base de exemplo, serão usados os indicadores mencionados no artigo do "SQL Server Customer Advisory Team" entítulado "Analyzing I/O Characteristics and Sizing Storage Systems for SQL Server Database Applications", você pode conferir todos os artigos deste excelente time aqui.

O primeiro passo será configurar o agente do Zabbix, o qual pode-se efetuar o download aqui. Crie no servidor Microsoft SQL Server uma pasta no "C:\" chamada zabbix e nela copie os seguintes arquivos do zip (lembrando que no meu caso o servidor Microsoft SQL Server está com um Windows 64 bits):

[zip]\bin\win64\zabbix_agentd.exe
[zip]\bin\win64\zabbix_get.exe
[zip]\bin\win64\zabbix_sender.exe
[zip]\conf\zabbix_agentd.win.conf  (que após ser copiado deve ser renomeado para zabbix_agentd.conf)

Com a pasta criada, edite o arquivo "zabbix_agentd.conf" com valores conforme os prints:


Lembrando que nas linhas "SourceIP" e "Server" deve-se colocar o IP do "Zabbix Server", que provavelmente será diferente dos existentes no print.


Para efetuar a instalação do agente do Zabbix como serviço, deve-se usar a seguinte linha de comando:

C:\zabbix\zabbix_agentd.exe --install --config C:\zabbix\zabbix_agentd.conf

Para iniciar o serviço, pode-se utilizar o Powershell:

Start-Service -Name 'Zabbix Agent'

E para verificar o status do serviço:

Get-Service -Name 'Zabbix Agent'

Na console do Zabbix vá para o menu "Configuration / Hosts".



Clique no link "Items" na linha respectiva à máquina que será monitorada, no caso "R2D2".



Clique no botão "Create Item" no canto superior direito.


Nesta tela indica-se ao "Zabbix Server" quais contadores do "perfmon" deverão ser capturados e armazenados. Os campos que deverão ser alterados são:
  • "Name" - Nome de exibição do contador dentro do Zabbix;
  • "Key" - Contador que deve ser capturado;
  • "Host Interface" - Conforme configurado anteriormente no cadastro de "Host", sua máquina monitorada pode ter mais de uma interface de rede, porém efetuar o monitoramento por uma interface específica;
  • "Type of Information" - Para os casos aqui apresentados será "Numeric (float)";
  • "Unit" - Descrição da unidade de medida do item, posteriormente exibida no eixo do gráfico;
  • "Use custom multiplier" - para alguns itens é interessante que o valor seja multiplicado por uma constante de escala antes de ser salvo;
  • "Update interval (in sec)" - intervalo em segundos que o "Zabbix Server" deve consumir os dados do agente;
  • "Aplications" - Agrupador de "Item's", será utilizada a opção de "Disk partitions" nos exemplos a seguir.
Antes de criar os "Item's", é necessário saber o que está disponível para ser monitorado no servidor Microsoft SQL Server. Para gerar uma lista de todos os contadores possíveis, utilize a seguinte linha de comando no "Prompt de comando":

typeperf -qx > C:\zabbix\items.txt

Cada linha no "items.txt" é um contador disponível que pode ser adicionado ao Zabbix para monitoramento. No campo "Key" de cada "Item" deve-se colocar a seguinte estrutura:

perf_counter[[linha_items.txt], [numero]]

Aonde:
  • "perf_counter[]" - indica que este "Item" coletará um contador do "perfmon";
  • "[linha_items.txt]" - contador do "perfmon" que deverá ser coletado;
  • "[numero]" - quantidade de segundos que o agente deve usar para realizar a média do contador.
Para todos os exemplos usaremos "Update interval (in sec)""[numero]" com o valor de 15, isso quer dizer que, a cada 15 segundos o Zabbix coletará uma média dos valores do contador nos últimos 15 segundos.

A seguir um print de cada "Item" criado e configurado no Zabbix, todos monitoramentos foram criados para unidade "I:":










Com os "Item's" criados, o Zabbix já começará a coletar as informações e armazená-las em seu banco de dados. Para facilitar a visualização, criaremos um gráfico correspondente  para cada "Item", vá novamente em "Configuration / Hosts" e agora clique no link "Graphs" na linha respectiva à máquina que será monitorada, no caso "R2D2".



Clique no botão "Create Graph" no canto superior direito.



Esta tela é muito mais simples que a de "Item's":

  • "Name" - Nome do gráfico, será utilizado o mesmo nome do "Item" respectivo;
  • "Show Legend" - Como será um "Item" por "Graph", esta opção deve ser desmarcada;
  • "Add" - Link para tela aonde se escolhe o "Item" que deve ser plotado no gráfico.

Assim como para os "Item's", a seguir um print de cada "Graph" criado e configurado no Zabbix:











Agora além de coletarmos os dados, temos como visualizá-los de uma forma amigável. O próximo passo é criar uma tela que agrupe todos os gráficos, pois no dia-a-dia não é funcional olhar um gráfico por vez. Entre em "Configuration / Screens".


Clique no botão "Create Screen" no canto superior direito.


Conforme informado anteriormente todos os "Item's" foram configurados para monitorar os indicadores da unidade "I:\" sendo assim o nome desta "Screen", neste caso, será "PhysicalDisk(5 I:)", como são nove "Graphs", a "Screen" deverá ser criada com duas colunas e dez linhas.


Após a "Screen" criada clique no botão "Edit" da respectiva.


Clique em "Change" no primeiro quadrado da "Screen".


Clique em "Select" para ir para a listagem de "Graphs" existentes e selecione o de nome "r2d2: PhysicalDisk(5 I:) - Disk Reads/sec" e pressione "Save".


Repita este processo para todos os "Graph's" criados anteriormente. Após isso vá em "Monitoring / Screens" e selecione no canto superior direito a "Screen" recém criada. Abaixo um exemplo de como ficará após o início do monitoramento.


O produto final, em minha opinião, é uma ferramenta muito útil para várias situações:
  • Monitoramento em sí, obviamente;
  • Análise de comportamento do servidor em determinados períodos;
  • Testes de impacto em mudanças de software, para o caso de sua empresa ser uma fábrica de software;
  • Previsão de infra estrutura para projetos futuros.
Este é o ultimo post desta temporada do Zabbix, no futuro pretendo voltar a falar dele pois ainda existem muitas features a serem exploradas.

Até logo e obrigado pelos peixes!

Um comentário:

  1. Post bom, porém faltou a criação dos Alertas (Triggers). ;)

    ResponderExcluir