monitorando nfs com monit

5

Gostaria de monitorar as montagens do NFS e o processo do servidor NFS usando o Monit.

No servidor, eu preciso de um arquivo PID, mas não consigo encontrar uma maneira de conseguir isso criado com arquivos de configuração existentes. Existe uma maneira de fazer isso, ou alguém monitorou o servidor de forma diferente (verificando se a porta 53 está ativa, etc).

Nos clientes, eu estava pensando em fazer com que o Monit simplesmente procurasse por um arquivo específico em uma montagem NFS e, se estivesse acessível, tudo estaria bem. O problema é que, se o servidor NFS ficar inativo, as solicitações de arquivos geralmente são suspensas (talvez até indefinidamente, não tenho certeza). Como alguém poderia contornar essa questão com o monit?

Qualquer exemplo de configuração seria muito apreciado!

    
por Josh Nankin 22.08.2011 / 18:19

4 respostas

2

Quanto ao "pendente" do processo Monit durante falhas do servidor NFS, isso pode ser contornado por dois métodos.

  1. Você altera as opções de montagem do NFS de hard para soft , o que faz com que a camada NFS emita um erro de E / S para o aplicativo de acesso após retrans tentar novamente. Como isso pode introduzir outros problemas com relação à integridade dos dados (seus aplicativos writing precisam ser capazes de lidar com erros de E / S ou pelo menos sair corretamente, sem corromper o arquivo escrito), você também pode tentar para:
  2. assincronize sua verificação (desemaranhe-a) da Monit. Você pode definir um cronjob regularmente verificando seu arquivo montado no NFS e escrevendo outro "arquivo de estado NFS", por exemplo. para / tmp. Dessa forma, apenas o cronjob será interrompido (e não o seu cliente Monit) se o servidor NFS desaparecer. Sua verificação Monit agora apenas verifica este segundo "arquivo de status do NFS" E se é muito mais antigo que a freqüência do cronjob (o que indicaria tal interrupção do NFS).

Espero que isso ajude!

    
por 13.03.2012 / 10:06
2

A abordagem geral seria (supondo que nenhuma das regras internas do Monit sejam aplicáveis)

  1. Descubra como você faria as verificações manualmente
  2. Escrever scripts shell executando essas verificações, retornando 0 para 'sucesso' e 1 para 'falha'
  3. Deixe a Monit testar esses scripts (o exemplo é da documentação oficial ):

    check program myscript with path "/usr/local/bin/myscript.sh"
       if status != 0 then alert
    

Para o problema específico, isso pode significar

  • Servidor: Provavelmente depende do seu sistema operacional, distribuição Linux, NFS 3 ou 4, etc, mas deve ser fácil de descobrir. Por exemplo. no Ubuntu 12.04, eu testaria se o servidor NFS está rodando via

    $ service portmap status
    $ service nfs-kernel-server status
    

    Crie um script de shell retornando 0 se ambos os comandos retornarem 'running'.

  • Cliente: Para verificar se um determinado compartilhamento NFS está montado atualmente, uso principalmente o df -h. Então, o script de shell correspondente seria parecido com

    #! /bin/bash
    df -h | grep -q thesharename
    
por 06.06.2012 / 11:15
1

Você já verificou os scripts de inicialização do nfs? Eu suspeito que eles estão criando um arquivo pid e colocando-o em algum lugar para reiniciar ou parar operações futuras. Se não, deve ser bem simples modificá-los para isso.

No que diz respeito à verificação da montagem, consulte a seção 4.3.1 no link . Se você montá-lo com a opção 'soft', você terá um comportamento que permite monitorar, mas isso não deve ser usado para a montagem real. Talvez você queira uma segunda montagem apenas para monitoramento?

    
por 09.10.2011 / 01:38
0

Eu queria responder a claasz , mas não tenho ponto de reputação suficiente. A idéia de usar um script externo é muito boa, porque fornece flexibilidade e sugerir usar o portmap ou o rpcinfo para verificar a disponibilidade do servidor nfs é bastante inteligente.

Eu encontrei um script no Github de Thibaut Madelaine que acho que deve ser interessante muitos que enfrentam o mesmo problema. Ele usa rpcinfo como este rpcinfo -u 123.456.789.12 nfs 3 onde 123.456.789.12 é o endereço IP do seu servidor nfs.

Se tudo estiver correto, a resposta será instantaneamente algo como program 100003 version 3 ready and waiting e, se houver falha, 123.456.789.12: RPC: Program not registered . Claro que a resposta pode variar dependendo do sabor do seu sistema, eu acho.

    
por 12.01.2018 / 00:48

Tags