Monitorando um pool de raides do ZFS no Ubuntu para integridade e desempenho

2

Eu configurei o ZFS no Ubuntu (via fusível) para um storage array em casa e ele funcionou muito bem por quase um ano, apesar de seu status 'beta'. Eu faço o login e verifico o array de vez em quando usando:

zpool status

O que resulta em:

NAME        STATE     READ WRITE CKSUM
media       ONLINE       0     0     0
  raidz1    ONLINE       0     0     0
    sda     ONLINE       0     0     0
    sdb     ONLINE       0     0     0
    sdc     ONLINE       0     0     0
errors: No known data errors 

Está tudo bem, mas eu gostaria de automatizar uma maneira de verificar de vez em quando para ter certeza de que meu pool está livre de erros.

Eu tenho cactos e o zabbix à minha disposição. Eu suponho que eu também poderia escrever um programa que agrida essa saída e, se ela não encontrar a frase "Sem erros de dados conhecidos", envie-me um e-mail.

No entanto, existe algum pacote já feito que faça isso, ou especificações sobre como obter algumas métricas de desempenho dessa matriz?

    
por Dave Drager 14.10.2009 / 16:08

3 respostas

2

assumindo as ferramentas zabbix e gnu ... adicione ao arquivo de configuração do daemon do agente zabbix o seguinte:

UserParameter = zpool.status, zpool status | grep -q "Nenhum erro de dados conhecido" & & echo 1 || eco 0

agora, no zabbix, adicione um item com a chave "zpool.status", crie um gatilho contra ele (usando uma função como ".last (0) = 0") e pronto - o gatilho será acionado sempre que a cadeia está faltando na saída de status do zpool.

isso também assume que 'zpool' estará no caminho do usuário do zabbix, e que este usuário terá permissão para executar o zpool. se não, especifique o caminho completo e use o sudo. outro catch pode ser um shell padrão que não suporta a sintaxe usada, caso em que você pode reescrever o parâmetro do usuário ou forçá-lo a usar o bash.

    
por 27.10.2010 / 10:05
5

zpool status -x é a maneira preferida de verificar o status dos pools por meio de um script. Sua saída é "todos os pools são saudáveis", a menos que haja problemas que o tornem um pouco mais fácil de usar como teste. Caso contrário, à medida que você obtiver mais de um pool, o script de verificação e os greps ficarão mais complexos. Assim, você pode configurar um cron job para executar um script e certificar-se de que o status é "todos os pools estão íntegros" e enviar um e-mail de alerta da saída de outra forma.

Você pode até configurar um plugin nagios para fazer isso por você. Estou assumindo que o zabbix deve ser estendido da mesma maneira.

Verifique também se você está executando o zool scrub regularmente ... Eu configuraria isso em um cron também. Isso detectará e corrigirá todos os problemas encontrados no pool em áreas do sistema de arquivos que não são acessadas com freqüência e podem capturar e corrigir problemas antes de resultar em corrupção de dados.

Para obter métricas de desempenho, você pode usar zpool iostat [segundos entre atualizações] Não sei como amarrar isso em cactos, mas tenho certeza de que é possível.

    
por 14.10.2009 / 18:04
0

se possível, faça também um iostat -xCzn e grep para quaisquer erros de HW ou de transporte nos discos ou no controlador.

    
por 06.10.2010 / 16:49