Necessário: Uma maneira simples de monitorar remotamente um processo no meu servidor

6

Eu tenho um servidor baseado em nuvem executando um processo Java (um servidor POP / SMTP chamado davmail, detalhes realmente não importam).

Qual é a maneira mais simples de monitorar o status desse processo Java remotamente? Eu preciso saber se e quando isso acontece. Eu poderia deixar uma sessão ssh aberta e seguir o log, mas há algo mais elegante?

Talvez eu precise instalar um servidor da Web e executar algum software de monitoramento no mesmo servidor. Ou talvez haja um programa cliente que eu possa executar na minha máquina local (um Mac) que possa ser alertado por alguma tarefa cron no servidor sempre que o processo Java parar?

    
por Magooda 11.04.2014 / 09:40

5 respostas

3

Bem, você sempre pode ter um cronjob fazendo

echo "100 logout" | nc yourserver.fqdn 143 || \
   {
      echo "The server is down" |\
      mailx -s "Red alert! Red alert! This is not a drill!" [email protected];
   }

Depende do que você chama de simples e de outras funcionalidades que você pode querer.

  • 100 logout nada mais é do que um comando IMAP muito trivial que, se você não tiver efetuado login antes, fará com que o servidor termine a conexão.
  • nc é uma ferramenta que abre conexões TCP e anexa STDIN e STDOUT ao soquete.

A combinação resulta em estabelecer uma conexão com o seu servidor IMAP e dizer "terminamos". Se o seu servidor IMAP estiver em funcionamento, ele reconhece o comando e fecha a conexão TCP, fazendo com que nc saia normalmente.

Se algo der errado, por exemplo, a conexão TCP nunca é estabelecida ou o tempo limite é esgotado porque o servidor não manipula o comando IMAP, seu servidor IMAP obviamente não está disponível. Nesse caso, você deseja uma notificação e, nesse caso, nc sempre terminará anormalmente.

|| significa que se nc terminar de forma anormal, todos os { ... } serão executados. O exemplo de comando fornecido aqui envia um e-mail usando mailx para [email protected] com o assunto "Alerta vermelho! Alerta vermelho! Isso não é uma broca" e o conteúdo "O servidor está inativo".

Note, entretanto, que o mailx não faz parte da instalação de todo Linux e que existem diferentes versões dele, comportando-se diferentemente.

Você pode, é claro, implantar algum software de monitoramento, por exemplo Shinken , que tem uma interface web chique, acompanhe o que eles monitoraram e podem enviar e-mails.

    
por 11.04.2014 / 13:42
2

Isso tudo depende do que você quer dizer com "desce", os detalhes do que você está executando e fazendo do tendem a ser importantes ao monitorar também ...

A forma mais completa de monitoramento para o seu "serviço" é ter um sistema automatizado externo, fazer o que seus clientes fazem e relatar quando qualquer coisa inesperada ocorrer.

A partir da breve descrição do seu serviço de e-mail, meu primeiro teste de ponta a ponta seria:

  • Envie um email #id via SMTP para uma conta monitor local
  • Aguarde o tempo máximo que você deseja tirar.
  • Verifique se há email #id @ monitor no servidor POP.

Essa verificação de um host de monitoramento externo vai captar cerca de 99% dos problemas que podem ocorrer em um sistema de email simples.

Esses monitores de serviços ou transações tendem a ser scripts personalizados escritos em algo como Ruby , Python ou Perl que possuem módulos para implementar facilmente coisas como SMTP ou POP programaticamente. Os scripts, em seguida, geralmente se conectam a uma solução de monitoramento, mas mesmo acionando um simples e-mail ou SMS através de um gateway de um trabalho cron seria suficiente se você quiser algo simples. Se você pagar por uma solução de monitoramento, você geralmente tentará um designer de GUI para o mesmo tipo de monitor.

Claro que no mundo real isso rapidamente se torna mais complicado. Você pode oferecer portas seguras para POP e SMTP que exigem outra verificação. Talvez o IMAP seja adicionado com um pouco de Carddav e Caldav, você pode ter serviços em vários hosts.

O que uma checagem de serviço como a acima não vai te dizer, é onde o problema está, apenas que existe um problema em algum lugar .

Monitoramento de nível inferior

Ao monitorar os componentes individuais do serviço, você basicamente facilita a identificação (ou previsão) de onde está o problema de monitorar antes de fazer qualquer trabalho de perna. Esse tipo de monitoramento de componentes é o que sistemas como Nagios , Zabbix ou grandes, como o Tivoli Monitoring , são bons em.

Esta pode ser uma árvore de coisas em constante expansão, dependendo de quão detalhado você é e de quão complexo é o sistema que suporta seu "serviço"

"Seu serviço de e-mail" depende de

Services:     POP:110 SMTP:25
Application:  devmail
OS:           linux Z
Host:         server Y 
  Components:   diskA diskB cpu1 cpu2  memory          
Ntwork:      ethernetA, Switch B, Router C, Firewall X

Cada componente tem métricas ou um estado sobre o qual você pode relatar.

Externamente

Service: 
  POP service   - Are we accepting connections on 110,995
  SMTP service  - Are we accepting connections on 25,587

Localmente

Application: 
  devmail process(es) (is it running, memory, cpu, handles, io)
  JMX parameters of the java process (memory, threads, performance, garbage collection)
OS: 
  Disk, Memory, Cpu, IO

etc...

E se o host de monitoramento cair? Ou é apenas a rede entre o serviço e o monitor.

Geralmente é bom executar as verificações de serviço a partir de dois (ou mais) hosts externos, que são o mais próximo de onde os clientes estão vindo (sem afetar seu monitoramento). Em seguida, execute as verificações localmente no host ou pelo menos na rede local. Dessa forma, você terá uma ideia melhor da maioria dos problemas com base na rede.

  • Se um cliente externo falhar, provavelmente uma rede externa.
  • Se o cliente local estiver funcionando, mas todos os clientes externos estiverem falhando, provavelmente a rede local.
  • Se todos os clientes estiverem falhando, provavelmente um problema local.

Eu vejo muitas pessoas tendendo a construir suas soluções de monitoramento de maneira errada. Eles vêm com um monte de métricas de sistema de nível inferior e 1000 de monitores e níveis que eles acham apropriados para o alarme, quando nenhum, se isso realmente importa. Quero dizer, eles são bons para análise e gerenciamento de capacidade, você pode fazer alguns gráficos de todos esses valores e eles podem ser extremamente úteis, mas não significam muito quando você perdeu x métrica no nível y que significa que ninguém pode receber e-mails.

    
por 11.04.2014 / 14:17
1

Existem vários aplicativos de monitoramento que podem ser configurados para enviar um alarme de várias maneiras - por meio de traps SNMP, por email, por SMS, se você tiver o hardware ou software / assinatura. Muitos deles também podem reiniciar o processo quando necessário.

Google para monit, nagios ou apenas "software de monitoramento". Além disso, o link pode ser um bom local para pedir recomendações.

    
por 11.04.2014 / 09:53
0

Respondendo aos seus requisitos, sugiro testar o SeaLion . É uma ferramenta de monitoramento de servidor Linux baseada em nuvem. A instalação demora apenas alguns segundos e a interface do usuário é limpa e simples. Além disso, o recurso de alerta é ótimo. Há um recurso de "resumo diário" que envia a você um e-mail programado diariamente com o resumo do desempenho dos servidores. Espero que isso ajude.

    
por 24.04.2015 / 15:44
0

Usar nagios ou monit localmente é difícil de evitar, mas você pode obter uma ótima segunda linha de defesa usando algo como link para monitorar o processo nagios em si. Configurar nagios ou monit para fazer uma verificação de integridade em relação a um endereço do Cronitor e você será alertado se a verificação de integridade não for executada.

    
por 07.08.2016 / 09:28

Tags