segunda-feira, 26 de junho de 2017

Monitorando Cluster Shared Volumes

Olá!

Neste artigo veremos como monitorar os discos de um cluster de failover Microsoft utilizando o LLD do Zabbix. Se você não sabe o que é um cluster de failover, sugiro dar uma estudada aqui.

De modo geral, os discos que são apresentados a um cluster possuem um "dono". Isso quer dizer que a propriedade de leitura e gravação naquele disco é de um dos nós do cluster, e somente dele. Com o recurso de CSV (Cluster Shared Volumes), ou volumes compartilhados do cluster, é possível que dois ou mais nós do cluster gravem dados em um mesmo volume ao mesmo tempo. Isso também agiliza o processo de failover, pois não é necessária a montagem e desmontagem do volume para a troca de propriedade. Mais informações sobre CSV aqui

Um dos pequenos "problemas" de se usar CSV é que o cluster simplesmente consome o volume e direciona-o para um diretório em C:\ClusterStorage\VolumeX, com X sendo incrementado a cada novo volume adicionado aos CSV.

Levando em conta que não poderíamos simplesmente monitorar os discos naturalmente através das chaves padrão do Zabbix (pois os discos não "existem" mais!), só nos restou desenvolver um script para coletar estes dados de forma dinâmica, através do LLD. Você pode baixá-lo aqui. Depois de baixá-lo, salve-o em um diretório de sua escolha.



1) Testando o script


A maioria dos scripts que acabo criando para fazer LLD fazem a descoberta quando executados sem parâmetro algum. Quando executado dessa forma, lista todos os discos CSV do seu cluster e formata a saída em formato JSON, utilizando a macro {#VOLNAME} para cada disco descoberto. É com base no valor dessa macro que o nome do disco será adicionado ao item de monitoramento e depois também utilizado nas coletas.
C:\caminho\do\seu\script\MonitorCSV.ps1

Acima vemos que o script encontrou somente 1 disco adicionado ao cluster em modo CSV.

Explore o script para descobrir que ele aceita 4 argumentos: used, free, pfree e total. Por exemplo, se quiser saber o tamanho total do disco 11, execute o comando a seguir:
C:\caminho\do\seu\script\MonitorCSV.ps1 "Cluster Disk 11" total


2) Adicionando o script ao Zabbix

Eu disponibilizei um template aqui para monitoramento, mas abaixo segue como criar a regra de descoberta:


  • a) Primeiro vamos criar a regra de descoberta em si, que consumirá os dados gerados no arquivo JSON. Isto processará periodicamente todos os volumes disponíveis. Caso um novo seja encontrado, os itens serão criado também para este novo item.



  • b) Agora criaremos os itens. Abaixo segue os detalhes de cada item que criei. O LLD criará novos itens iguais a esse para cada volume que encontrar.




  • c) Agora criaremos os protótipos de trigger em seguida gráficos:




Dessa forma, todos estes elementos serão criados para cada novo disco adicionado de forma dinâmica, sem a necessidade de ter que criá-los manualmente.

Espero que seja útil.

Grande Abraço!

14 comentários:

  1. Parabéns pela iniciativa Luiz. Os dados do grafico para o volume usado não esta trazendo os dados, teria alguma dica?

    ResponderExcluir
  2. O que devo adicionar no CONF do agente do Zabbix? O que fazer com o script ps1?

    ResponderExcluir
    Respostas
    1. Hugo, você deve adicioná-lo via UserParameter no conf do Zabbix.

      Excluir
    2. Seria este parâmetro somente?
      UserParameter=vol.discovery[*],powershell.exe -NoProfile -ExecutionPolicy Bypass -file "C:\temp\MonitorCSV.ps1"
      Caso negativo poderiam me passar o parametro. obrigado

      Excluir
    3. UserParameter=vol.discovery[*],powershell.exe -NoProfile -ExecutionPolicy Bypass -file "C:\temp\MonitorCSV.ps1" "$1" "$2"

      Você tem que colocar $1 e $2 ao final, pois passará parâmetros para o script.

      Excluir
    4. Muito obrigado Luiz, tudo funcionando. Muito obrigado.

      Excluir
    5. Hugo, poderia dizer qual foi o "pulo do gato"? No meu caso os dados não são exibidos.

      Excluir
  3. Colega, nos dados recentes os dados aparecem?

    ResponderExcluir
    Respostas
    1. Sim apareceram, com os nomes dos discos e a opção de Clicar em Graficos, que não mostram nada. Acredito que precise de um tempo. Mais se for possivel dar uma olhada no UserParameter que mandei acima, se esta correto.

      Excluir
    2. Hugo, respondi seu post anterior informando que você tem que colocar dois parâmetros ao final do UserParameter.

      Excluir
  4. Se executar via PS é apresentado os volumes. Via Zabbix, mesmo adicionando o parâmetro ao conf os dados não são exibidos.

    UserParameter=vol.discovery[*],powershell.exe -NoProfile -ExecutionPolicy Bypass -file "C:\Zabbix\volumes.ps1" "$1" "$2"
    LogFile=C:\Zabbix\zabbix_agentd.log
    Timeout=30

    ResponderExcluir
    Respostas
    1. Magno, tente também habilitar comandos remotos:

      EnableRemoteCommands=1

      Excluir
  5. Luiz Fernando, boa noite!
    Excelente Tutorial.
    Luiz, com o script como está eu obtenho apenas o tamanho total lá no zabbix. Ou eu preciso adaptá-lo aqui para lá me levar used, free, pfree ou total?

    ResponderExcluir
    Respostas
    1. Ivan, o script já espera os parâmetros free, total, ofere e used.

      Só usar. /)

      Excluir