O plugin inteligente de Munin continua reportando um erro no passado por causa do código de saída

6

Meu provedor de hospedagem inseriu um disco rígido no meu servidor, o que parece ter tido algum tipo de erro no passado, mas uma verificação inteligente off-line completa mostrou que tudo está (ok) no momento. O servidor tem um RAID1, assim posso viver um pouco com essa situação.

O problema é que (de acordo com a página man) o smartctl define o bit no 6 se houve um erro no passado, então agora, enquanto tudo estiver bem, o código de saída é numérico 64.

O plugin inteligente é configurado por padrão para ter um limite de 0, e embora eu saiba que eu poderia definir o limite de até 64, eu perderia o muito mais importante bit 3 "disco está falhando".

Existe uma maneira de configurar um limite de maneira que o munin faça comparações bit a bit do valor?

    
por akirk 28.12.2012 / 16:11

2 respostas

5

Eventualmente, recorri ao patch do plugin inteligente. Dependendo da sua versão, há algum código como este:

        if exit_status!=None :
            # smartctl exit code is a bitmask, check man page.
            num_exit_status=int(exit_status/256)

substitua-o por este

        if exit_status!=None :
            # smartctl exit code is a bitmask, check man page.
            num_exit_status=int(exit_status/256)
            # filter out bit 6
            num_exit_status &= 191
            if num_exit_status<=2 :
                exit_status=None

        if exit_status!=None :

A parte mais interessante é a linha onde há uma operação bitwise com 191: isto é 0x11011111 em binário, então fazendo uma operação AND com o valor atual, ele irá apenas definir o bit no 6 para 0 enquanto deixa os outros valores intocados.

Portanto, um valor de 64 (como o meu) será relatado como 0, enquanto um valor de 8 permanecerá em 8. Mas também, muito importante, um valor de 72 (bit 6 definido como sempre e bit 3 definido porque o disco está falhando) também relataria 8.

    
por 28.12.2012 / 16:11
2

A única maneira que encontrei para evitar esse problema sem modificar as fontes municipais foi evitar o uso da opção -a com smartctl, por exemplo, use algo assim em /etc/munin/plugin-conf.d/munin-node :

[smart_sda]
env.smartargs -H -i -c -A -l selftest -l selective

(por exemplo, todas as opções normalmente incluídas em -a exceto para -l error ).

    
por 22.08.2014 / 16:21

Tags