Após o post sobre tuning de mysql alguns leitores me questionaram sobre como eu fazia para monitorar a performance do disco e se eu poderia compartilhar o template.
Para monitorar a performance do disco de um servidor linux eu me utilizo de um script que trata as informações constantes no “arquivo” /proc/diskstats. Neste local conseguimos uma série de dados sobre performance de disco.
Para possibilitar a coleta destes dados é necessária a criação de parâmetros de usuário no agente do Zabbix instalado no servidor a ser monitorado. Os procedimentos aqui descritos importam a necessidade de um restart do agente de monitoração logo, se você vai aplicar isso em ambiente de produção certifique-se de possuir janela de manutenção autorizada (é claro que poder testar os procedimentos aqui descritos em um ambiente de laboratório é sempre recomendado).
Para a instalação deste template será preciso:
- Download do pacote do template;
- Instalar o script de coleta de dados;
- Ajustar permissões;
- Alterar o arquivo de configuração do Agente do Zabbix – no servidor a ser monitorado;
- Copiar o arquivo de configuração específico para permitir a execução do script;
- Reiniciar o agente do zabbix;
- Importar o template (Clique aqui para tutorial sobre importação de templates);
Todos os caminhos referenciados neste tutorial se referem a localizações padrões do zabbix 2.0. Se seu ambiente tiver sido instalado em localizações personalizadas poderão ser necessários alguns ajustes.
Efetue download do template e dos scripts clicando aqui ou execute os comandos abaixo no seu servidor. Nas minhas instalações costumo utilizar o /install ou o /tmp/install para baixar arquivos temporários de instalação do ambiente. Caso seu ambiente adote outro padrão favor modificar as duas primeiras linhas.
mkdir /tmp/install cd /tmp/install wget https://github.com/SpawW/zabbix-templates/blob/master/104-disk-performance/104-disk-performance.zip?raw=true unzip 104-disk-performance.zip
Caso prefira baixar os arquivos individualmente…
wget https://raw.github.com/SpawW/zabbix-templates/master/104-disk-performance/104-Disk-Performance-Linux.xml wget https://raw.github.com/SpawW/zabbix-templates/master/104-disk-performance/zadiskio.conf wget https://raw.github.com/SpawW/zabbix-templates/master/104-disk-performance/zadiskio.sh
O script deverá ser instalado na localização padrão para scripts externos e deveremos garantir que o usuário zabbix possui acesso a execução do mesmo.
cp zadiskio.sh /usr/local/share/zabbix/externalscripts/ chown zabbix: /usr/local/share/zabbix/externalscripts/zadiskio.sh chmod +x /usr/local/share/zabbix/externalscripts/zadiskio.sh
O Zabbix possui suporte à definição de diretório de arquivos de configuração. Esta funcionalidade é muito útil quando se quer proceder com uma monitoração de melhor qualidade o que, normalmente, implica em utilização de recursos adicionais aos nativos da ferramenta (que já são muitos).
Para habilitar é necessária a alteração do arquivo de configuração do agente zabbix (processo feito apenas uma vez, mesmo que se tenha vários arquivos de configuração adicinais).
vi /usr/local/etc/zabbix_agentd.conf
No meu caso a linha é a 217, mas isso pode variar de local para local. Você deve remover o comentário da linha abaixo:
#Include=/usr/local/etc/zabbix_agentd.conf.d/
Deixando conforme o exemplo abaixo e salvando o arquivo:
Include=/usr/local/etc/zabbix_agentd.conf.d/
Eu usei o vi para editar o arquivo, sintam-se livres para utilizar o editor que mais lhe agradar.
Copie o arquivo de configuração que adiciona a referência ao script de coleta de performance do disco para a localização informada na tag Include do agente.
cp zadiskio.conf /usr/local/etc/zabbix_agentd.conf.d/
Neste momento está concluída a de configuração dos arquivos, sendo necessário agora reiniciar o agente de monitoração, importar o template no Zabbix e aplicar o mesmo para a monitoração do servidor que teve o agente alterado.
Para reiniciar o agente do Zabbix em um servidor “RedHat / CentOS”:
service zabbix_agentd restart
Para reiniciar o agente do zabbix em um servidor “Debian”:
service zabbix-agent restart
Agora sairemos do modo shell para as configurações via interface web. Precisamos importar o arquivo 104_Disk_Monitor.xml. Observe que você precisará ter acesso ao arquivo XML, logo precisará que ele esteja na mesma estação de trabalho que você utilizar para acessar o Zabbix.
Observem que após a importação o zabbix alerta sobre o sucesso ou falha do processo, a tela deverá estar similar à imagem abaixo.
Após a importação do arquivo será criado um grupo chamado “100 – Linux” e, dentro deste grupo, um template chamado “104 – Disk Monitor”. Costumo adotar um padrão específico de nomenclatura onde separo os templates e hosts em grupos diferentes e agrupo os templates conforme uma codificação específica, mas isso é assunto para outro post.
Este template não possui nenhum dos elementos normalmente encontrados nos templates padrão Zabbix 1.8. Todos os itens são criados dinamicamente através do processo de low level discovery – LLD. Por isso para ver os itens que o compõem você precisa olhar a parte de Autobusca do template.
Na lista de autobusca podemos observar que o template possui alguns itens, triggers e gráficos ;). Lembrando sempre que os quantitativos apresentados na imagem abaixo são expotenciais, para cada sistema de arquivos que ele localizar ele irá acrescer 12 itens, 1 trigger e dois gráficos.
O intervalo de varredura por modificações está configurado para 24 horas (86400 segundos). É provável que neste momento você esteja pensando: poxa, vou ter que esperar até 24 horas para saber se funciona este template ? Não, podemos fazer a alteração do tempo de varredura no escopo de um host (recomendo o host apontando para o próprio servidor do Zabbix) e ver rapidamente os resultados.
Para facilitar os testes e comprovação sobre o perfeito funcionamento do template crie um host e o associe ao template 104_Disk_Performance, em seguida edite as propriedades do LLD do host (observe… do host, não do template) modificando o intervalo de atualização de 86400 (24 horas) para 60 segundos (por isso a alteração em um host específico… senão o custo operacional pode ser muito alto).
Após a alteração para 60 segundos a lista dos processos de descoberta de baixo nível deverá estar conforme a imagem abaixo.
Vamos aos itens monitorados, temos 12 itens sendo que 10 são do tipo agente ativo e 2 calculados. Qual o motivo deles serem agente ativo ? Simples… os famosos “buracos” dos gráficos do Zabbix são praticamente eliminados quando utilizamos monitoração ativa uma vez que o agente de monitoração consegue continuar fazendo o seu trabalho mesmo que o servidor de monitoração não esteja conseguindo se comunicar com o agente (e vice versa). Em alguns cenários será necessária a alteração destes itens para agente passivo devido à restrições de projeto (por exemplo regras de firewall).
Exemplo de coleta de dados em um servidor com dois sistemas de arquivo instalados:
Além dos dados de performance de disco (principal motivador deste post) temos também informações sobre capacidade do disco. Exemplos de gráficos gerados:
Espero que este artigo auxilie seu ambiente e que as idéias aqui apresentadas auxiliem na organização de sua monitoração pois entendo que sem organização não adianta nada ter uma excelente ferramenta.